<?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>172927</bug_id>
          
          <creation_ts>2017-06-05 10:53:01 -0700</creation_ts>
          <short_desc>[GCrypt] Implement CryptoKeyEC SPKI imports</short_desc>
          <delta_ts>2017-07-03 01:53:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133122</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315720</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-05 10:53:01 -0700</bug_when>
    <thetext>[GCrypt] Implement CryptoKeyEC SPKI imports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315725</commentid>
    <comment_count>1</comment_count>
      <attachid>312017</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-05 11:09:51 -0700</bug_when>
    <thetext>Created attachment 312017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315726</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-05 11:11:15 -0700</bug_when>
    <thetext>Attachment 312017 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:261:  Use nullptr instead of NULL (even in *comments*).  [readability/null] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316627</commentid>
    <comment_count>3</comment_count>
      <attachid>312017</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-07 14:19:28 -0700</bug_when>
    <thetext>Comment on attachment 312017
Patch

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

&gt; Source/WebCore/PAL/pal/crypto/gcrypt/ASN1.h:1
&gt; +/*

I wonder if we could replace a custom ANS.1 decoder with a well-maintained library. I have implemented one because I was not aware of any available Apple ASN.1 decoder/encoder at that time. However, I discovered some after. Therefore, it is one of my future effort to remove Apple port&apos;s customized ASN.1 decoder/encoder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316741</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-07 18:06:52 -0700</bug_when>
    <thetext>We should probably use Libtasn1 (LGPLv2+) at least for GTK/WPE. I believe it would be suitable for Apple as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316742</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-07 18:07:34 -0700</bug_when>
    <thetext>On the other hand, the current implementation looks like a fairly small amount of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316745</commentid>
    <comment_count>6</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-07 18:34:28 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; On the other hand, the current implementation looks like a fairly small
&gt; amount of code.

The thing is I am not sure if we are able to fix any security bugs that with the ASN.1 decoder/encoder. Actually, there aren&apos;t even any tests for the customized ASN.1 decoder in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316746</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-07 18:38:09 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; We should probably use Libtasn1 (LGPLv2+) at least for GTK/WPE. I believe it
&gt; would be suitable for Apple as well.

That sounds good. Actually I haven&apos;t decided which library to use at this moment. It will be good if GTK+ and Apple can share the same decoder/encoder. It shouldn&apos;t have any platform specific issues. Widely speaking, it might also open the opportunity for other people to use a ASN.1 decoder/encoder in WebKit.

BTW, I suspect WebRTC could have one already since it added BoringSSL to the project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316749</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-07 19:12:17 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #7)
&gt; BTW, I suspect WebRTC could have one already since it added BoringSSL to the
&gt; project.

Wow... I had no clue that libwebrtc bundled boringssl. That&apos;s not going to be acceptable for GTK/WPE. But bundling libwebrtc isn&apos;t either, so I guess our folks working on that will figure something out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316880</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-08 06:01:12 -0700</bug_when>
    <thetext>Let&apos;s try with libtasn1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318131</commentid>
    <comment_count>10</comment_count>
      <attachid>312640</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-12 01:47:17 -0700</bug_when>
    <thetext>Created attachment 312640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318132</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-12 01:49:03 -0700</bug_when>
    <thetext>Attachment 312640 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:100:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52:  asn1_node is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318613</commentid>
    <comment_count>12</comment_count>
      <attachid>312760</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-13 02:57:25 -0700</bug_when>
    <thetext>Created attachment 312760
Patch

Doesn&apos;t use RELEASE_ASSERT_NOT_REACHED() in supportedAlgorithmIdentifier().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318614</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-13 03:00:01 -0700</bug_when>
    <thetext>Attachment 312760 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:100:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52:  asn1_node is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318924</commentid>
    <comment_count>14</comment_count>
      <attachid>312760</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-13 17:34:11 -0700</bug_when>
    <thetext>Comment on attachment 312760
Patch

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

Thanks for implementing it with Libtasn1. The library seems well maintained. Please address the following comments.

Michael: Please do a sanity check if the way Zan adds Libtasn1 follows GTK+&apos;s rule.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:34
&gt; +namespace TASN1 {

Why not ASN1?
Do we really need a separate namespace?

&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:1
&gt; +WebCrypto { }

It would be better if we could include links to RFCs that define the following structures.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:16
&gt; +  attributes           [0]  IMPLICIT Attributes OPTIONAL

Doesn&apos;t feel this attribute is useful for us. I am not certain if we should copy the structure bit by bit from the spec.

Maybe we should only focus on useful parts.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:25
&gt; +Attributes ::= SET OF Attribute

Ditto.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:27
&gt; +Attribute ::= SEQUENCE {

Ditto.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:32
&gt; +AttributeSetValue ::= SET OF ANY

Ditto.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:46
&gt; +ECParameters ::= CHOICE {

This part confused me before as OpenSSL and its forks seem using something different from the spec.
I can&apos;t tell the source hence I just copy and paste their output to be compatible with theirs.
I don&apos;t know if you encounter anything like that.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:200
&gt; +    static const std::array&lt;uint8_t, 13&gt; s_id_ecDH { { &quot;1.3.132.1.12&quot; } };

Have you found any concrete examples that actually use id-ecDH? I am curious about it as I haven&apos;t found any. Therefore, I didn&apos;t implement it for Apple ports.
Actually, I think the SPKI/PKCS8 parts of the spec are somewhat too detailed. To me, it seems to be a direct copy&amp;paste from other RFC but doesn&apos;t reflect the actual word usage.
For example, OpenSSL has a single function for generating EC key pair. Therefore, it doesn&apos;t output id_ecDH.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:241
&gt; +RefPtr&lt;CryptoKeyEC&gt; CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)

One thing I am worried about is the efficiency of the library. Ideally, there should be only one pass of the data and no extra spaces are needed. Have you confirmed how do they do?

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:288
&gt; +        if (uncompressedPointSizeForCurve(curve) != subjectPublicKey-&gt;size() || subjectPublicKey-&gt;at(0) != 0x04)

I am curious about if the second check will be done inside gcry_sexp_build(&amp;platformKey, nullptr, &quot;(public-key(ecc(curve %s)(q %b)))&quot;, curveName(curve), subjectPublicKey-&gt;size(), subjectPublicKey-&gt;data());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318955</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-13 18:36:32 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #14)
&gt; Michael: Please do a sanity check if the way Zan adds Libtasn1 follows
&gt; GTK+&apos;s rule.

It&apos;s almost right, I&apos;d just ask for a better error message if libtasn1 is unavailable. Something like:

find_package(Libtasn1)
if (NOT LIBTASN1_FOUND)
  message(FATAL_ERROR &quot;libtasn1
endif ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318956</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-13 18:37:10 -0700</bug_when>
    <thetext>Whoops

find_package(Libtasn1)
if (NOT LIBTASN1_FOUND)
  message(FATAL_ERROR &quot;libtasn1 is required to enable Web Crypto API support&quot;)
endif ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319052</commentid>
    <comment_count>17</comment_count>
      <attachid>312760</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-14 01:41:39 -0700</bug_when>
    <thetext>Comment on attachment 312760
Patch

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

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:34
&gt;&gt; +namespace TASN1 {
&gt; 
&gt; Why not ASN1?
&gt; Do we really need a separate namespace?

We don&apos;t, I just followed the PAL::GCrypt style. TASN1 was used due to library being called libtasn1. I don&apos;t know what&apos;s the story with the letter T though.

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:1
&gt;&gt; +WebCrypto { }
&gt; 
&gt; It would be better if we could include links to RFCs that define the following structures.

OK.

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:16
&gt;&gt; +  attributes           [0]  IMPLICIT Attributes OPTIONAL
&gt; 
&gt; Doesn&apos;t feel this attribute is useful for us. I am not certain if we should copy the structure bit by bit from the spec.
&gt; 
&gt; Maybe we should only focus on useful parts.

It definitely isn&apos;t useful for us, but the spec doesn&apos;t demand that it&apos;s ignored during parsing.

OTOH if the attribute is removed from the ASN.1 definition, no W3C test case is affected.

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:46
&gt;&gt; +ECParameters ::= CHOICE {
&gt; 
&gt; This part confused me before as OpenSSL and its forks seem using something different from the spec.
&gt; I can&apos;t tell the source hence I just copy and paste their output to be compatible with theirs.
&gt; I don&apos;t know if you encounter anything like that.

Similarly to PrivateKeyInfo, I preferred using the same ASN.1 declarations as specified in RFCs. But obviously the only viable choice here is &apos;namedCurve&apos;, so the &apos;parameters&apos; attribute in AlgortihmIdentifier is required to encode an object identifier representing an EC curve (in case the &apos;algorithm&apos; attribute represents an EC algorithm).

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:200
&gt;&gt; +    static const std::array&lt;uint8_t, 13&gt; s_id_ecDH { { &quot;1.3.132.1.12&quot; } };
&gt; 
&gt; Have you found any concrete examples that actually use id-ecDH? I am curious about it as I haven&apos;t found any. Therefore, I didn&apos;t implement it for Apple ports.
&gt; Actually, I think the SPKI/PKCS8 parts of the spec are somewhat too detailed. To me, it seems to be a direct copy&amp;paste from other RFC but doesn&apos;t reflect the actual word usage.
&gt; For example, OpenSSL has a single function for generating EC key pair. Therefore, it doesn&apos;t output id_ecDH.

This was added to follow the spec. Checking the W3C tests, no test case uses this identifier.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:241
&gt;&gt; +RefPtr&lt;CryptoKeyEC&gt; CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
&gt; 
&gt; One thing I am worried about is the efficiency of the library. Ideally, there should be only one pass of the data and no extra spaces are needed. Have you confirmed how do they do?

Only one pass of the encoded data is done, with the decoded data stored in specific asn1_node objects, either in the decoded form (i.e. object identifiers are decoded into strings) or directly copied (bit and octet strings). The elementData() helper then retrieves that data, again copying it from specific asn1_node objects.

libtasn1 provides API that exposes the data contained in ans1_node through asn1_read_node_value(). I preferred copying the data into Vector&lt;uint8_t&gt; objects to get up and running quickly and safely, but we can build helpers around asn1_read_node_value() as well.
https://www.gnu.org/software/libtasn1/manual/libtasn1.html#index-asn1_005fread_005fnode_005fvalue

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:288
&gt;&gt; +        if (uncompressedPointSizeForCurve(curve) != subjectPublicKey-&gt;size() || subjectPublicKey-&gt;at(0) != 0x04)
&gt; 
&gt; I am curious about if the second check will be done inside gcry_sexp_build(&amp;platformKey, nullptr, &quot;(public-key(ecc(curve %s)(q %b)))&quot;, curveName(curve), subjectPublicKey-&gt;size(), subjectPublicKey-&gt;data());

No, that just copies the EC point data into the s-expression object. So here we&apos;d require further checks that the EC point is valid for this curve, using gcry_mpi_ec_curve_point().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319304</commentid>
    <comment_count>18</comment_count>
      <attachid>312760</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-14 13:09:49 -0700</bug_when>
    <thetext>Comment on attachment 312760
Patch

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

&gt;&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:34
&gt;&gt;&gt; +namespace TASN1 {
&gt;&gt; 
&gt;&gt; Why not ASN1?
&gt;&gt; Do we really need a separate namespace?
&gt; 
&gt; We don&apos;t, I just followed the PAL::GCrypt style. TASN1 was used due to library being called libtasn1. I don&apos;t know what&apos;s the story with the letter T though.

OK.

&gt;&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:16
&gt;&gt;&gt; +  attributes           [0]  IMPLICIT Attributes OPTIONAL
&gt;&gt; 
&gt;&gt; Doesn&apos;t feel this attribute is useful for us. I am not certain if we should copy the structure bit by bit from the spec.
&gt;&gt; 
&gt;&gt; Maybe we should only focus on useful parts.
&gt; 
&gt; It definitely isn&apos;t useful for us, but the spec doesn&apos;t demand that it&apos;s ignored during parsing.
&gt; 
&gt; OTOH if the attribute is removed from the ASN.1 definition, no W3C test case is affected.

OK.

&gt;&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/WebCrypto.asn:46
&gt;&gt;&gt; +ECParameters ::= CHOICE {
&gt;&gt; 
&gt;&gt; This part confused me before as OpenSSL and its forks seem using something different from the spec.
&gt;&gt; I can&apos;t tell the source hence I just copy and paste their output to be compatible with theirs.
&gt;&gt; I don&apos;t know if you encounter anything like that.
&gt; 
&gt; Similarly to PrivateKeyInfo, I preferred using the same ASN.1 declarations as specified in RFCs. But obviously the only viable choice here is &apos;namedCurve&apos;, so the &apos;parameters&apos; attribute in AlgortihmIdentifier is required to encode an object identifier representing an EC curve (in case the &apos;algorithm&apos; attribute represents an EC algorithm).

OK. This comment doesn&apos;t apply to SPKI. You should pay attention to it when you implement PKCS8.

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:200
&gt;&gt;&gt; +    static const std::array&lt;uint8_t, 13&gt; s_id_ecDH { { &quot;1.3.132.1.12&quot; } };
&gt;&gt; 
&gt;&gt; Have you found any concrete examples that actually use id-ecDH? I am curious about it as I haven&apos;t found any. Therefore, I didn&apos;t implement it for Apple ports.
&gt;&gt; Actually, I think the SPKI/PKCS8 parts of the spec are somewhat too detailed. To me, it seems to be a direct copy&amp;paste from other RFC but doesn&apos;t reflect the actual word usage.
&gt;&gt; For example, OpenSSL has a single function for generating EC key pair. Therefore, it doesn&apos;t output id_ecDH.
&gt; 
&gt; This was added to follow the spec. Checking the W3C tests, no test case uses this identifier.

You might want to add a specific test to check this and enable it only for GTK+ for now.

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:241
&gt;&gt;&gt; +RefPtr&lt;CryptoKeyEC&gt; CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
&gt;&gt; 
&gt;&gt; One thing I am worried about is the efficiency of the library. Ideally, there should be only one pass of the data and no extra spaces are needed. Have you confirmed how do they do?
&gt; 
&gt; Only one pass of the encoded data is done, with the decoded data stored in specific asn1_node objects, either in the decoded form (i.e. object identifiers are decoded into strings) or directly copied (bit and octet strings). The elementData() helper then retrieves that data, again copying it from specific asn1_node objects.
&gt; 
&gt; libtasn1 provides API that exposes the data contained in ans1_node through asn1_read_node_value(). I preferred copying the data into Vector&lt;uint8_t&gt; objects to get up and running quickly and safely, but we can build helpers around asn1_read_node_value() as well.
&gt; https://www.gnu.org/software/libtasn1/manual/libtasn1.html#index-asn1_005fread_005fnode_005fvalue

To me, it seems too many copies. Since the gcrypt API operates on pointers as well, I don&apos;t think it is worth converting a pointer to a vector then back to a pointer.
Also, the API itself does a copy already. This should be enough for safety I presume.

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:288
&gt;&gt;&gt; +        if (uncompressedPointSizeForCurve(curve) != subjectPublicKey-&gt;size() || subjectPublicKey-&gt;at(0) != 0x04)
&gt;&gt; 
&gt;&gt; I am curious about if the second check will be done inside gcry_sexp_build(&amp;platformKey, nullptr, &quot;(public-key(ecc(curve %s)(q %b)))&quot;, curveName(curve), subjectPublicKey-&gt;size(), subjectPublicKey-&gt;data());
&gt; 
&gt; No, that just copies the EC point data into the s-expression object. So here we&apos;d require further checks that the EC point is valid for this curve, using gcry_mpi_ec_curve_point().

OK, but I don&apos;t see the further check in the codes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319888</commentid>
    <comment_count>19</comment_count>
      <attachid>312760</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-16 00:48:51 -0700</bug_when>
    <thetext>Comment on attachment 312760
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:241
&gt;&gt;&gt;&gt; +RefPtr&lt;CryptoKeyEC&gt; CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
&gt;&gt;&gt; 
&gt;&gt;&gt; One thing I am worried about is the efficiency of the library. Ideally, there should be only one pass of the data and no extra spaces are needed. Have you confirmed how do they do?
&gt;&gt; 
&gt;&gt; Only one pass of the encoded data is done, with the decoded data stored in specific asn1_node objects, either in the decoded form (i.e. object identifiers are decoded into strings) or directly copied (bit and octet strings). The elementData() helper then retrieves that data, again copying it from specific asn1_node objects.
&gt;&gt; 
&gt;&gt; libtasn1 provides API that exposes the data contained in ans1_node through asn1_read_node_value(). I preferred copying the data into Vector&lt;uint8_t&gt; objects to get up and running quickly and safely, but we can build helpers around asn1_read_node_value() as well.
&gt;&gt; https://www.gnu.org/software/libtasn1/manual/libtasn1.html#index-asn1_005fread_005fnode_005fvalue
&gt; 
&gt; To me, it seems too many copies. Since the gcrypt API operates on pointers as well, I don&apos;t think it is worth converting a pointer to a vector then back to a pointer.
&gt; Also, the API itself does a copy already. This should be enough for safety I presume.

I tried using asn1_read_node_value() to directly access the value data, but the problem is that libtasn1 even after decoding stores data for some node types in DER format. So we&apos;d have to manually validate that DER data before using it. We could do that just like asn1_read_value() does it, but looking at that function it&apos;s not that straightforward:
http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;h=b09f82647f7b461e66df9801eaeb99bf826917a3;hb=HEAD#l833

I don&apos;t think it&apos;s worth implementing this complexity, at least not right from the start. I&apos;d prefer an initial implementation that relies on copying the properly-decoded data. Furthermore, I don&apos;t think copying and the allocation of the underlying memory would introduce great overhead -- these aren&apos;t large memory areas.

&gt;&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:288
&gt;&gt;&gt;&gt; +        if (uncompressedPointSizeForCurve(curve) != subjectPublicKey-&gt;size() || subjectPublicKey-&gt;at(0) != 0x04)
&gt;&gt;&gt; 
&gt;&gt;&gt; I am curious about if the second check will be done inside gcry_sexp_build(&amp;platformKey, nullptr, &quot;(public-key(ecc(curve %s)(q %b)))&quot;, curveName(curve), subjectPublicKey-&gt;size(), subjectPublicKey-&gt;data());
&gt;&gt; 
&gt;&gt; No, that just copies the EC point data into the s-expression object. So here we&apos;d require further checks that the EC point is valid for this curve, using gcry_mpi_ec_curve_point().
&gt; 
&gt; OK, but I don&apos;t see the further check in the codes.

Will add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319899</commentid>
    <comment_count>20</comment_count>
      <attachid>313064</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-16 01:27:38 -0700</bug_when>
    <thetext>Created attachment 313064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319900</commentid>
    <comment_count>21</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-16 01:28:50 -0700</bug_when>
    <thetext>Attachment 313064 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:100:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52:  asn1_node is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320068</commentid>
    <comment_count>22</comment_count>
      <attachid>312760</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-16 12:15:50 -0700</bug_when>
    <thetext>Comment on attachment 312760
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:241
&gt;&gt;&gt;&gt;&gt; +RefPtr&lt;CryptoKeyEC&gt; CryptoKeyEC::platformImportSpki(CryptoAlgorithmIdentifier identifier, NamedCurve curve, Vector&lt;uint8_t&gt;&amp;&amp; keyData, bool extractable, CryptoKeyUsageBitmap usages)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; One thing I am worried about is the efficiency of the library. Ideally, there should be only one pass of the data and no extra spaces are needed. Have you confirmed how do they do?
&gt;&gt;&gt; 
&gt;&gt;&gt; Only one pass of the encoded data is done, with the decoded data stored in specific asn1_node objects, either in the decoded form (i.e. object identifiers are decoded into strings) or directly copied (bit and octet strings). The elementData() helper then retrieves that data, again copying it from specific asn1_node objects.
&gt;&gt;&gt; 
&gt;&gt;&gt; libtasn1 provides API that exposes the data contained in ans1_node through asn1_read_node_value(). I preferred copying the data into Vector&lt;uint8_t&gt; objects to get up and running quickly and safely, but we can build helpers around asn1_read_node_value() as well.
&gt;&gt;&gt; https://www.gnu.org/software/libtasn1/manual/libtasn1.html#index-asn1_005fread_005fnode_005fvalue
&gt;&gt; 
&gt;&gt; To me, it seems too many copies. Since the gcrypt API operates on pointers as well, I don&apos;t think it is worth converting a pointer to a vector then back to a pointer.
&gt;&gt; Also, the API itself does a copy already. This should be enough for safety I presume.
&gt; 
&gt; I tried using asn1_read_node_value() to directly access the value data, but the problem is that libtasn1 even after decoding stores data for some node types in DER format. So we&apos;d have to manually validate that DER data before using it. We could do that just like asn1_read_value() does it, but looking at that function it&apos;s not that straightforward:
&gt; http://git.savannah.gnu.org/gitweb/?p=libtasn1.git;a=blob;f=lib/element.c;h=b09f82647f7b461e66df9801eaeb99bf826917a3;hb=HEAD#l833
&gt; 
&gt; I don&apos;t think it&apos;s worth implementing this complexity, at least not right from the start. I&apos;d prefer an initial implementation that relies on copying the properly-decoded data. Furthermore, I don&apos;t think copying and the allocation of the underlying memory would introduce great overhead -- these aren&apos;t large memory areas.

OK. Sure those aren&apos;t large memory areas, but I am just trying to see if we could optimize our codes as fast as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320071</commentid>
    <comment_count>23</comment_count>
      <attachid>313064</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-16 12:21:13 -0700</bug_when>
    <thetext>Comment on attachment 313064
Patch

GTK+ and WPE are not happy. BTW, you should add a test case to test id_ecDH. Enable it only for GTK+ now.

Also, I want to confirm if GCrypt doesn&apos;t accept any DER encoded binaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320524</commentid>
    <comment_count>24</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-18 12:29:08 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #23)
&gt; Comment on attachment 313064 [details]
&gt; Patch
&gt; 
&gt; GTK+ and WPE are not happy. BTW, you should add a test case to test id_ecDH.
&gt; Enable it only for GTK+ now.
&gt; 

I&apos;ll add it in a separate bug that blocks this one.

&gt; Also, I want to confirm if GCrypt doesn&apos;t accept any DER encoded binaries.

It does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320536</commentid>
    <comment_count>25</comment_count>
      <attachid>313240</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-18 13:01:11 -0700</bug_when>
    <thetext>Created attachment 313240
Patch

Not yet requesting for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320537</commentid>
    <comment_count>26</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-18 13:16:40 -0700</bug_when>
    <thetext>Attachment 313240 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:100:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52:  asn1_node is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320648</commentid>
    <comment_count>27</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-19 04:48:54 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #24)
&gt; (In reply to Jiewen Tan from comment #23)
&gt; &gt; Comment on attachment 313064 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; GTK+ and WPE are not happy. BTW, you should add a test case to test id_ecDH.
&gt; &gt; Enable it only for GTK+ now.
&gt; &gt; 
&gt; 
&gt; I&apos;ll add it in a separate bug that blocks this one.
&gt; 

Patch uploaded in bug #173543.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320689</commentid>
    <comment_count>28</comment_count>
      <attachid>313292</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-19 07:18:57 -0700</bug_when>
    <thetext>Created attachment 313292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320690</commentid>
    <comment_count>29</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 07:20:10 -0700</bug_when>
    <thetext>Attachment 313292 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.cpp:100:  More than one command on the same line  [whitespace/newline] [4]
ERROR: LayoutTests/platform/gtk/TestExpectations:843:  Path does not exist.  [test/expectations] [5]
ERROR: Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52:  asn1_node is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 3 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320935</commentid>
    <comment_count>30</comment_count>
      <attachid>313292</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-19 19:22:47 -0700</bug_when>
    <thetext>Comment on attachment 313292
Patch

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

Looks good to me. Could you please elaborate a little bit more on the mechanism you use in the following to me? Thanks.

&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52
&gt; +    operator asn1_node() const { return m_structure; }

Sorry, I don&apos;t quite get what this is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321007</commentid>
    <comment_count>31</comment_count>
      <attachid>313292</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-19 22:50:50 -0700</bug_when>
    <thetext>Comment on attachment 313292
Patch

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

&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52
&gt;&gt; +    operator asn1_node() const { return m_structure; }
&gt; 
&gt; Sorry, I don&apos;t quite get what this is.

It&apos;s an implicit conversion operator. We can use this to silently pass the m_structure object held in PAL::TASN1::Structure to libtasn1 API that expects an asn1_node argument.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:254
&gt; +        auto algorithm = PAL::TASN1::elementData(spki, &quot;algorithm.algorithm&quot;);

Here, for example, elementData() expects asn1_node as the first parameter, and because of that operator the asn1_node object can be passed here implicitly just by listing the PAL::TASN1::Structure object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321173</commentid>
    <comment_count>32</comment_count>
      <attachid>313292</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-20 11:30:26 -0700</bug_when>
    <thetext>Comment on attachment 313292
Patch

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

Thanks for the illustration. r=me if Michael doesn&apos;t have any issues with the build part.

&gt;&gt;&gt; Source/WebCore/PAL/pal/crypto/tasn1/Utilities.h:52
&gt;&gt;&gt; +    operator asn1_node() const { return m_structure; }
&gt;&gt; 
&gt;&gt; Sorry, I don&apos;t quite get what this is.
&gt; 
&gt; It&apos;s an implicit conversion operator. We can use this to silently pass the m_structure object held in PAL::TASN1::Structure to libtasn1 API that expects an asn1_node argument.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321187</commentid>
    <comment_count>33</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 12:11:47 -0700</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #32)
&gt; Comment on attachment 313292 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313292&amp;action=review
&gt; 
&gt; Thanks for the illustration. r=me if Michael doesn&apos;t have any issues with
&gt; the build part.
&gt; 

Michael&apos;s on holidays this week, so I can get someone else to look at the build integration tomorrow. His only feedback regarding this was in comment #16, and that&apos;s been addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321419</commentid>
    <comment_count>34</comment_count>
      <attachid>313292</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-20 23:37:15 -0700</bug_when>
    <thetext>Comment on attachment 313292
Patch

CMake changes look good to me, and the rest was already reviewed by Jiewen and Michael, so r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321420</commentid>
    <comment_count>35</comment_count>
      <attachid>313496</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 23:48:38 -0700</bug_when>
    <thetext>Created attachment 313496
Patch for landing

Listing all three reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321421</commentid>
    <comment_count>36</comment_count>
      <attachid>313496</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 23:52:32 -0700</bug_when>
    <thetext>Comment on attachment 313496
Patch for landing

Clearing flags on attachment: 313496

Committed r218626: &lt;http://trac.webkit.org/changeset/218626&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321422</commentid>
    <comment_count>37</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 23:52:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325065</commentid>
    <comment_count>38</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-07-03 01:53:08 -0700</bug_when>
    <thetext>*** Bug 169272 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312017</attachid>
            <date>2017-06-05 11:09:51 -0700</date>
            <delta_ts>2017-06-12 01:47:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172927-20170605200949.patch</filename>
            <type>text/plain</type>
            <size>17307</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNkZGQwMjEzODRkMjJk
NzdlMDc3MjRhZTBjOGE3Njk5MjM2OTRjMC4uODBlOWY5MDQzOGIzOTQ3MDcwMzk0OGQxY2FiMDk2
N2E5NTBlMTZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA2LTA1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgRUMga2V5IGltcG9ydHMgdGhyb3VnaCB0
aGUgU1BLSSBmb3JtYXQuIFVzZSB0aGUgQVNOLjEKKyAgICAgICAgcGFyc2VyIHRvIHBhcnNlIHRo
ZSBTdWJqZWN0UHVibGljS2V5SW5mbyBzdHJ1Y3R1cmUsIHRlc3RpbmcgdGhlCisgICAgICAgIGNv
bnRhaW5lZCBFQyBhbGdvcml0aG0gYW5kIGN1cnZlIGluZm9ybWF0aW9uIGFsb25nIHRoZSB3YXku
IElmCisgICAgICAgIHRoZSBkYXRhIGlzIGNvcnJlY3RseSBmb3JtZWQsIHdlIGVuZCB1cCB3aXRo
IGFuIHVuY29tcHJlc3NlZAorICAgICAgICBFQyBwb2ludCB0aGF0IHdlIGVtYmVkIGludG8gYSBw
dWJsaWMta2V5IHMtZXhwcmVzc2lvbiwgYWxzbworICAgICAgICBzcGVjaWZ5aW5nIHRoZSBFQyBj
dXJ2ZSBvbiB3aGljaCB0aGUgcG9pbnQgaXMgbG9jYXRlZCwgYW5kIGhhbmQKKyAgICAgICAgaXQg
b3ZlciB0byBhIG5ld2x5LWNyZWF0ZWQgQ3J5cHRvS2V5RUMgb2JqZWN0LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAtLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXBw
b3J0ZWRBbGdvcml0aG1Gb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnZlRm9y
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRTcGtpKToKKwogMjAxNy0wNi0wNSAgTWlndWVsIEdvbWV6ICA8bWFnb21lekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdW1dQRV0gRG8gbm90IGZvcmNlIHZpZGVvIHNhbXBsZSdzIGJ1ZmZl
ciByZWxlYXNlIHdoZW4gdGhlIHBsYXRmb3JtTGF5ZXJQcm94eSBpcyBpbmFjdGl2ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKaW5kZXggZTg5MmFiMzY1NDMwOGQxMTljYzQ5YmRkMDhkMzU5YWY2NzU0NmRhYy4u
YjA2NTYzNDdkOTIyZGI1MjJlMTM3MTA1NzI3YzU1YzRkZGRhMTQzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMDYtMDUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBT
UEtJIGltcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjkyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhIHNpbXBsZSBBU04uMSBwYXJzZXIgdGhhdCBpcyBhYmxlIHRvIHBhcnNlIHRocm91
Z2ggdGhlCisgICAgICAgIGJhc2ljIHR5cGUtbGVuZ3RoLXZhbHVlIG5vZGVzIHRoYXQgb2NjdXIg
aW4gU1BLSSBhbmQgUEtDUyM4CisgICAgICAgIGZvcm1hdHMuCisKKyAgICAgICAgVGhlIFRhZyBl
bnVtIGNsYXNzIGxpc3RzIHRoZSB0YWcgdmFsdWVzIHRoaXMgcGFyc2VyIHN1cHBvcnRzLgorICAg
ICAgICBPYmplY3RzIG9mIHRoZSBOb2RlIGNsYXNzIHJlcHJlc2VudCBhIHNpbmdsZSBBU04uMSBu
b2RlLCBzdG9yaW5nCisgICAgICAgIHRoZSB0YWcsIGxlbmd0aCBvZiB0aGUgY29udGFpbmVkIHZh
bHVlLCBhbmQgYnVmZmVyIGxvY2F0aW9uIGFuZAorICAgICAgICBzaXplIGluZm9ybWF0aW9uIG9m
IHRoaXMgc3BlY2lmaWMgbm9kZS4KKworICAgICAgICBUaGUgUGFyc2VyIG9iamVjdCBrZWVwcyBh
IHJlZmVyZW5jZSB0byB0aGUgVmVjdG9yPD4gYnVmZmVyIGl0J3MKKyAgICAgICAgcGFyc2luZywg
YW5kIHByb3ZpZGVzIHRoZSBwYXJzZU5vZGUoKSBtZXRob2QgdG8gcGFyc2UgYSBzaW5nbGUKKyAg
ICAgICAgQVNOLjEgbm9kZSBhbmQgc3RvcmUgdGhlIHBhcnNlZCBpbmZvcm1hdGlvbiBpbnRvIGEg
Tm9kZSBvYmplY3QuCisgICAgICAgIFRoaXMgbWV0aG9kIHJldHJpZXZlcyB0aGUgdGFnIGFuZCBk
ZWNvZGVzIHRoZSBhY3R1YWwgbGVuZ3RoIG9mCisgICAgICAgIHRoaXMgbm9kZSdzIHZhbHVlLCBh
bmQgdXBvbiBzdWNjZXNzZnVsIG9wZXJhdGlvbiBwb3B1bGF0ZXMgdGhlCisgICAgICAgIHBhc3Nl
ZC1pbiBOb2RlIG9iamVjdCB3aXRoIHRoZSB0YWcsIGxlbmd0aCBhbmQgYnVmZmVyIHBvc2l0aW9u
aW5nCisgICAgICAgIGFuZCBzaXplIGluZm9ybWF0aW9uLgorCisgICAgICAgICogcGFsL2NyeXB0
by9nY3J5cHQvQVNOMS5oOiBBZGRlZC4KKyAgICAgICAgKEFTTjE6Ok5vZGU6Om9wZXJhdG9yISk6
CisgICAgICAgIChBU04xOjpQYXJzZXI6OnBhcnNlTm9kZSk6CisKIDIwMTctMDYtMDEgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMTc2MjYp
OiBFTkFCTEVfQVBQTEVfUEFZX1NFU1NJT05fVjMgd2FzIGRpc2FibGVkIGJ5IG1pc3Rha2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9BU04xLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQVNOMS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMy
MDk2MDcyMzI5Y2RiYmU4NWJhMTRhMWZhNmJlZjRjZjMxZTVmYjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQVNOMS5oCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEFTTjEgeworCitlbnVt
IGNsYXNzIFRhZyA6IHVpbnQ4X3QgeworICAgIEludGVnZXIgPSAweDAyLAorICAgIEJpdFN0cmlu
ZyA9IDB4MDMsCisgICAgT2N0ZXRTdHJpbmcgPSAweDA0LAorICAgIE9iamVjdElkZW50aWZpZXIg
PSAweDA2LAorICAgIFNlcXVlbmNlID0gMHgzMCwKK307CisKK3N0cnVjdCBOb2RlIHsKKyAgICBO
b2RlKCkgPSBkZWZhdWx0OworICAgIE5vZGUoY29uc3QgTm9kZSYpID0gZGVsZXRlOworICAgIE5v
ZGUmIG9wZXJhdG9yPShjb25zdCBOb2RlJikgPSBkZWxldGU7CisKKyAgICAvLyBUYWcgYW5kIGxl
bmd0aCB2YWx1ZXMgZm9yIHRoaXMgQVNOLjEgbm9kZS4KKyAgICB1aW50OF90IHRhZyB7IDAgfTsK
KyAgICBzaXplX3QgbGVuZ3RoIHsgMCB9OworCisgICAgc3RydWN0IHsKKyAgICAgICAgLy8gSW5k
aWNlcyBpbnRvIHRoZSBzb3VyY2UgVmVjdG9yPD4gb2JqZWN0LgorICAgICAgICBzaXplX3Qgb2Zm
c2V0IHsgMCB9OworICAgICAgICBzaXplX3QgdmFsdWVPZmZzZXQgeyAwIH07CisKKyAgICAgICAg
Ly8gU2l6ZSBvZiB0aGlzIG5vZGUgYXMgcG9zaXRpb25lZCBpbiB0aGUgVmVjdG9yPD4gb2JqZWN0
LAorICAgICAgICAvLyBzdW0gb2YgdGhlIHRhZyBieXRlLCBsZW5ndGggYnl0ZShzKSBhbmQgdmFs
dWUgYnl0ZShzKSwgaWYgYW55LgorICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKKyAgICB9IGJ1
ZmZlcjsKKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIXRhZzsgfQorfTsK
Kworc3RydWN0IFBhcnNlciB7CisgICAgUGFyc2VyKGNvbnN0IFBhcnNlciYpID0gZGVsZXRlOwor
ICAgIFBhcnNlciYgb3BlcmF0b3I9KGNvbnN0IFBhcnNlciYpID0gZGVsZXRlOworCisgICAgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXI7CisKKyAgICB2b2lkIHBhcnNlTm9kZShzaXplX3Qg
b2Zmc2V0LCBUYWcgdGFyZ2V0VGFnLCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgLy8gVGVz
dCBpZiB3aXRoIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IHRoZXJlJ3Mgc3RpbGwgcm9vbSBmb3IKKyAg
ICAgICAgLy8gYXQgbGVhc3QgdGhlIHRhZyBhbmQgbGVuZ3RoIGJ5dGVzLiBCYWlsIGlmIG5vdC4K
KyAgICAgICAgaWYgKG9mZnNldCArIDIgPiBidWZmZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIC8vIFJldHJpZXZlIHRoZSB0YWcgdmFsdWUuIEJhaWwgaWYgaXQgZG9l
c24ndCBtYXRjaCB0aGUgdGFyZ2V0IHRhZy4KKyAgICAgICAgdWludDhfdCB0YWcgPSBidWZmZXJb
b2Zmc2V0XTsKKyAgICAgICAgaWYgKHRhZyAhPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0YXJnZXRU
YWcpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIFJldHJpZXZlIHRoZSBsZW5n
dGggdmFsdWUsIGZvciBub3cgb2NjdXB5aW5nIGEgc2luZ2xlIGJ5dGUuCisgICAgICAgIHNpemVf
dCBsZW5ndGggPSBidWZmZXJbb2Zmc2V0ICsgMV07CisgICAgICAgIHNpemVfdCBsZW5ndGhCeXRl
cyA9IDE7CisKKyAgICAgICAgLy8gSWYgdGhlIGxlbmd0aCB2YWx1ZSBpcyBsYXJnZXIgdGhhbiAx
MjgsIHRoZSBsb3dlciA3IGJpdHMgcmVwcmVzZW50CisgICAgICAgIC8vIHRoZSBudW1iZXIgb2Yg
bGVuZ3RoIGJ5dGVzLgorICAgICAgICBpZiAobGVuZ3RoID4gMTI4KSB7CisgICAgICAgICAgICAv
LyBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGFyZSBkZXNjcmliaW5nIHRoZSBs
ZW5ndGgKKyAgICAgICAgICAgIC8vIHZhbHVlLiBCYWlsIGlmIHRoaXMgYW1vdW50IGRvZXNuJ3Qg
Zml0IGludG8gdGhlIGJ1ZmZlciBhdCB0aGUKKyAgICAgICAgICAgIC8vIGRlc2lyZWQgb2Zmc2V0
LgorICAgICAgICAgICAgbGVuZ3RoQnl0ZXMgPSBsZW5ndGggLSAxMjg7CisgICAgICAgICAgICBp
ZiAob2Zmc2V0ICsgMiArIGxlbmd0aEJ5dGVzID4gYnVmZmVyLnNpemUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIC8vIENvbWJpbmUgdGhlIGxlbmd0aCBieXRlcyBp
bnRvIGEgc2luZ2xlIHZhbHVlLgorICAgICAgICAgICAgbGVuZ3RoID0gMDsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoQnl0ZXM7ICsraSkKKyAgICAgICAgICAgICAg
ICBsZW5ndGggKz0gYnVmZmVyW29mZnNldCArIDIgKyBpXSA8PCAoKGxlbmd0aEJ5dGVzIC0gaSAt
IDEpICogOCk7CisKKyAgICAgICAgICAgIC8vIERvbid0IGZvcmdldCBhYm91dCB0aGUgaW5pdGlh
bCBsZW5ndGggYnl0ZSBhdCBidWZmZXJbb2Zmc2V0ICsgMV0KKyAgICAgICAgICAgIC8vIHRoYXQg
ZW5jb2RlZCB0aGUgYW1vdW50IG9mIGZvbGxvd2luZyBsZW5ndGggYnl0ZXMuCisgICAgICAgICAg
ICBsZW5ndGhCeXRlcyArPSAxOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2l0aCB0aGUgbGVu
Z3RoIG5vdyBrbm93biwgYmFpbCBpZiBhbGwgdGhlIGRlY29kZWQgaW5mb3JtYXRpb24gZG9lc24n
dAorICAgICAgICAvLyBmaXQgaW50byB0aGUgYnVmZmVyIGF0IHRoZSBkZXNpcmVkIG9mZnNldC4K
KyAgICAgICAgaWYgKG9mZnNldCArIDEgKyBsZW5ndGhCeXRlcyArIGxlbmd0aCA+IGJ1ZmZlci5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRmluYWxseSwgcG9wdWxh
dGUgdGhlIE5vZGUgb2JqZWN0LgorICAgICAgICBub2RlLnRhZyA9IHRhZzsKKyAgICAgICAgbm9k
ZS5sZW5ndGggPSBsZW5ndGg7CisgICAgICAgIG5vZGUuYnVmZmVyID0geyBvZmZzZXQsIG9mZnNl
dCArIDEgKyBsZW5ndGhCeXRlcywgMSArIGxlbmd0aEJ5dGVzICsgbGVuZ3RoLCB9OworICAgIH0K
K307CisKK30gLy8gbmFtZXNwYWNlIEFTTjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggNDE0YjM3NmU0ZjZiMjUyZTczMjcx
M2VkM2MwNTZlYmQyN2ZkY2UxZC4uYzIzNjQ3OWQ1N2EzOTQ4ZjQwZDhmNTVmOWRjZjcyYmUwYThk
ZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlF
Q0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlF
Q0dDcnlwdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgi
CiAjaW5jbHVkZSAiSnNvbldlYktleS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvQVNOMS5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8v
Z2NyeXB0L0hhbmRsZS5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtMjExLDExICsyMTIsMTI4IEBAIFJl
ZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHJpdmF0ZShD
cnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgcmV0dXJuIGNyZWF0ZShpZGVudGlmaWVyLCBjdXJ2
ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgcGxhdGZvcm1LZXkucmVsZWFzZSgpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKIH0KIAotUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxh
dGZvcm1JbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZl
Y3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK3N0YXRpYyBib29s
IHN1cHBvcnRlZEFsZ29yaXRobUZvcklkZW50aWZpZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdGF0aWMgY29uc3Qgc3Rk
OjphcnJheTx1aW50OF90LCA3PiBzX2lkRUNQdWJsaWNLZXkgeyB7IDB4MmEsIDB4ODYsIDB4NDgs
IDB4Y2UsIDB4M2QsIDB4MDIsIDB4MDEgfSB9OworICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDU+IHNfaWRFQ0RIIHsgeyAweDJiLCAweDgxLCAweDA0LCAweDAxLCAweDBjIH0g
fTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChzaXplID09IHNfaWRFQ1B1YmxpY0tl
eS5zaXplKCkgJiYgIXN0ZDo6bWVtY21wKGRhdGEsIHNfaWRFQ1B1YmxpY0tleS5kYXRhKCksIHNp
emUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc2l6ZSA9PSBzX2lkRUNESC5zaXpl
KCkgJiYgIXN0ZDo6bWVtY21wKGRhdGEsIHNfaWRFQ0RILmRhdGEoKSwgc2l6ZSkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVGb3JJZGVudGlmaWVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDg+IHNfc2VjcDI1NnIxIHsgeyAweDJhLCAweDg2LCAweDQ4LCAweGNlLCAweDNk
LCAweDAzLCAweDAxLCAweDA3IH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50
OF90LCA1PiBzX3NlY3AzODRyMSB7IHsgMHgyYiwgMHg4MSwgMHgwNCwgMHgwMCwgMHgyMiB9IH07
CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgNT4gc19zZWNwNTIxcjEgeyB7
IDB4MmIsIDB4ODEsIDB4MDQsIDB4MDAsIDB4MjMgfSB9OworCisgICAgaWYgKHNpemUgPT0gc19z
ZWNwMjU2cjEuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX3NlY3AyNTZyMS5kYXRhKCks
IHNpemUpKQorICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU6OlAyNTY7Cisg
ICAgaWYgKHNpemUgPT0gc19zZWNwMzg0cjEuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBz
X3NlY3AzODRyMS5kYXRhKCksIHNpemUpKQorICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RUM6Ok5h
bWVkQ3VydmU6OlAzODQ7CisgICAgaWYgKHNpemUgPT0gc19zZWNwNTIxcjEuc2l6ZSgpICYmICFz
dGQ6Om1lbWNtcChkYXRhLCBzX3NlY3A1MjFyMS5kYXRhKCksIHNpemUpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OyAvLyBOb3Qgc3VwcG9ydGVkIHlldC4KKworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3Jt
SW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3Vy
dmUgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKK3sKKyAgICAvLyBBU04uMSBzdHJ1Y3R1cmUgZGVm
aW5pdGlvbnMgZm9yIFN1YmplY3RQdWJsaWNLZXlJbmZvCisgICAgLy8gaHR0cDovL3d3dy5pZXRm
Lm9yZy9yZmMvcmZjNTQ4MC50eHQKKyAgICAvLworICAgIC8vIFN1YmplY3RQdWJsaWNLZXlJbmZv
ICA6Oj0gIFNFUVVFTkNFICB7CisgICAgLy8gICBhbGdvcml0aG0gICAgICAgICAgICBBbGdvcml0
aG1JZGVudGlmaWVyLAorICAgIC8vICAgc3ViamVjdFB1YmxpY0tleSAgICAgQklUIFNUUklORwor
ICAgIC8vIH0KKyAgICAvLworICAgIC8vIEFsZ29yaXRobUlkZW50aWZpZXIgIDo6PSAgU0VRVUVO
Q0UgIHsKKyAgICAvLyAgICBhbGdvcml0aG0gICBPQkpFQ1QgSURFTlRJRklFUiwKKyAgICAvLyAg
ICBwYXJhbWV0ZXJzICBBTlkgREVGSU5FRCBCWSBhbGdvcml0aG0gT1BUSU9OQUwKKyAgICAvLyB9
CisgICAgLy8KKyAgICAvLyBFQ1BhcmFtZXRlcnMgOjo9IENIT0lDRSB7CisgICAgLy8gICBuYW1l
ZEN1cnZlICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgLS0gTVVTVCBiZSBzdXBwb3J0ZWQuCisg
ICAgLy8gICAtLSBpbXBsaWNpdEN1cnZlICAgTlVMTCAtLSBNVVNUIE5PVCBiZSB1c2VkLgorICAg
IC8vICAgLS0gc3BlY2lmaWVkQ3VydmUgIFNwZWNpZmllZEVDRG9tYWluIC0tIE1VU1QgTk9UIGJl
IHVzZWQuCisgICAgLy8gfQorCisgICAgLy8gQ29ycmVzcG9uZGluZyBBU04xOjpOb2RlIHN0cnVj
dHVyZSBoaWVyYXJjaHkKKyAgICBzdHJ1Y3QgOiBBU04xOjpOb2RlIHsKKyAgICAgICAgc3RydWN0
IDogQVNOMTo6Tm9kZSB7CisgICAgICAgICAgICBBU04xOjpOb2RlIGFsZ29yaXRobTsKKyAgICAg
ICAgICAgIEFTTjE6Ok5vZGUgbmFtZWRDdXJ2ZTsKKyAgICAgICAgfSBhbGdvcml0aG1JZGVudGlm
aWVyOworICAgICAgICBBU04xOjpOb2RlIHN1YmplY3RQdWJsaWNLZXk7CisgICAgfSBzcGtpOwor
CisgICAgQVNOMTo6UGFyc2VyIHBhcnNlciB7IGtleURhdGEgfTsKKworICAgIC8vIFBhcnNlIHRo
ZSBgU3ViamVjdFB1YmxpY0tleUluZm9gIHNlcXVlbmNlLiBTaG91bGQgbWF0Y2ggdGhlIGNvbXBs
ZXRlIGRhdGEgYnVmZmVyLgorICAgIHBhcnNlci5wYXJzZU5vZGUoMCwgQVNOMTo6VGFnOjpTZXF1
ZW5jZSwgc3BraSk7CisgICAgaWYgKCFzcGtpIHx8IHNwa2kuYnVmZmVyLnNpemUgIT0ga2V5RGF0
YS5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gUGFyc2UgdGhlIGBB
bGdvcml0aG1JZGVudGlmaWVyYCBzZXF1ZW5jZS4KKyAgICBwYXJzZXIucGFyc2VOb2RlKHNwa2ku
YnVmZmVyLnZhbHVlT2Zmc2V0LCBBU04xOjpUYWc6OlNlcXVlbmNlLCBzcGtpLmFsZ29yaXRobUlk
ZW50aWZpZXIpOworICAgIGlmICghc3BraS5hbGdvcml0aG1JZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFBhcnNlIHRoZSBgYWxnb3JpdGhtYCBvYmplY3QgaWRl
bnRpZmllci4KKyAgICBwYXJzZXIucGFyc2VOb2RlKHNwa2kuYWxnb3JpdGhtSWRlbnRpZmllci5i
dWZmZXIudmFsdWVPZmZzZXQsIEFTTjE6OlRhZzo6T2JqZWN0SWRlbnRpZmllciwgc3BraS5hbGdv
cml0aG1JZGVudGlmaWVyLmFsZ29yaXRobSk7CisgICAgaWYgKCFzcGtpLmFsZ29yaXRobUlkZW50
aWZpZXIuYWxnb3JpdGhtKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoZSBgYWxnb3JpdGhtYCBvYmplY3QgaWRlbnRpZmllciByZXByZXNlbnRzIGEgc3Vw
cG9ydGVkIEVDIGFsZ29yaXRobS4KKyAgICBpZiAoIXN1cHBvcnRlZEFsZ29yaXRobUZvcklkZW50
aWZpZXIoJmtleURhdGFbc3BraS5hbGdvcml0aG1JZGVudGlmaWVyLmFsZ29yaXRobS5idWZmZXIu
dmFsdWVPZmZzZXRdLCBzcGtpLmFsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtLmxlbmd0aCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gUGFyc2UgdGhlIGBuYW1lZEN1cnZl
YCBvYmplY3QgaWRlbnRpZmllci4KKyAgICBwYXJzZXIucGFyc2VOb2RlKHNwa2kuYWxnb3JpdGht
SWRlbnRpZmllci5hbGdvcml0aG0uYnVmZmVyLm9mZnNldCArIHNwa2kuYWxnb3JpdGhtSWRlbnRp
Zmllci5hbGdvcml0aG0uYnVmZmVyLnNpemUsIEFTTjE6OlRhZzo6T2JqZWN0SWRlbnRpZmllciwg
c3BraS5hbGdvcml0aG1JZGVudGlmaWVyLm5hbWVkQ3VydmUpOworICAgIGlmICghc3BraS5hbGdv
cml0aG1JZGVudGlmaWVyLm5hbWVkQ3VydmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgLy8gRW5zdXJlIHRoYXQgdGhlIGBuYW1lZEN1cnZlYCBvYmplY3QgaWRlbnRpZmllciByZXBy
ZXNlbnRzIGEgc3VwcG9ydGVkIEVDIGN1cnZlIGFuZCBtYXRjaGVzIHRoZSB1c2VyLWRlZmluZWQg
Y3VydmUuCisgICAgYXV0byBwYXJhbWV0ZXJDdXJ2ZSA9IGN1cnZlRm9ySWRlbnRpZmllcihrZXlE
YXRhLmRhdGEoKSArIHNwa2kuYWxnb3JpdGhtSWRlbnRpZmllci5uYW1lZEN1cnZlLmJ1ZmZlci52
YWx1ZU9mZnNldCwgc3BraS5hbGdvcml0aG1JZGVudGlmaWVyLm5hbWVkQ3VydmUubGVuZ3RoKTsK
KyAgICBpZiAoIXBhcmFtZXRlckN1cnZlIHx8ICpwYXJhbWV0ZXJDdXJ2ZSAhPSBjdXJ2ZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgYGFsZ29yaXRo
bWAgYW5kIGBuYW1lZEN1cnZlYCBub2RlcyBmaWxsIG91dCB0aGUgYGFsZ29yaXRobUlkZW50aWZp
ZXJgIG5vZGUgdmFsdWUuCisgICAgaWYgKHNwa2kuYWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0
aG0uYnVmZmVyLnNpemUgKyBzcGtpLmFsZ29yaXRobUlkZW50aWZpZXIubmFtZWRDdXJ2ZS5idWZm
ZXIuc2l6ZSAhPSBzcGtpLmFsZ29yaXRobUlkZW50aWZpZXIubGVuZ3RoKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIC8vIFBhcnNlIHRoZSBgc3ViamVjdFB1YmxpY0tleWAgYml0IHN0
cmluZy4KKyAgICBwYXJzZXIucGFyc2VOb2RlKHNwa2kuYWxnb3JpdGhtSWRlbnRpZmllci5idWZm
ZXIub2Zmc2V0ICsgc3BraS5hbGdvcml0aG1JZGVudGlmaWVyLmJ1ZmZlci5zaXplLCBBU04xOjpU
YWc6OkJpdFN0cmluZywgc3BraS5zdWJqZWN0UHVibGljS2V5KTsKKyAgICBpZiAoIXNwa2kuc3Vi
amVjdFB1YmxpY0tleSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBFbnN1cmUg
dGhhdCB0aGUgYHN1YmplY3RQdWJsaWNLZXlgIHZhbHVlIGxlbmd0aCBlcXVhbHMgdGhlIHNpemUg
b2YgYW4gdW5jb21wcmVzc2VkIHBvaW50IGZvciB0aGUgc3BlY2lmaWVkIGN1cnZlLAorICAgIC8v
IGFjY291bnRpbmcgZm9yIHRoZSBsZWFkaW5nIG51bGwgYnl0ZSB0aGF0J3MgdXNlZCBpbiBBU04u
MSBiaXQgc3RyaW5ncy4KKyAgICB1bnNpZ25lZCBwb2ludFNpemUgPSB1bmNvbXByZXNzZWRQb2lu
dFNpemVGb3JDdXJ2ZShjdXJ2ZSk7CisgICAgaWYgKHNwa2kuc3ViamVjdFB1YmxpY0tleS5sZW5n
dGggIT0gcG9pbnRTaXplICsgMSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBF
bnN1cmUgdGhlIGZpcnN0IGJ5dGUgb2YgYHN1YmplY3RQdWJsaWNLZXlgIGRhdGEgaXMgYSBudWxs
IGJ5dGUsIGFzIHJlcXVpcmVkIGZvciBBU04uMSBiaXQgc3RyaW5ncywKKyAgICAvLyBhbmQgdGhl
IHNlY29uZCBieXRlIGlzIGEgMHgwNCBieXRlIHRoYXQgaW5kaWNhdGVzIHRoZSB1bmNvbXByZXNz
ZWQgcG9pbnQgZm9ybWF0LgorICAgIGF1dG8qIHBvaW50RGF0YSA9ICZrZXlEYXRhW3Nwa2kuc3Vi
amVjdFB1YmxpY0tleS5idWZmZXIudmFsdWVPZmZzZXRdOworICAgIGlmIChwb2ludERhdGFbMF0g
IT0gMHgwMCB8fCBwb2ludERhdGFbMV0gIT0gMHgwNCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIGBwdWJsaWMta2V5YCBzLWV4cHJlc3Npb24sIHVzaW5n
IHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpZWQgY3VydmUgbmFtZSBhbmQgdGhlIHVuY29tcHJlc3Nl
ZCBwb2ludCBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHBsYXRm
b3JtS2V5OworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmcGxhdGZv
cm1LZXksIG51bGxwdHIsICIocHVibGljLWtleShlY2MoY3VydmUgJXMpKHEgJWIpKSkiLAorICAg
ICAgICBjdXJ2ZU5hbWUoY3VydmUpLCBwb2ludFNpemUsIHBvaW50RGF0YSArIDEpOworICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIEZp
bmFsbHkgY3JlYXRlIGEgbmV3IENyeXB0b0tleUVDIG9iamVjdCwgdHJhbnNmZXJyaW5nIHRvIGl0
IG93bmVyc2hpcCBvZiB0aGUgYHB1YmxpYy1rZXlgIHMtZXhwcmVzc2lvbi4KKyAgICByZXR1cm4g
Y3JlYXRlKGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3Jt
S2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAKIFJlZlB0cjxDcnlwdG9L
ZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVz
YWdlQml0bWFwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDAxOTMxNTMyYmMyZDM4MTA1MjI3NmFlODMzMDE5YWUwYmU5MTg0
NWEuLjk5NmZiMDU1MWEzNDIwMWE4MTFlNDdkOTM2Yzg2M2M0OGNkMjU2MTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNy0wNi0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dDcnlwdF0gSW1wbGVtZW50IENyeXB0b0tleUVDIFNQS0kgaW1wb3J0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyOTI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczogTWFyayBhIGZldyBTUEtJLWJhc2VkIHRlc3RzIGFz
IHBhc3NpbmcuCisKIDIwMTctMDYtMDUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWJhc2VsaW5lIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9hdWRp
by9hdWRpby1jb250cm9scy1tZXRyaWNzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggOGViNTZiMjhkMjhmNGUyYWQyMGZiNGEwZjU2MGE0YzcwYWU5
NWRhNS4uNGUxM2M4ZjE1YjRkYzg0M2ViNjY2YWVkMjk0NzlkODZjYTMxMmM4OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgwNyw2ICs4MDcsOCBAQCBj
cnlwdG8vc3VidGxlL2VjLWltcG9ydC1qd2sta2V5LWV4cG9ydC1yYXcta2V5Lmh0bWwgWyBQYXNz
IF0KIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy5odG1s
IFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1yYXcta2V5LWV4cG9ydC1qd2sta2V5
Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXJhdy1rZXktZXhwb3J0LXJh
dy1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXktZXhw
b3J0LWp3ay1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1r
ZXktZXhwb3J0LXJhdy1rZXkuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9lY2RoLWRlcml2
ZS1iaXRzLWxlbmd0aC1saW1pdHMuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9lY2RoLWdl
bmVyYXRlLWV4cG9ydC1qd2sta2V5LXAyNTYuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9l
Y2RoLWdlbmVyYXRlLWV4cG9ydC1qd2sta2V5LXAzODQuaHRtbCBbIFBhc3MgXQpAQCAtODMwLDYg
KzgzMiw4IEBAIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQta2V5LWRlcml2ZS1obWFjLWtleS1j
dXN0b20tbGVuZ3RoLmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQta2V5
LWRlcml2ZS1wYmtkZjIta2V5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBv
cnQtcmF3LWtleS1wMjU2Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQt
cmF3LWtleS1wMzg0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtc3Br
aS1rZXktcDI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXNwa2kt
a2V5LXAzODQuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBv
cnQtandrLWtleS5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2VjZHNhLWdlbmVyYXRlLWV4
cG9ydC1rZXktcmF3Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUt
a2V5Lmh0bWwgWyBQYXNzIF0KQEAgLTg0NCw2ICs4NDgsNyBAQCBjcnlwdG8vc3VidGxlL2VjZHNh
LWltcG9ydC1rZXktc2lnbi1wMzg0Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvZWNkc2Et
aW1wb3J0LWtleS12ZXJpZnktcDI1Ni5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2VjZHNh
LWltcG9ydC1rZXktdmVyaWZ5LXAzODQuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9lY2Rz
YS1pbXBvcnQtcmF3LWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL2VjZHNhLWltcG9y
dC1zcGtpLWtleS5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2VjZHNhLXZlcmlmeS1tYWxm
b3JtZWQtcGFyYW1ldGVycy5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2VuY3J5cHQtbWFs
Zm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9leHBvcnQta2V5
LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312640</attachid>
            <date>2017-06-12 01:47:17 -0700</date>
            <delta_ts>2017-06-13 02:57:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172927-20170612104715.patch</filename>
            <type>text/plain</type>
            <size>29610</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc1M2U2NmY4YzcwZTll
Yjg2YzZhZjI3MjkwMWQ4ZWNmNTQ2MTY4Ni4uZTcxZGMyZTUxMDRlZGJiMTg4ZTk1MGU3ZDNlMjg2
NjFhNDAyMjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2LTEyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBpbXBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgVXNpbmcgbGlidGFzbjEgdGhyb3VnaCB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHdyYXBw
ZXJzLCB0aGUgZ2l2ZW4ga2V5IGRhdGEKKyAgICAgICAgaXMgZGVjb2RlZCBhZ2FpbnN0IHRoZSBT
dWJqZWN0UHVibGljS2V5SW5mbyBBU04uMSBkZWZpbml0aW9uLiBUaGUgYWxnb3JpdGhtCisgICAg
ICAgIG1lbWJlciBpcyB0aGVuIHByb3Blcmx5IHZhbGlkYXRlZCwgbWFraW5nIHN1cmUgdGhhdCB0
aGUga2V5IGFsZ29yaXRobSBpZGVuZml0aWVyCisgICAgICAgIGlzIHN1cHBvcnRlZCBhbmQgdGhh
dCB0aGUgYWxnb3JpdGhtIHBhcmFtZXRlcnMgc3BlY2lmeSB0aGUgY29ycmVjdCBFQyBjdXJ2ZS4K
KworICAgICAgICBUaGUgcHVibGljIGtleSBiaXQgc3RyaW5nIGlzIHRoZW4gcmV0cmlldmVkIGFu
ZCB2YWxpZGF0ZWQsIGVuc3VyaW5nIGl0IHJlcHJlc2VudHMKKyAgICAgICAgYW4gdW5jb21wcmVz
c2VkIEVDIHBvaW50IHRoYXQgaXMgb2YgdmFsaWQgc2l6ZSBmb3IgdGhlIHNwZWNpZmllZCBFQyBj
dXJ2ZS4KKworICAgICAgICBGaW5hbGx5LCB0aGUgY3VydmUgbmFtZSBhbmQgdW5jb21wcmVzc2Vk
IHBvaW50IGRhdGEgYXJlIGVtYmVkZGVkIGludG8gYQorICAgICAgICBgcHVibGljLWtleWAgcy1l
eHByZXNzaW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRocm91Z2ggdGhlIGxpYmdjcnlwdCBBUEkuIFRo
aXMgaXMKKyAgICAgICAgdGhlbiB1c2VkLCBhbG9uZyB3aXRoIG90aGVyIGluZm9ybWF0aW9uLCB0
byBjcmVhdGUgYSB2YWxpZCBDcnlwdG9LZXlFQyBvYmplY3QuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogVXNlIExJQlRBU04xX0lOQ0xVREVfRElSRUNUT1JJRVMgYW5kIExJQlRBU04x
X0xJQlJBUklFUy4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdXBwb3J0ZWRBbGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnZl
Rm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRTcGtpKToKKwogMjAxNy0wNi0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudCBkb2Vzbid0IGdldCBjYWxsZWQgb24g
YW4gQXR0ciBpbnNpZGUgYSBzaGFkb3cgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNTdhMjhl
NDFlYTE1OTJjY2RmOWNlNTI0MzM0MTM0YjFhYjNhZjcxNC4uZDU4MDlmMjRmMGNkYzJkYWUzZTBk
ZDhjNGRiODliNDRjMGFmMDY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTctMDYtMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjkyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZpbGUgdGhhdCBw
cm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nIHdpdGggbGlidGFzbjEgQVBJ
cy4KKworICAgICAgICBUaGUgcHJlY29tcHV0ZWQgQVNOLjEgZGVjbGFyYXRpb25zLCBnZW5lcmF0
ZWQgZnJvbSB0aGUgV2ViQ3J5cHRvLmFzbiBmaWxlIHdpdGgKKyAgICAgICAgdGhlIGFzbjFQYXJz
ZXIgdG9vbCwgYXJlIHVzZWQgdG8gZW5hYmxlIGNvbnN0cnVjdGlvbiBvZiBBU04uMSBzdHJ1Y3R1
cmVzIHRoYXQKKyAgICAgICAgYXJlIHRoZW4gdXNlZCB0byBkZWNvZGUgdGhlIFNQS0kgb3IgUEtD
UyM4IGRhdGEgdGhyb3VnaCB0aGUgZGVjb2RlU3RydWN0dXJlKCkKKyAgICAgICAgZnVuY3Rpb24u
IFJhdyBkYXRhIG9mIGVhY2ggZWxlbWVudCBpbiB0aGF0IHN0cnVjdHVyZSBjYW4gYmUgcmV0cmll
dmVkIHRocm91ZyB0aGUKKyAgICAgICAgZWxlbWVudERhdGEoKSBmdW5jdGlvbi4KKworICAgICAg
ICBUaGUgU3RydWN0dXJlIGNsYXNzIGlzIGFkZGVkIGFzIGEgd3JhcHBlciBmb3IgYXNuMV9ub2Rl
IG9iamVjdHMgdGhhdCBhcmUgdXNlZAorICAgICAgICBhcyBkZWNvZGluZyB0YXJnZXRzLCBzaW1w
bGlmeWluZyBsaWZldGltZSBtYW5hZ2VtZW50IG9mIHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAg
KiBwYWwvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGFsL1BsYXRmb3JtV1BFLmNtYWtl
OgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAg
ICAgIChQQUw6OlRBU04xOjphc24xRGVmaW5pdGlvbnMpOgorICAgICAgICAoUEFMOjpUQVNOMTo6
ZGVjb2RlU3RydWN0dXJlKToKKyAgICAgICAgKFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKToKKyAg
ICAgICAgKiBwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKFBB
TDo6VEFTTjE6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChQQUw6OlRBU04xOjpT
dHJ1Y3R1cmU6Om9wZXJhdG9yJik6CisgICAgICAgIChQQUw6OlRBU04xOjpTdHJ1Y3R1cmU6Om9w
ZXJhdG9yIGFzbjFfbm9kZSk6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9XZWJDcnlwdG8u
YXNuOiBBZGRlZC4KKwogMjAxNy0wNi0xMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmVydGVkIHIyMTgwNTYgYmVjYXVzZSBpdCBtYWRlIHRoZSBJREUgcmVp
bmRleCBjb25zdGFudGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggNzc1YzE4OTg0YWU4OWI5Y2VhYWIyNWI1N2ZkYTA2YTFhMTVmYzYzYi4uYWZhNWE5YTA1
OTg1OGNjYjI3YjYyZjdlMWUyYWVjOGNjNjkzYmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDMgKzEsNSBAQAogbGlzdChBUFBFTkQgUEFMX1NPVVJD
RVMKICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKworICAgIGNyeXB0
by90YXNuMS9VdGlsaXRpZXMuY3BwCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQ
RS5jbWFrZQppbmRleCA3NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiLi5h
ZmE1YTlhMDU5ODU4Y2NiMjdiNjJmN2UxZTJhZWM4Y2M2OTNiYmVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTEsMyArMSw1IEBACiBsaXN0KEFQUEVORCBQ
QUxfU09VUkNFUwogICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorCisg
ICAgY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkYTg3OWM1ZWY2
NjRkZTIxMzdhYmM1ODdlNGU0ZmM4N2EwZWRiMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCkBAIC0wLDAgKzEsMTM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisKK25h
bWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFRBU04xIHsKKworc3RhdGljIGFzbjFfbm9kZSBhc24x
RGVmaW5pdGlvbnMoKQoreworICAgIC8vIEdlbmVyYXRlZCB3aXRoIGBhc24xUGFyc2VyIFdlYkNy
eXB0by5hc25gLgorCisgICAgc3RhdGljIGFzbjFfbm9kZSBzX2RlZmluaXRpb25zOworICAgIHN0
YXRpYyBjb25zdCBhc24xX3N0YXRpY19ub2RlIHNfV2ViQ3J5cHRvQVNOMVtdID0geworICAgICAg
ICB7ICJXZWJDcnlwdG8iLCA1MzY4NzI5NzYsIG51bGxwdHIgfSwKKyAgICAgICAgeyBudWxscHRy
LCAxMDczNzQxODM2LCBudWxscHRyIH0sCisgICAgICAgIHsgIlN1YmplY3RQdWJsaWNLZXlJbmZv
IiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJhbGdvcml0aG0iLCAxMDczNzQx
ODI2LCAiQWxnb3JpdGhtSWRlbnRpZmllciJ9LAorICAgICAgICB7ICJzdWJqZWN0UHVibGljS2V5
IiwgNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJQcml2YXRlS2V5SW5mbyIsIDE2MTA2MTI3NDEs
IG51bGxwdHIgfSwKKyAgICAgICAgeyAidmVyc2lvbiIsIDEwNzM3NDE4MjYsICJWZXJzaW9uIn0s
CisgICAgICAgIHsgInByaXZhdGVLZXlBbGdvcml0aG0iLCAxMDczNzQxODI2LCAiUHJpdmF0ZUtl
eUFsZ29yaXRobUlkZW50aWZpZXIifSwKKyAgICAgICAgeyAicHJpdmF0ZUtleSIsIDEwNzM3NDE4
MjYsICJQcml2YXRlS2V5In0sCisgICAgICAgIHsgImF0dHJpYnV0ZXMiLCA1MzY4OTU0OTAsICJB
dHRyaWJ1dGVzIn0sCisgICAgICAgIHsgbnVsbHB0ciwgNDEwNCwgIjAifSwKKyAgICAgICAgeyAi
VmVyc2lvbiIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiUHJpdmF0ZUtleUFs
Z29yaXRobUlkZW50aWZpZXIiLCAxMDczNzQxODI2LCAiQWxnb3JpdGhtSWRlbnRpZmllciJ9LAor
ICAgICAgICB7ICJQcml2YXRlS2V5IiwgMTA3Mzc0MTgzMSwgbnVsbHB0ciB9LAorICAgICAgICB7
ICJBdHRyaWJ1dGVzIiwgMTYxMDYxMjc1MSwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIs
IDIsICJBdHRyaWJ1dGUifSwKKyAgICAgICAgeyAiQXR0cmlidXRlIiwgMTYxMDYxMjc0MSwgbnVs
bHB0ciB9LAorICAgICAgICB7ICJ0eXBlIiwgMTA3Mzc0MTgzNiwgbnVsbHB0ciB9LAorICAgICAg
ICB7ICJ2YWx1ZXMiLCAyLCAiQXR0cmlidXRlU2V0VmFsdWUifSwKKyAgICAgICAgeyAiQXR0cmli
dXRlU2V0VmFsdWUiLCAxNjEwNjEyNzUxLCBudWxscHRyIH0sCisgICAgICAgIHsgbnVsbHB0ciwg
MTMsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiQWxnb3JpdGhtSWRlbnRpZmllciIsIDE2MTA2MTI3
NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiYWxnb3JpdGhtIiwgMTA3Mzc0MTgzNiwgbnVsbHB0
ciB9LAorICAgICAgICB7ICJwYXJhbWV0ZXJzIiwgNTQxMDgxNjEzLCBudWxscHRyIH0sCisgICAg
ICAgIHsgImFsZ29yaXRobSIsIDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiRUNQcml2YXRlS2V5
IiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2ZXJzaW9uIiwgMTA3Mzc0MTgy
NywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcml2YXRlS2V5IiwgMTA3Mzc0MTgzMSwgbnVsbHB0
ciB9LAorICAgICAgICB7ICJwYXJhbWV0ZXJzIiwgMTYxMDYzNzMxNCwgIkVDUGFyYW1ldGVycyJ9
LAorICAgICAgICB7IG51bGxwdHIsIDIwNTYsICIwIn0sCisgICAgICAgIHsgInB1YmxpY0tleSIs
IDUzNjg5NTQ5NCwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDIwNTYsICIxIn0sCisg
ICAgICAgIHsgIkVDUGFyYW1ldGVycyIsIDE2MTA2MTI3NTQsIG51bGxwdHIgfSwKKyAgICAgICAg
eyAibmFtZWRDdXJ2ZSIsIDEyLCBudWxscHRyIH0sCisgICAgICAgIHsgIlJTQVB1YmxpY0tleSIs
IDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAibW9kdWx1cyIsIDEwNzM3NDE4Mjcs
IG51bGxwdHIgfSwKKyAgICAgICAgeyAicHVibGljRXhwb25lbnQiLCAzLCBudWxscHRyIH0sCisg
ICAgICAgIHsgIlJTQVByaXZhdGVLZXkiLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAg
IHsgInZlcnNpb24iLCAxMDczNzQxODI2LCAiVmVyc2lvbiJ9LAorICAgICAgICB7ICJtb2R1bHVz
IiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwdWJsaWNFeHBvbmVudCIsIDEw
NzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJpdmF0ZUV4cG9uZW50IiwgMTA3Mzc0
MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcmltZTEiLCAxMDczNzQxODI3LCBudWxscHRy
IH0sCisgICAgICAgIHsgInByaW1lMiIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAg
eyAiZXhwb25lbnQxIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJleHBvbmVu
dDIiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgImNvZWZmaWNpZW50IiwgMTA3
Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJvdGhlclByaW1lSW5mb3MiLCAxNjM4Niwg
Ik90aGVyUHJpbWVJbmZvcyJ9LAorICAgICAgICB7ICJPdGhlclByaW1lSW5mb3MiLCAxNjEyNzA5
ODk5LCBudWxscHRyIH0sCisgICAgICAgIHsgIk1BWCIsIDEwNzQyNjYxMjIsICIxIn0sCisgICAg
ICAgIHsgbnVsbHB0ciwgMiwgIk90aGVyUHJpbWVJbmZvIn0sCisgICAgICAgIHsgIk90aGVyUHJp
bWVJbmZvIiwgNTM2ODcwOTE3LCBudWxscHRyIH0sCisgICAgICAgIHsgInByaW1lIiwgMTA3Mzc0
MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJleHBvbmVudCIsIDEwNzM3NDE4MjcsIG51bGxw
dHIgfSwKKyAgICAgICAgeyAiY29lZmZpY2llbnQiLCAzLCBudWxscHRyIH0sCisgICAgICAgIHsg
bnVsbHB0ciwgMCwgbnVsbHB0ciB9CisgICAgfTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBzX29uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsIFtdIHsgYXNuMV9h
cnJheTJ0cmVlKHNfV2ViQ3J5cHRvQVNOMSwgJnNfZGVmaW5pdGlvbnMsIG51bGxwdHIpOyB9KTsK
KworICAgIHJldHVybiBzX2RlZmluaXRpb25zOworfQorCitib29sIGRlY29kZVN0cnVjdHVyZShh
c24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEpCit7CisgICAgaW50IHJldCA9IGFzbjFfY3JlYXRlX2VsZW1lbnQoYXNuMURl
ZmluaXRpb25zKCksIGVsZW1lbnROYW1lLCByb290KTsKKyAgICBpZiAocmV0ICE9IEFTTjFfU1VD
Q0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IGRhdGFTaXplID0gZGF0YS5z
aXplKCk7CisgICAgcmV0ID0gYXNuMV9kZXJfZGVjb2RpbmcyKHJvb3QsIGRhdGEuZGF0YSgpLCAm
ZGF0YVNpemUsIEFTTjFfREVDT0RFX0ZMQUdfU1RSSUNUX0RFUiwgbnVsbHB0cik7CisgICAgcmV0
dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUp
Cit7CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgdW5zaWduZWQgdHlwZSA9IDA7CisgICAgaW50
IHJldCA9IGFzbjFfcmVhZF92YWx1ZV90eXBlKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAm
bGVuZ3RoLCAmdHlwZSk7CisgICAgaWYgKHJldCAhPSBBU04xX01FTV9FUlJPUikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICh0eXBlID09IEFTTjFfRVRZUEVfQklUX1NU
UklORykgeworICAgICAgICBpZiAobGVuZ3RoICUgOCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGxlbmd0aCAvPSA4OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhKGxlbmd0aCk7CisgICAgcmV0ID0gYXNuMV9yZWFkX3ZhbHVlKHJvb3QsIGVsZW1l
bnROYW1lLCBkYXRhLmRhdGEoKSwgJmxlbmd0aCk7CisgICAgaWYgKHJldCAhPSBBU04xX1NVQ0NF
U1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gZGF0YTsKK30K
KworfSAvLyBuYW1lc3BhY2UgVEFTTjEKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjNm
NDY1MDZjZWJkOWQ2ZjE1Yzc5YWZiMDkzZDU0YmQwOTM1YjkyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5W
LgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8bGlidGFzbjEuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFRB
U04xIHsKKworY2xhc3MgU3RydWN0dXJlIHsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmUoKSA9IGRl
ZmF1bHQ7CisKKyAgICB+U3RydWN0dXJlKCkKKyAgICB7CisgICAgICAgIGFzbjFfZGVsZXRlX3N0
cnVjdHVyZSgmbV9zdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFN0cnVjdHVyZShjb25zdCBTdHJ1
Y3R1cmUmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1cmUmIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1
cmUmKSA9IGRlbGV0ZTsKKworICAgIFN0cnVjdHVyZShTdHJ1Y3R1cmUmJikgPSBkZWxldGU7Cisg
ICAgU3RydWN0dXJlJiBvcGVyYXRvcj0oU3RydWN0dXJlJiYpID0gZGVsZXRlOworCisgICAgYXNu
MV9ub2RlKiBvcGVyYXRvciYoKSB7IHJldHVybiAmbV9zdHJ1Y3R1cmU7IH0KKyAgICBvcGVyYXRv
ciBhc24xX25vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQorCitwcml2YXRlOgor
ICAgIGFzbjFfbm9kZSBtX3N0cnVjdHVyZSB7IG51bGxwdHIgfTsKK307CisKK2Jvb2wgZGVjb2Rl
U3RydWN0dXJlKGFzbjFfbm9kZSogcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
ZWxlbWVudERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKTsKKwor
fSAvLyBuYW1lc3BhY2UgVEFTTjEKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvV2ViQ3J5cHRvLmFzbiBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1dlYkNyeXB0by5hc24KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Fi
MTdiYzA1NDAzNzNjZjlhZWNhYTQ3MWE5M2IyMDY5YTgwNjU3NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1dlYkNyeXB0by5hc24KQEAgLTAs
MCArMSw3OCBAQAorV2ViQ3J5cHRvIHsgfQorCitERUZJTklUSU9OUyBFWFBMSUNJVCBUQUdTIDo6
PQorCitCRUdJTgorCitTdWJqZWN0UHVibGljS2V5SW5mbyA6Oj0gIFNFUVVFTkNFICB7CisgIGFs
Z29yaXRobSAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCisgIHN1YmplY3RQdWJsaWNLZXkg
IEJJVCBTVFJJTkcKK30KKworUHJpdmF0ZUtleUluZm8gOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lv
biAgICAgICAgICAgICAgICAgICBWZXJzaW9uLAorICBwcml2YXRlS2V5QWxnb3JpdGhtICAgICAg
IFByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyLAorICBwcml2YXRlS2V5ICAgICAgICAgICAg
ICAgIFByaXZhdGVLZXksCisgIGF0dHJpYnV0ZXMgICAgICAgICAgIFswXSAgSU1QTElDSVQgQXR0
cmlidXRlcyBPUFRJT05BTAorfQorCitWZXJzaW9uIDo6PSBJTlRFR0VSCisKK1ByaXZhdGVLZXlB
bGdvcml0aG1JZGVudGlmaWVyIDo6PSBBbGdvcml0aG1JZGVudGlmaWVyCisKK1ByaXZhdGVLZXkg
Ojo9IE9DVEVUIFNUUklORworCitBdHRyaWJ1dGVzIDo6PSBTRVQgT0YgQXR0cmlidXRlCisKK0F0
dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgeworICAgdHlwZSAgICBPQkpFQ1QgSURFTlRJRklFUiwKKyAg
IHZhbHVlcyAgQXR0cmlidXRlU2V0VmFsdWUKK30KKworQXR0cmlidXRlU2V0VmFsdWUgOjo9IFNF
VCBPRiBBTlkKKworQWxnb3JpdGhtSWRlbnRpZmllciA6Oj0gIFNFUVVFTkNFICB7CisgIGFsZ29y
aXRobSAgIE9CSkVDVCBJREVOVElGSUVSLAorICBwYXJhbWV0ZXJzICBBTlkgREVGSU5FRCBCWSBh
bGdvcml0aG0gT1BUSU9OQUwKK30KKworRUNQcml2YXRlS2V5IDo6PSBTRVFVRU5DRSB7CisgIHZl
cnNpb24gICAgICAgIElOVEVHRVIsCisgIHByaXZhdGVLZXkgICAgIE9DVEVUIFNUUklORywKKyAg
cGFyYW1ldGVycyBbMF0gRUNQYXJhbWV0ZXJzIE9QVElPTkFMLAorICBwdWJsaWNLZXkgIFsxXSBC
SVQgU1RSSU5HIE9QVElPTkFMCit9CisKK0VDUGFyYW1ldGVycyA6Oj0gQ0hPSUNFIHsKKyAgbmFt
ZWRDdXJ2ZSAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIC0tIE1VU1QgYmUgc3VwcG9ydGVkLgor
ICAtLSBpbXBsaWNpdEN1cnZlICAgTlVMTCAtIE1VU1QgTk9UIGJlIHVzZWQuCisgIC0tIHNwZWNp
ZmllZEN1cnZlICBTcGVjaWZpZWRFQ0RvbWFpbiAtIE1VU1QgTk9UIGJlIHVzZWQuCit9CisKK1JT
QVB1YmxpY0tleSA6Oj0gU0VRVUVOQ0UgeworICBtb2R1bHVzICAgICAgICAgICBJTlRFR0VSLCAg
LS0gbgorICBwdWJsaWNFeHBvbmVudCAgICBJTlRFR0VSICAgLS0gZQorfQorCitSU0FQcml2YXRl
S2V5IDo6PSBTRVFVRU5DRSB7CisgIHZlcnNpb24gICAgICAgICAgIFZlcnNpb24sCisgIG1vZHVs
dXMgICAgICAgICAgIElOVEVHRVIsICAtLSBuCisgIHB1YmxpY0V4cG9uZW50ICAgIElOVEVHRVIs
ICAtLSBlCisgIHByaXZhdGVFeHBvbmVudCAgIElOVEVHRVIsICAtLSBkCisgIHByaW1lMSAgICAg
ICAgICAgIElOVEVHRVIsICAtLSBwCisgIHByaW1lMiAgICAgICAgICAgIElOVEVHRVIsICAtLSBx
CisgIGV4cG9uZW50MSAgICAgICAgIElOVEVHRVIsICAtLSBkIG1vZCAocC0xKQorICBleHBvbmVu
dDIgICAgICAgICBJTlRFR0VSLCAgLS0gZCBtb2QgKHEtMSkKKyAgY29lZmZpY2llbnQgICAgICAg
SU5URUdFUiwgIC0tIChpbnZlcnNlIG9mIHEpIG1vZCBwCisgIG90aGVyUHJpbWVJbmZvcyAgIE90
aGVyUHJpbWVJbmZvcyBPUFRJT05BTAorfQorCitPdGhlclByaW1lSW5mb3MgOjo9IFNFUVVFTkNF
IFNJWkUoMS4uTUFYKSBPRiBPdGhlclByaW1lSW5mbworCitPdGhlclByaW1lSW5mbyA6Oj0gU0VR
VUVOQ0UgeworICBwcmltZSBJTlRFR0VSLCAgLS0gcmkKKyAgZXhwb25lbnQgSU5URUdFUiwgLS0g
ZGkKKyAgY29lZmZpY2llbnQgSU5URUdFUiAtLSB0aQorfQorCitFTkQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggOTBlMWZlMWFlZTAxYWUyYWYzMmJhZjE3MzMwZGJmMjAwZjU4NTI3Zi4u
NDA4NjIyODc2NzgyNjFlMjgyYWQyNmI5Zjc4ODc2MjM4NjdhZTAxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTIxOSw2ICsyMTksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJB
UklFUwogICAgICR7TElCR0NSWVBUX0xJQlJBUklFU30KICAgICAke0xJQlNFQ1JFVF9MSUJSQVJJ
RVN9CiAgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KKyAgICAke0xJQlRBU04xX0xJQlJBUklFU30K
ICAgICAke0xJQlhNTDJfTElCUkFSSUVTfQogICAgICR7TElCWFNMVF9MSUJSQVJJRVN9CiAgICAg
JHtIWVBIRU5fTElCUkFSSUVTfQpAQCAtMjQ1LDYgKzI0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0xJQkdDUllQVF9JTkNMVURFX0RJ
UlN9CiAgICAgJHtMSUJTRUNSRVRfSU5DTFVERV9ESVJTfQogICAgICR7TElCU09VUF9JTkNMVURF
X0RJUlN9CisgICAgJHtMSUJUQVNOMV9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJYTUwyX0lOQ0xV
REVfRElSfQogICAgICR7TElCWFNMVF9JTkNMVURFX0RJUn0KICAgICAke1NRTElURV9JTkNMVURF
X0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNDE1NzI3NTAwZWEzOWJlMjQ4ZTI2
MmI5ZmY1Zjg4OTNlZjU3OGE1NS4uZGIxY2QzMjc3OGViYzdkNWFmMmE4MDQxMDhkY2VkNzkzZjI2
ODJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTE3MSw2ICsxNzEsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAgICR7SUNVX0xJQlJBUklFU30KICAgICAke0xJ
QkdDUllQVF9MSUJSQVJJRVN9CiAgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KKyAgICAke0xJQlRB
U04xX0xJQlJBUklFU30KICAgICAke0xJQlhNTDJfTElCUkFSSUVTfQogICAgICR7TElCWFNMVF9M
SUJSQVJJRVN9CiAgICAgJHtTUUxJVEVfTElCUkFSSUVTfQpAQCAtMTg1LDYgKzE4Niw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SUNVX0lOQ0xVREVf
RElSU30KICAgICAke0xJQkdDUllQVF9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJTT1VQX0lOQ0xV
REVfRElSU30KKyAgICAke0xJQlRBU04xX0lOQ0xVREVfRElSU30KICAgICAke0xJQlhNTDJfSU5D
TFVERV9ESVJ9CiAgICAgJHtMSUJYU0xUX0lOQ0xVREVfRElSfQogICAgICR7U1FMSVRFX0lOQ0xV
REVfRElSfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9L
ZXlFQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVD
R0NyeXB0LmNwcAppbmRleCA0MTRiMzc2ZTRmNmIyNTJlNzMyNzEzZWQzYzA1NmViZDI3ZmRjZTFk
Li42MzJiMGNiNjk1YjY3ZWEzZTljNjQ5NjZiNzhmMWNkYzE5MGQyMjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8cGFsL2Ny
eXB0by9nY3J5cHQvSGFuZGxlLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0
aWVzLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjExLDExICsy
MTIsMTA5IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0
SldLUHJpdmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgcmV0dXJuIGNyZWF0ZShpZGVu
dGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgcGxhdGZvcm1LZXkucmVsZWFz
ZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKIH0KIAotUmVmUHRyPENyeXB0b0tleUVDPiBDcnlw
dG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5h
bWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkK
K3N0YXRpYyBib29sIHN1cHBvcnRlZEFsZ29yaXRobUlkZW50aWZpZXIoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBrZXlJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFsZ29yaXRo
bSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDE4PiBzX2lkX2VjUHVibGljS2V5IHsgeyAiMS4yLjg0MC4xMDA0NS4yLjEiIH0g
fTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4gc19pZF9lY0RIIHsg
eyAiMS4zLjEzMi4xLjEyIiB9IH07CisKKyAgICBzaXplX3Qgc2l6ZSA9IGFsZ29yaXRobS5zaXpl
KCk7CisKKyAgICBzd2l0Y2ggKGtleUlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDRFNBOgorICAgICAgICAvLyBFQ0RTQSBvbmx5IHN1cHBvcnRzIGlk
LWVjUHVibGljS2V5IGFsZ29yaXRobXMgZm9yIGltcG9ydGVkIGtleXMuCisgICAgICAgIGlmIChz
aXplID09IHNfaWRfZWNQdWJsaWNLZXkuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChhbGdvcml0aG0u
ZGF0YSgpLCBzX2lkX2VjUHVibGljS2V5LmRhdGEoKSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNESDoKKyAgICAgICAgLy8gRUNESCBzdXBwb3J0cyBib3RoIGlkLWVjUHVi
bGljS2V5IGFuZCBpYy1lY0RIIGFsZ29yaXRobXMgZm9yIGltcG9ydGVkIGtleXMuCisgICAgICAg
IGlmIChzaXplID09IHNfaWRfZWNQdWJsaWNLZXkuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChhbGdv
cml0aG0uZGF0YSgpLCBzX2lkX2VjUHVibGljS2V5LmRhdGEoKSwgc2l6ZSkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHNpemUgPT0gc19pZF9lY0RILnNpemUoKSAmJiAh
c3RkOjptZW1jbXAoYWxnb3JpdGhtLmRhdGEoKSwgc19pZF9lY0RILmRhdGEoKSwgc2l6ZSkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVGb3JJZGVudGlmaWVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDIwPiBzX3NlY3AyNTZyMSB7IHsgIjEuMi44NDAuMTAwNDUuMy4xLjciIH0gfTsK
KyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4gc19zZWNwMzg0cjEgeyB7
ICIxLjMuMTMyLjAuMzQiIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90
LCAxMz4gc19zZWNwNTIxcjEgeyB7ICIxLjMuMTMyLjAuMzUiIH0gfTsKKworICAgIGlmIChzaXpl
ID09IHNfc2VjcDI1NnIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwMjU2cjEu
ZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQ
MjU2OworICAgIGlmIChzaXplID09IHNfc2VjcDM4NHIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAo
ZGF0YSwgc19zZWNwMzg0cjEuZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIENyeXB0b0tl
eUVDOjpOYW1lZEN1cnZlOjpQMzg0OworICAgIGlmIChzaXplID09IHNfc2VjcDUyMXIxLnNpemUo
KSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwNTIxcjEuZGF0YSgpLCBzaXplKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgLy8gTm90IHlldCBzdXBwb3J0ZWQuCisKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpw
bGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBO
YW1lZEN1cnZlIGN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCit7CisgICAgLy8gRGVjb2RlIHRoZSBg
U3ViamVjdFB1YmxpY0tleUluZm9gIHN0cnVjdHVyZSB1c2luZyB0aGUgcHJvdmlkZWQga2V5IGRh
dGEuCisgICAgUEFMOjpUQVNOMTo6U3RydWN0dXJlIHNwa2k7CisgICAgaWYgKCFQQUw6OlRBU04x
OjpkZWNvZGVTdHJ1Y3R1cmUoJnNwa2ksICJXZWJDcnlwdG8uU3ViamVjdFB1YmxpY0tleUluZm8i
LCBrZXlEYXRhKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBWYWxpZGF0ZSBg
YWxnb3JpdGhtLmFsZ29yaXRobWAuCisgICAgeworICAgICAgICBhdXRvIGFsZ29yaXRobSA9IFBB
TDo6VEFTTjE6OmVsZW1lbnREYXRhKHNwa2ksICJhbGdvcml0aG0uYWxnb3JpdGhtIik7CisgICAg
ICAgIGlmICghYWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgaWYgKCFzdXBwb3J0ZWRBbGdvcml0aG1JZGVudGlmaWVyKGlkZW50aWZpZXIsICphbGdvcml0
aG0pKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gVmFsaWRh
dGUgYGFsZ29yaXRobS5wYXJhbWV0ZXJzYCBhbmQgdGhlcmVpbiBlbWJlZGRlZCBgRUNQYXJhbWV0
ZXJzYC4KKyAgICB7CisgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFBBTDo6VEFTTjE6OmVsZW1l
bnREYXRhKHNwa2ksICJhbGdvcml0aG0ucGFyYW1ldGVycyIpOworICAgICAgICBpZiAoIXBhcmFt
ZXRlcnMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBEZWNvZGUg
dGhlIGBFQ1BhcmFtZXRlcnNgIHN0cnVjdHVyZSB1c2luZyB0aGUgYGFsZ29yaXRobS5wYXJhbWV0
ZXJzYCBkYXRhLgorICAgICAgICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgZWNQYXJhbWV0ZXJzOwor
ICAgICAgICBpZiAoIVBBTDo6VEFTTjE6OmRlY29kZVN0cnVjdHVyZSgmZWNQYXJhbWV0ZXJzLCAi
V2ViQ3J5cHRvLkVDUGFyYW1ldGVycyIsICpwYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIGF1dG8gbmFtZWRDdXJ2ZSA9IFBBTDo6VEFTTjE6OmVsZW1l
bnREYXRhKGVjUGFyYW1ldGVycywgIm5hbWVkQ3VydmUiKTsKKyAgICAgICAgaWYgKCFuYW1lZEN1
cnZlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBwYXJhbWV0
ZXJDdXJ2ZSA9IGN1cnZlRm9ySWRlbnRpZmllcihuYW1lZEN1cnZlLT5kYXRhKCksIG5hbWVkQ3Vy
dmUtPnNpemUoKSk7CisgICAgICAgIGlmICghcGFyYW1ldGVyQ3VydmUgfHwgKnBhcmFtZXRlckN1
cnZlICE9IGN1cnZlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
Ly8gUmV0cmlldmUgdGhlIGBzdWJqZWN0UHVibGljS2V5YCBkYXRhIGFuZCBlbWJlZCBpdCBpbnRv
IHRoZSBgcHVibGljLWtleWAgcy1leHByZXNzaW9uLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8
Z2NyeV9zZXhwX3Q+IHBsYXRmb3JtS2V5OworICAgIHsKKyAgICAgICAgYXV0byBzdWJqZWN0UHVi
bGljS2V5ID0gUEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoc3BraSwgInN1YmplY3RQdWJsaWNLZXki
KTsKKyAgICAgICAgaWYgKCFzdWJqZWN0UHVibGljS2V5KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgLy8gQmFpbCBpZiB0aGUgYHN1YmplY3RQdWJsaWNLZXlgIGRhdGEg
c2l6ZSBkb2Vzbid0IG1hdGNoIHRoZSBzaXplIG9mIGFuIHVuY29tcHJlc3NlZCBwb2ludAorICAg
ICAgICAvLyBmb3IgdGhpcyBjdXJ2ZSwgb3IgaWYgdGhlIGZpcnN0IGJ5dGUgaW4gdGhlIGBzdWJq
ZWN0UHVibGljS2V5YCBkYXRhIGlzbid0IDB4MDQsIGFzIHJlcXVpcmVkCisgICAgICAgIC8vIGZv
ciBhbiB1bmNvbXByZXNzZWQgRUMgcG9pbnQgZW5jb2RlZCBpbiBhbiBvY3RldCBzdHJpbmcuCisg
ICAgICAgIGlmICh1bmNvbXByZXNzZWRQb2ludFNpemVGb3JDdXJ2ZShjdXJ2ZSkgIT0gc3ViamVj
dFB1YmxpY0tleS0+c2l6ZSgpIHx8IHN1YmplY3RQdWJsaWNLZXktPmF0KDApICE9IDB4MDQpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3Ig
PSBnY3J5X3NleHBfYnVpbGQoJnBsYXRmb3JtS2V5LCBudWxscHRyLCAiKHB1YmxpYy1rZXkoZWNj
KGN1cnZlICVzKShxICViKSkpIiwKKyAgICAgICAgICAgIGN1cnZlTmFtZShjdXJ2ZSksIHN1Ympl
Y3RQdWJsaWNLZXktPnNpemUoKSwgc3ViamVjdFB1YmxpY0tleS0+ZGF0YSgpKTsKKyAgICAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0
Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEZpbmFsbHkgY3JlYXRlIGEgbmV3IENyeXB0b0tleUVDIG9iamVj
dCwgdHJhbnNmZXJyaW5nIHRvIGl0IG93bmVyc2hpcCBvZiB0aGUgYHB1YmxpYy1rZXlgIHMtZXhw
cmVzc2lvbi4KKyAgICByZXR1cm4gY3JlYXRlKGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlU
eXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7
CiB9CiAKIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtj
czgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+
JiYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtl
L0ZpbmRMaWJ0YXNuMS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kTGlidGFzbjEuY21ha2UKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGQ2NDMxZjIxOTQ2ZTJiYzRlODQ4ZWEzNmZiYWIwMTY4OTNiMWNhMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kTGlidGFzbjEuY21ha2UKQEAgLTAsMCArMSw0
NCBAQAorIyAtIFRyeSB0byBmaW5kIGxpYnRhc24xLgorIyBPbmNlIGRvbmUsIHRoaXMgd2lsbCBk
ZWZpbmUKKyMKKyMgIExJQlRBU04xX0lOQ0xVREVfRElSUyAtIHRoZSBsaWJ0YXNuMSBpbmNsdWRl
IGRpcmVjdG9yaWVzCisjICBMSUJUQVNOMV9MSUJSQVJJRVMgLSB0aGUgbGlidGFzbjEgbGlicmFy
aWVzLgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyMg
Q29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorcGtnX2NoZWNrX21vZHVs
ZXMoUENfTElCVEFTTjEgbGlidGFzbjEpCisKK2ZpbmRfcGF0aChMSUJUQVNOMV9JTkNMVURFX0RJ
UlMKKyAgICBOQU1FUyBsaWJ0YXNuMS5oCisgICAgUEFUSFMgJHtQQ19MSUJUQVNOMV9JTkNMVURF
RElSfSAke1BDX0xJQlRBU04xX0lOQ0xVREVfRElSU30KKykKKworZmluZF9saWJyYXJ5KExJQlRB
U04xX0xJQlJBUklFUworICAgIE5BTUVTIHRhc24xCisgICAgUEFUSFMgJHtQQ19MSUJUQVNOMV9M
SUJESVJ9ICR7UENfTElCVEFTTjFfTElCUkFSWV9ESVJTfQorKQorCittYXJrX2FzX2FkdmFuY2Vk
KExJQlRBU04xX0lOQ0xVREVfRElSUyBMSUJUQVNOMV9MSUJSQVJJRVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlCmluZGV4IGRmMzA5NjJlNmY5N2UwMzk2N2ZmY2QzMGFmYWQwZjEyNDQwNmE2NmUuLmY3YTgw
MTgwMjAxOTk3Y2E4YjUyZWE3M2NkYThiYjdiZDI0ZjIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CkBAIC0yNzEsNiArMjcxLDcgQEAgaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0gT1IgRU5BQkxFX1dF
Ql9SVEMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCisgICAgZmluZF9w
YWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQogICAgIGlmIChMSUJHQ1JZUFRfVkVSU0lPTiBWRVJT
SU9OX0xFU1MgMS43LjApCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYmdjcnlwdCAx
LjcuMCBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9ydC4iKQogICAg
IGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IGRjNWNhYWYzODgzYWJhMjM0MWNjZGYx
OTk3NWYzNDY5OWI2Y2E1MDYuLmM3OTk1MzY5YjEyMTFlMDVmNTAxN2YzMmNjNDg1Y2Q3MDc5NzQx
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0xMTksNiArMTE5LDcgQEAgaWYgKEVOQUJMRV9B
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pCisgICAgZmluZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQogICAgIGlmIChMSUJHQ1JZ
UFRfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMS43LjApCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJS
T1IgImxpYmdjcnlwdCAxLjcuMCBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViIENyeXB0byBBUEkg
c3VwcG9ydC4iKQogICAgIGVuZGlmICgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDY5OWJlNzIwZTcyZWFiMTU5ODMwMGEw
OTNjYjM5MDA4ZmY2YzZjYy4uZTJiOTAxZGMwOGZhM2EzNGZkOGQxMGI4NDJmMjcyZTk2ZmExNmI4
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA2LTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgQ3J5cHRvS2V5
RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBVbnNraXAg
RUMtYmFzZWQgU1BLSSBpbXBvcnQgdGVzdHMgdGhhdCBhcmUgbm93IHBhc3NpbmcuCisKIDIwMTct
MDYtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgZGlkTW92
ZVRvTmV3RG9jdW1lbnQgZG9lc24ndCBnZXQgY2FsbGVkIG9uIGFuIEF0dHIgaW5zaWRlIGEgc2hh
ZG93IHRyZWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZmMzOTU4NDljNjA5MjliZDRkYmE5MThhMzRiMzI1MWQ4MjI3MGNhMC4uYTEzZjRkNDhhOThlMzkz
YmNhYmQxNTI2N2JmNWQ5ZWVmMjA0NDA5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTc2OSwyMCArNzY5LDE1IEBAIHdlYmtpdC5vcmcvYi8xMzMxMjIg
Y3J5cHRvL3N1YnRsZS9lY2RoLWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS1wMjU2Lmh0bWwgWyBT
a2lwCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBv
cnQta2V5LXNwa2ktcDM4NC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0
by9zdWJ0bGUvZWNkaC1pbXBvcnQtcGtjczgta2V5LXAyNTYuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXBrY3M4LWtleS1wMzg0Lmh0
bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9y
dC1zcGtpLWtleS1wMjU2Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRv
L3N1YnRsZS9lY2RoLWltcG9ydC1zcGtpLWtleS1wMzg0Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1n
ZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vc3VidGxlL2VjZHNhLWltcG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQotd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZHNhLWltcG9ydC1zcGtpLWtleS5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LWp3
ay1rZXktZXhwb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIy
IGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LWp3ay1rZXktZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcmF3LWtl
eS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vc3VidGxlL2VjLWltcG9ydC1wa2NzOC1rZXktZXhwb3J0LWp3ay1rZXkuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1wa2NzOC1rZXkt
ZXhwb3J0LXBrY3M4LWtleS1wMjU2Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIg
Y3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1wa2NzOC1rZXktcDM4NC5o
dG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0
LXNwa2kta2V5LWV4cG9ydC1qd2sta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMx
MjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXktZXhwb3J0LXJhdy1rZXkuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1zcGtp
LWtleS1leHBvcnQtc3BraS1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1zcGtpLWtleS1wMzg0
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtZXhw
b3J0LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy5odG1sIFsgU2tpcCBdCkBAIC04MjgsNyArODIz
LDYgQEAgd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLXBvc3RN
ZXNzYWdlLXdvcmtlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93
b3JrZXJzL3N1YnRsZS9lYy1nZW5lcmF0ZS1leHBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWdlbmVyYXRlLWV4
cG9ydC1zcGtpLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93
b3JrZXJzL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1w
b3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vd29ya2Vycy9zdWJ0bGUvaG1hYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2Fn
ZS13b3JrZXIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IDNmMTA0NWNiYzNiYTVjMzkwYTUzNmQyYWMwYThkY2Q0MWY5NGIxNWYuLjZjNTU5Zjhj
OGIxMzVjZjRlMzA0ZGM3NWQ2YTY2ZjAzMjMwZDQwNjEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNi0xMiAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gSW1wbGVtZW50IENy
eXB0b0tleUVDIFNQS0kgaW1wb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyOTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZExpYnRhc24xLmNtYWtlOiBBZGRlZC4K
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZTogUmVxdWlyZSBsaWJ0YXNu
MSB3aGVuIFNVQlRMRV9DUllQVE8gaXMgZW5hYmxlZC4KKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZTogRGl0dG8uCisKIDIwMTctMDYtMDkgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEVuYWJsZSBFTkNSWVBURURfTUVE
SUEgZm9yIGJ1aWxkLXdlYmtpdCBidWlsZHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312760</attachid>
            <date>2017-06-13 02:57:25 -0700</date>
            <delta_ts>2017-06-16 01:27:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172927-20170613115724.patch</filename>
            <type>text/plain</type>
            <size>29632</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyNWQwMTUzN2U1ZDZl
ZTdlMjc3ZjRhMGYxMzY4Y2FkNmJkNjkyZS4uMjA1NTlkZjZlNTFlMTFmM2E4YmI4YmZmMGEyMDU5
OTEzNjQ5NTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2LTEzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBpbXBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgVXNpbmcgbGlidGFzbjEgdGhyb3VnaCB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHdyYXBw
ZXJzLCB0aGUgZ2l2ZW4ga2V5IGRhdGEKKyAgICAgICAgaXMgZGVjb2RlZCBhZ2FpbnN0IHRoZSBT
dWJqZWN0UHVibGljS2V5SW5mbyBBU04uMSBkZWZpbml0aW9uLiBUaGUgYWxnb3JpdGhtCisgICAg
ICAgIG1lbWJlciBpcyB0aGVuIHByb3Blcmx5IHZhbGlkYXRlZCwgbWFraW5nIHN1cmUgdGhhdCB0
aGUga2V5IGFsZ29yaXRobSBpZGVuZml0aWVyCisgICAgICAgIGlzIHN1cHBvcnRlZCBhbmQgdGhh
dCB0aGUgYWxnb3JpdGhtIHBhcmFtZXRlcnMgc3BlY2lmeSB0aGUgY29ycmVjdCBFQyBjdXJ2ZS4K
KworICAgICAgICBUaGUgcHVibGljIGtleSBiaXQgc3RyaW5nIGlzIHRoZW4gcmV0cmlldmVkIGFu
ZCB2YWxpZGF0ZWQsIGVuc3VyaW5nIGl0IHJlcHJlc2VudHMKKyAgICAgICAgYW4gdW5jb21wcmVz
c2VkIEVDIHBvaW50IHRoYXQgaXMgb2YgdmFsaWQgc2l6ZSBmb3IgdGhlIHNwZWNpZmllZCBFQyBj
dXJ2ZS4KKworICAgICAgICBGaW5hbGx5LCB0aGUgY3VydmUgbmFtZSBhbmQgdW5jb21wcmVzc2Vk
IHBvaW50IGRhdGEgYXJlIGVtYmVkZGVkIGludG8gYQorICAgICAgICBgcHVibGljLWtleWAgcy1l
eHByZXNzaW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRocm91Z2ggdGhlIGxpYmdjcnlwdCBBUEkuIFRo
aXMgaXMKKyAgICAgICAgdGhlbiB1c2VkLCBhbG9uZyB3aXRoIG90aGVyIGluZm9ybWF0aW9uLCB0
byBjcmVhdGUgYSB2YWxpZCBDcnlwdG9LZXlFQyBvYmplY3QuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogVXNlIExJQlRBU04xX0lOQ0xVREVfRElSRUNUT1JJRVMgYW5kIExJQlRBU04x
X0xJQlJBUklFUy4KKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZTogRGl0dG8uCisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdXBwb3J0ZWRBbGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnZl
Rm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRTcGtpKToKKwogMjAxNy0wNi0xMyAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyR0xdIFJlbGVhc2UgR3N0VmlkZW9GcmFtZSB3aGVu
IHRoZXJlIGlzIGEgZmx1c2ggZXZlbnQgZnJvbSB0aGUgcGlwZWxpbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDU3YTI4ZTQxZWExNTkyY2NkZjljZTUyNDMzNDEzNGIxYWIzYWY3MTQuLjhhNGFjMzhk
NTJjM2M3MTBlYmZlZjZhZTExODkwNjcxNzFhMGM4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDE3LTA2LTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBv
cnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBmaWxlIHRoYXQgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZyB3aXRo
IGxpYnRhc24xIEFQSXMuCisKKyAgICAgICAgVGhlIHByZWNvbXB1dGVkIEFTTi4xIGRlY2xhcmF0
aW9ucywgZ2VuZXJhdGVkIGZyb20gdGhlIFdlYkNyeXB0by5hc24gZmlsZSB3aXRoCisgICAgICAg
IHRoZSBhc24xUGFyc2VyIHRvb2wsIGFyZSB1c2VkIHRvIGVuYWJsZSBjb25zdHJ1Y3Rpb24gb2Yg
QVNOLjEgc3RydWN0dXJlcyB0aGF0CisgICAgICAgIGFyZSB0aGVuIHVzZWQgdG8gZGVjb2RlIHRo
ZSBTUEtJIG9yIFBLQ1MjOCBkYXRhIHRocm91Z2ggdGhlIGRlY29kZVN0cnVjdHVyZSgpCisgICAg
ICAgIGZ1bmN0aW9uLiBSYXcgZGF0YSBvZiBlYWNoIGVsZW1lbnQgaW4gdGhhdCBzdHJ1Y3R1cmUg
Y2FuIGJlIHJldHJpZXZlZCB0aHJvdWcgdGhlCisgICAgICAgIGVsZW1lbnREYXRhKCkgZnVuY3Rp
b24uCisKKyAgICAgICAgVGhlIFN0cnVjdHVyZSBjbGFzcyBpcyBhZGRlZCBhcyBhIHdyYXBwZXIg
Zm9yIGFzbjFfbm9kZSBvYmplY3RzIHRoYXQgYXJlIHVzZWQKKyAgICAgICAgYXMgZGVjb2Rpbmcg
dGFyZ2V0cywgc2ltcGxpZnlpbmcgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiB0aGVzZSBvYmplY3Rz
LgorCisgICAgICAgICogcGFsL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHBhbC9QbGF0
Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHA6
IEFkZGVkLgorICAgICAgICAoUEFMOjpUQVNOMTo6YXNuMURlZmluaXRpb25zKToKKyAgICAgICAg
KFBBTDo6VEFTTjE6OmRlY29kZVN0cnVjdHVyZSk6CisgICAgICAgIChQQUw6OlRBU04xOjplbGVt
ZW50RGF0YSk6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaDogQWRkZWQu
CisgICAgICAgIChQQUw6OlRBU04xOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUpOgorICAgICAgICAo
UEFMOjpUQVNOMTo6U3RydWN0dXJlOjpvcGVyYXRvciYpOgorICAgICAgICAoUEFMOjpUQVNOMTo6
U3RydWN0dXJlOjpvcGVyYXRvciBhc24xX25vZGUpOgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFz
bjEvV2ViQ3J5cHRvLmFzbjogQWRkZWQuCisKIDIwMTctMDYtMTAgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnRlZCByMjE4MDU2IGJlY2F1c2UgaXQgbWFk
ZSB0aGUgSURFIHJlaW5kZXggY29uc3RhbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2
M2IuLmFmYTVhOWEwNTk4NThjY2IyN2I2MmY3ZTFlMmFlYzhjYzY5M2JiZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMSwzICsxLDUgQEAKIGxpc3QoQVBQ
RU5EIFBBTF9TT1VSQ0VTCiAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3Bw
CisKKyAgICBjcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAogKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNzc1YzE4OTg0YWU4OWI5Y2VhYWIyNWI1N2ZkYTA2
YTFhMTVmYzYzYi4uYWZhNWE5YTA1OTg1OGNjYjI3YjYyZjdlMWUyYWVjOGNjNjkzYmJlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xLDMgKzEsNSBAQAog
bGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKworICAgIGNyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44ZGE4NzljNWVmNjY0ZGUyMTM3YWJjNTg3ZTRlNGZjODdhMGVkYjBiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcApA
QCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwg
R3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUg
PG11dGV4PgorCituYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBUQVNOMSB7CisKK3N0YXRpYyBh
c24xX25vZGUgYXNuMURlZmluaXRpb25zKCkKK3sKKyAgICAvLyBHZW5lcmF0ZWQgd2l0aCBgYXNu
MVBhcnNlciBXZWJDcnlwdG8uYXNuYC4KKworICAgIHN0YXRpYyBhc24xX25vZGUgc19kZWZpbml0
aW9uczsKKyAgICBzdGF0aWMgY29uc3QgYXNuMV9zdGF0aWNfbm9kZSBzX1dlYkNyeXB0b0FTTjFb
XSA9IHsKKyAgICAgICAgeyAiV2ViQ3J5cHRvIiwgNTM2ODcyOTc2LCBudWxscHRyIH0sCisgICAg
ICAgIHsgbnVsbHB0ciwgMTA3Mzc0MTgzNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJTdWJqZWN0
UHVibGljS2V5SW5mbyIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiYWxnb3Jp
dGhtIiwgMTA3Mzc0MTgyNiwgIkFsZ29yaXRobUlkZW50aWZpZXIifSwKKyAgICAgICAgeyAic3Vi
amVjdFB1YmxpY0tleSIsIDYsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiUHJpdmF0ZUtleUluZm8i
LCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgInZlcnNpb24iLCAxMDczNzQxODI2
LCAiVmVyc2lvbiJ9LAorICAgICAgICB7ICJwcml2YXRlS2V5QWxnb3JpdGhtIiwgMTA3Mzc0MTgy
NiwgIlByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyIn0sCisgICAgICAgIHsgInByaXZhdGVL
ZXkiLCAxMDczNzQxODI2LCAiUHJpdmF0ZUtleSJ9LAorICAgICAgICB7ICJhdHRyaWJ1dGVzIiwg
NTM2ODk1NDkwLCAiQXR0cmlidXRlcyJ9LAorICAgICAgICB7IG51bGxwdHIsIDQxMDQsICIwIn0s
CisgICAgICAgIHsgIlZlcnNpb24iLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsg
IlByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyIiwgMTA3Mzc0MTgyNiwgIkFsZ29yaXRobUlk
ZW50aWZpZXIifSwKKyAgICAgICAgeyAiUHJpdmF0ZUtleSIsIDEwNzM3NDE4MzEsIG51bGxwdHIg
fSwKKyAgICAgICAgeyAiQXR0cmlidXRlcyIsIDE2MTA2MTI3NTEsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyBudWxscHRyLCAyLCAiQXR0cmlidXRlIn0sCisgICAgICAgIHsgIkF0dHJpYnV0ZSIsIDE2
MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAidHlwZSIsIDEwNzM3NDE4MzYsIG51bGxw
dHIgfSwKKyAgICAgICAgeyAidmFsdWVzIiwgMiwgIkF0dHJpYnV0ZVNldFZhbHVlIn0sCisgICAg
ICAgIHsgIkF0dHJpYnV0ZVNldFZhbHVlIiwgMTYxMDYxMjc1MSwgbnVsbHB0ciB9LAorICAgICAg
ICB7IG51bGxwdHIsIDEzLCBudWxscHRyIH0sCisgICAgICAgIHsgIkFsZ29yaXRobUlkZW50aWZp
ZXIiLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgImFsZ29yaXRobSIsIDEwNzM3
NDE4MzYsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicGFyYW1ldGVycyIsIDU0MTA4MTYxMywgbnVs
bHB0ciB9LAorICAgICAgICB7ICJhbGdvcml0aG0iLCAxLCBudWxscHRyIH0sCisgICAgICAgIHsg
IkVDUHJpdmF0ZUtleSIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAidmVyc2lv
biIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJpdmF0ZUtleSIsIDEwNzM3
NDE4MzEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicGFyYW1ldGVycyIsIDE2MTA2MzczMTQsICJF
Q1BhcmFtZXRlcnMifSwKKyAgICAgICAgeyBudWxscHRyLCAyMDU2LCAiMCJ9LAorICAgICAgICB7
ICJwdWJsaWNLZXkiLCA1MzY4OTU0OTQsIG51bGxwdHIgfSwKKyAgICAgICAgeyBudWxscHRyLCAy
MDU2LCAiMSJ9LAorICAgICAgICB7ICJFQ1BhcmFtZXRlcnMiLCAxNjEwNjEyNzU0LCBudWxscHRy
IH0sCisgICAgICAgIHsgIm5hbWVkQ3VydmUiLCAxMiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJS
U0FQdWJsaWNLZXkiLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgIm1vZHVsdXMi
LCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInB1YmxpY0V4cG9uZW50IiwgMywg
bnVsbHB0ciB9LAorICAgICAgICB7ICJSU0FQcml2YXRlS2V5IiwgMTYxMDYxMjc0MSwgbnVsbHB0
ciB9LAorICAgICAgICB7ICJ2ZXJzaW9uIiwgMTA3Mzc0MTgyNiwgIlZlcnNpb24ifSwKKyAgICAg
ICAgeyAibW9kdWx1cyIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHVibGlj
RXhwb25lbnQiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInByaXZhdGVFeHBv
bmVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJpbWUxIiwgMTA3Mzc0
MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcmltZTIiLCAxMDczNzQxODI3LCBudWxscHRy
IH0sCisgICAgICAgIHsgImV4cG9uZW50MSIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAiZXhwb25lbnQyIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJjb2Vm
ZmljaWVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAib3RoZXJQcmltZUlu
Zm9zIiwgMTYzODYsICJPdGhlclByaW1lSW5mb3MifSwKKyAgICAgICAgeyAiT3RoZXJQcmltZUlu
Zm9zIiwgMTYxMjcwOTg5OSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJNQVgiLCAxMDc0MjY2MTIy
LCAiMSJ9LAorICAgICAgICB7IG51bGxwdHIsIDIsICJPdGhlclByaW1lSW5mbyJ9LAorICAgICAg
ICB7ICJPdGhlclByaW1lSW5mbyIsIDUzNjg3MDkxNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJw
cmltZSIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiZXhwb25lbnQiLCAxMDcz
NzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgImNvZWZmaWNpZW50IiwgMywgbnVsbHB0ciB9
LAorICAgICAgICB7IG51bGxwdHIsIDAsIG51bGxwdHIgfQorICAgIH07CisKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFn
LCBbXSB7IGFzbjFfYXJyYXkydHJlZShzX1dlYkNyeXB0b0FTTjEsICZzX2RlZmluaXRpb25zLCBu
dWxscHRyKTsgfSk7CisKKyAgICByZXR1cm4gc19kZWZpbml0aW9uczsKK30KKworYm9vbCBkZWNv
ZGVTdHJ1Y3R1cmUoYXNuMV9ub2RlKiByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIGludCByZXQgPSBhc24xX2NyZWF0ZV9l
bGVtZW50KGFzbjFEZWZpbml0aW9ucygpLCBlbGVtZW50TmFtZSwgcm9vdCk7CisgICAgaWYgKHJl
dCAhPSBBU04xX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBkYXRh
U2l6ZSA9IGRhdGEuc2l6ZSgpOworICAgIHJldCA9IGFzbjFfZGVyX2RlY29kaW5nMihyb290LCBk
YXRhLmRhdGEoKSwgJmRhdGFTaXplLCBBU04xX0RFQ09ERV9GTEFHX1NUUklDVF9ERVIsIG51bGxw
dHIpOworICAgIHJldHVybiByZXQgPT0gQVNOMV9TVUNDRVNTOworfQorCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZWxlbWVudERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIq
IGVsZW1lbnROYW1lKQoreworICAgIGludCBsZW5ndGggPSAwOworICAgIHVuc2lnbmVkIHR5cGUg
PSAwOworICAgIGludCByZXQgPSBhc24xX3JlYWRfdmFsdWVfdHlwZShyb290LCBlbGVtZW50TmFt
ZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnR5cGUpOworICAgIGlmIChyZXQgIT0gQVNOMV9NRU1fRVJS
T1IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAodHlwZSA9PSBBU04x
X0VUWVBFX0JJVF9TVFJJTkcpIHsKKyAgICAgICAgaWYgKGxlbmd0aCAlIDgpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBsZW5ndGggLz0gODsKKyAgICB9CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShsZW5ndGgpOworICAgIHJldCA9IGFzbjFfcmVhZF92YWx1
ZShyb290LCBlbGVtZW50TmFtZSwgZGF0YS5kYXRhKCksICZsZW5ndGgpOworICAgIGlmIChyZXQg
IT0gQVNOMV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRBU04xCit9IC8vIG5hbWVzcGFjZSBQQUwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTYzZjQ2NTA2Y2ViZDlkNmYxNWM3OWFmYjA5M2Q1NGJkMDkzNWI5MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGll
cy5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgTWV0cm9sb2dp
Y2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpYnRhc24xLmg+CisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgUEFMIHsK
K25hbWVzcGFjZSBUQVNOMSB7CisKK2NsYXNzIFN0cnVjdHVyZSB7CitwdWJsaWM6CisgICAgU3Ry
dWN0dXJlKCkgPSBkZWZhdWx0OworCisgICAgflN0cnVjdHVyZSgpCisgICAgeworICAgICAgICBh
c24xX2RlbGV0ZV9zdHJ1Y3R1cmUoJm1fc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBTdHJ1Y3R1
cmUoY29uc3QgU3RydWN0dXJlJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlJiBvcGVyYXRvcj0o
Y29uc3QgU3RydWN0dXJlJikgPSBkZWxldGU7CisKKyAgICBTdHJ1Y3R1cmUoU3RydWN0dXJlJiYp
ID0gZGVsZXRlOworICAgIFN0cnVjdHVyZSYgb3BlcmF0b3I9KFN0cnVjdHVyZSYmKSA9IGRlbGV0
ZTsKKworICAgIGFzbjFfbm9kZSogb3BlcmF0b3ImKCkgeyByZXR1cm4gJm1fc3RydWN0dXJlOyB9
CisgICAgb3BlcmF0b3IgYXNuMV9ub2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0K
KworcHJpdmF0ZToKKyAgICBhc24xX25vZGUgbV9zdHJ1Y3R1cmUgeyBudWxscHRyIH07Cit9Owor
Citib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1l
bnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVt
ZW50TmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIFRBU04xCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1dlYkNyeXB0by5h
c24gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9XZWJDcnlwdG8uYXNuCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNhYjE3YmMwNTQwMzczY2Y5YWVjYWE0NzFhOTNiMjA2OWE4MDY1NzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9XZWJDcnlw
dG8uYXNuCkBAIC0wLDAgKzEsNzggQEAKK1dlYkNyeXB0byB7IH0KKworREVGSU5JVElPTlMgRVhQ
TElDSVQgVEFHUyA6Oj0KKworQkVHSU4KKworU3ViamVjdFB1YmxpY0tleUluZm8gOjo9ICBTRVFV
RU5DRSAgeworICBhbGdvcml0aG0gICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyLAorICBzdWJq
ZWN0UHVibGljS2V5ICBCSVQgU1RSSU5HCit9CisKK1ByaXZhdGVLZXlJbmZvIDo6PSBTRVFVRU5D
RSB7CisgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKKyAgcHJpdmF0ZUtleUFs
Z29yaXRobSAgICAgICBQcml2YXRlS2V5QWxnb3JpdGhtSWRlbnRpZmllciwKKyAgcHJpdmF0ZUtl
eSAgICAgICAgICAgICAgICBQcml2YXRlS2V5LAorICBhdHRyaWJ1dGVzICAgICAgICAgICBbMF0g
IElNUExJQ0lUIEF0dHJpYnV0ZXMgT1BUSU9OQUwKK30KKworVmVyc2lvbiA6Oj0gSU5URUdFUgor
CitQcml2YXRlS2V5QWxnb3JpdGhtSWRlbnRpZmllciA6Oj0gQWxnb3JpdGhtSWRlbnRpZmllcgor
CitQcml2YXRlS2V5IDo6PSBPQ1RFVCBTVFJJTkcKKworQXR0cmlidXRlcyA6Oj0gU0VUIE9GIEF0
dHJpYnV0ZQorCitBdHRyaWJ1dGUgOjo9IFNFUVVFTkNFIHsKKyAgIHR5cGUgICAgT0JKRUNUIElE
RU5USUZJRVIsCisgICB2YWx1ZXMgIEF0dHJpYnV0ZVNldFZhbHVlCit9CisKK0F0dHJpYnV0ZVNl
dFZhbHVlIDo6PSBTRVQgT0YgQU5ZCisKK0FsZ29yaXRobUlkZW50aWZpZXIgOjo9ICBTRVFVRU5D
RSAgeworICBhbGdvcml0aG0gICBPQkpFQ1QgSURFTlRJRklFUiwKKyAgcGFyYW1ldGVycyAgQU5Z
IERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCit9CisKK0VDUHJpdmF0ZUtleSA6Oj0gU0VR
VUVOQ0UgeworICB2ZXJzaW9uICAgICAgICBJTlRFR0VSLAorICBwcml2YXRlS2V5ICAgICBPQ1RF
VCBTVFJJTkcsCisgIHBhcmFtZXRlcnMgWzBdIEVDUGFyYW1ldGVycyBPUFRJT05BTCwKKyAgcHVi
bGljS2V5ICBbMV0gQklUIFNUUklORyBPUFRJT05BTAorfQorCitFQ1BhcmFtZXRlcnMgOjo9IENI
T0lDRSB7CisgIG5hbWVkQ3VydmUgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiAtLSBNVVNUIGJl
IHN1cHBvcnRlZC4KKyAgLS0gaW1wbGljaXRDdXJ2ZSAgIE5VTEwgLSBNVVNUIE5PVCBiZSB1c2Vk
LgorICAtLSBzcGVjaWZpZWRDdXJ2ZSAgU3BlY2lmaWVkRUNEb21haW4gLSBNVVNUIE5PVCBiZSB1
c2VkLgorfQorCitSU0FQdWJsaWNLZXkgOjo9IFNFUVVFTkNFIHsKKyAgbW9kdWx1cyAgICAgICAg
ICAgSU5URUdFUiwgIC0tIG4KKyAgcHVibGljRXhwb25lbnQgICAgSU5URUdFUiAgIC0tIGUKK30K
KworUlNBUHJpdmF0ZUtleSA6Oj0gU0VRVUVOQ0UgeworICB2ZXJzaW9uICAgICAgICAgICBWZXJz
aW9uLAorICBtb2R1bHVzICAgICAgICAgICBJTlRFR0VSLCAgLS0gbgorICBwdWJsaWNFeHBvbmVu
dCAgICBJTlRFR0VSLCAgLS0gZQorICBwcml2YXRlRXhwb25lbnQgICBJTlRFR0VSLCAgLS0gZAor
ICBwcmltZTEgICAgICAgICAgICBJTlRFR0VSLCAgLS0gcAorICBwcmltZTIgICAgICAgICAgICBJ
TlRFR0VSLCAgLS0gcQorICBleHBvbmVudDEgICAgICAgICBJTlRFR0VSLCAgLS0gZCBtb2QgKHAt
MSkKKyAgZXhwb25lbnQyICAgICAgICAgSU5URUdFUiwgIC0tIGQgbW9kIChxLTEpCisgIGNvZWZm
aWNpZW50ICAgICAgIElOVEVHRVIsICAtLSAoaW52ZXJzZSBvZiBxKSBtb2QgcAorICBvdGhlclBy
aW1lSW5mb3MgICBPdGhlclByaW1lSW5mb3MgT1BUSU9OQUwKK30KKworT3RoZXJQcmltZUluZm9z
IDo6PSBTRVFVRU5DRSBTSVpFKDEuLk1BWCkgT0YgT3RoZXJQcmltZUluZm8KKworT3RoZXJQcmlt
ZUluZm8gOjo9IFNFUVVFTkNFIHsKKyAgcHJpbWUgSU5URUdFUiwgIC0tIHJpCisgIGV4cG9uZW50
IElOVEVHRVIsIC0tIGRpCisgIGNvZWZmaWNpZW50IElOVEVHRVIgLS0gdGkKK30KKworRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDkwZTFmZTFhZWUwMWFlMmFmMzJiYWYxNzMzMGRi
ZjIwMGY1ODUyN2YuLjQwODYyMjg3Njc4MjYxZTI4MmFkMjZiOWY3ODg3NjIzODY3YWUwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMTksNiArMjE5LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0xJQkdDUllQVF9MSUJSQVJJRVN9CiAgICAgJHtMSUJT
RUNSRVRfTElCUkFSSUVTfQogICAgICR7TElCU09VUF9MSUJSQVJJRVN9CisgICAgJHtMSUJUQVNO
MV9MSUJSQVJJRVN9CiAgICAgJHtMSUJYTUwyX0xJQlJBUklFU30KICAgICAke0xJQlhTTFRfTElC
UkFSSUVTfQogICAgICR7SFlQSEVOX0xJQlJBUklFU30KQEAgLTI0NSw2ICsyNDYsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtMSUJHQ1JZ
UFRfSU5DTFVERV9ESVJTfQogICAgICR7TElCU0VDUkVUX0lOQ0xVREVfRElSU30KICAgICAke0xJ
QlNPVVBfSU5DTFVERV9ESVJTfQorICAgICR7TElCVEFTTjFfSU5DTFVERV9ESVJTfQogICAgICR7
TElCWE1MMl9JTkNMVURFX0RJUn0KICAgICAke0xJQlhTTFRfSU5DTFVERV9ESVJ9CiAgICAgJHtT
UUxJVEVfSU5DTFVERV9ESVJ9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQ
RS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDQxNTcyNzUw
MGVhMzliZTI0OGUyNjJiOWZmNWY4ODkzZWY1NzhhNTUuLmRiMWNkMzI3NzhlYmM3ZDVhZjJhODA0
MTA4ZGNlZDc5M2YyNjgyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BF
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNzEsNiAr
MTcxLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJ
RVN9CiAgICAgJHtMSUJHQ1JZUFRfTElCUkFSSUVTfQogICAgICR7TElCU09VUF9MSUJSQVJJRVN9
CisgICAgJHtMSUJUQVNOMV9MSUJSQVJJRVN9CiAgICAgJHtMSUJYTUwyX0xJQlJBUklFU30KICAg
ICAke0xJQlhTTFRfTElCUkFSSUVTfQogICAgICR7U1FMSVRFX0xJQlJBUklFU30KQEAgLTE4NSw2
ICsxODYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAk
e0lDVV9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJHQ1JZUFRfSU5DTFVERV9ESVJTfQogICAgICR7
TElCU09VUF9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJUQVNOMV9JTkNMVURFX0RJUlN9CiAgICAg
JHtMSUJYTUwyX0lOQ0xVREVfRElSfQogICAgICR7TElCWFNMVF9JTkNMVURFX0RJUn0KICAgICAk
e1NRTElURV9JTkNMVURFX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggNWVmZmQ2YzZhMjBhNzRhNDM4YTQ5MmQwNTU4
NzYxY2IzODk1NGFlYi4uZmVkZjI5OGI5ODc2YzdlYzg1MmZjYjQ3MjRlMzY0MzVkNWY3OWU4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8v
Z2NyeXB0L1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTE5MywxMSArMTk0LDExMCBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpw
bGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIHJldHVy
biBjcmVhdGUoaWRlbnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIHBsYXRm
b3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAKLVJlZlB0cjxDcnlw
dG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXApCitzdGF0aWMgYm9vbCBzdXBwb3J0ZWRBbGdvcml0aG1JZGVudGlmaWVyKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIga2V5SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBhbGdvcml0aG0pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTx1aW50OF90LCAxOD4gc19pZF9lY1B1YmxpY0tleSB7IHsgIjEuMi44NDAu
MTAwNDUuMi4xIiB9IH07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMTM+
IHNfaWRfZWNESCB7IHsgIjEuMy4xMzIuMS4xMiIgfSB9OworCisgICAgc2l6ZV90IHNpemUgPSBh
bGdvcml0aG0uc2l6ZSgpOworCisgICAgc3dpdGNoIChrZXlJZGVudGlmaWVyKSB7CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKKyAgICAgICAgLy8gRUNEU0Egb25s
eSBzdXBwb3J0cyBpZC1lY1B1YmxpY0tleSBhbGdvcml0aG1zIGZvciBpbXBvcnRlZCBrZXlzLgor
ICAgICAgICBpZiAoc2l6ZSA9PSBzX2lkX2VjUHVibGljS2V5LnNpemUoKSAmJiAhc3RkOjptZW1j
bXAoYWxnb3JpdGhtLmRhdGEoKSwgc19pZF9lY1B1YmxpY0tleS5kYXRhKCksIHNpemUpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CisgICAgICAgIC8vIEVDREggc3VwcG9ydHMg
Ym90aCBpZC1lY1B1YmxpY0tleSBhbmQgaWMtZWNESCBhbGdvcml0aG1zIGZvciBpbXBvcnRlZCBr
ZXlzLgorICAgICAgICBpZiAoc2l6ZSA9PSBzX2lkX2VjUHVibGljS2V5LnNpemUoKSAmJiAhc3Rk
OjptZW1jbXAoYWxnb3JpdGhtLmRhdGEoKSwgc19pZF9lY1B1YmxpY0tleS5kYXRhKCksIHNpemUp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzaXplID09IHNfaWRfZWNE
SC5zaXplKCkgJiYgIXN0ZDo6bWVtY21wKGFsZ29yaXRobS5kYXRhKCksIHNfaWRfZWNESC5kYXRh
KCksIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVG
b3JJZGVudGlmaWVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIHN0
YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDIwPiBzX3NlY3AyNTZyMSB7IHsgIjEuMi44
NDAuMTAwNDUuMy4xLjciIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90
LCAxMz4gc19zZWNwMzg0cjEgeyB7ICIxLjMuMTMyLjAuMzQiIH0gfTsKKyAgICBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4gc19zZWNwNTIxcjEgeyB7ICIxLjMuMTMyLjAuMzUi
IH0gfTsKKworICAgIGlmIChzaXplID09IHNfc2VjcDI1NnIxLnNpemUoKSAmJiAhc3RkOjptZW1j
bXAoZGF0YSwgc19zZWNwMjU2cjEuZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIENyeXB0
b0tleUVDOjpOYW1lZEN1cnZlOjpQMjU2OworICAgIGlmIChzaXplID09IHNfc2VjcDM4NHIxLnNp
emUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwMzg0cjEuZGF0YSgpLCBzaXplKSkKKyAg
ICAgICAgcmV0dXJuIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQMzg0OworICAgIGlmIChzaXpl
ID09IHNfc2VjcDUyMXIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwNTIxcjEu
ZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgLy8gTm90IHlldCBz
dXBwb3J0ZWQuCisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitSZWZQdHI8Q3J5cHRv
S2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBr
ZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCit7
CisgICAgLy8gRGVjb2RlIHRoZSBgU3ViamVjdFB1YmxpY0tleUluZm9gIHN0cnVjdHVyZSB1c2lu
ZyB0aGUgcHJvdmlkZWQga2V5IGRhdGEuCisgICAgUEFMOjpUQVNOMTo6U3RydWN0dXJlIHNwa2k7
CisgICAgaWYgKCFQQUw6OlRBU04xOjpkZWNvZGVTdHJ1Y3R1cmUoJnNwa2ksICJXZWJDcnlwdG8u
U3ViamVjdFB1YmxpY0tleUluZm8iLCBrZXlEYXRhKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAvLyBWYWxpZGF0ZSBgYWxnb3JpdGhtLmFsZ29yaXRobWAuCisgICAgeworICAgICAg
ICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKHNwa2ksICJhbGdvcml0
aG0uYWxnb3JpdGhtIik7CisgICAgICAgIGlmICghYWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRBbGdvcml0aG1JZGVudGlmaWVy
KGlkZW50aWZpZXIsICphbGdvcml0aG0pKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgLy8gVmFsaWRhdGUgYGFsZ29yaXRobS5wYXJhbWV0ZXJzYCBhbmQgdGhlcmVp
biBlbWJlZGRlZCBgRUNQYXJhbWV0ZXJzYC4KKyAgICB7CisgICAgICAgIGF1dG8gcGFyYW1ldGVy
cyA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKHNwa2ksICJhbGdvcml0aG0ucGFyYW1ldGVycyIp
OworICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICAvLyBEZWNvZGUgdGhlIGBFQ1BhcmFtZXRlcnNgIHN0cnVjdHVyZSB1c2luZyB0
aGUgYGFsZ29yaXRobS5wYXJhbWV0ZXJzYCBkYXRhLgorICAgICAgICBQQUw6OlRBU04xOjpTdHJ1
Y3R1cmUgZWNQYXJhbWV0ZXJzOworICAgICAgICBpZiAoIVBBTDo6VEFTTjE6OmRlY29kZVN0cnVj
dHVyZSgmZWNQYXJhbWV0ZXJzLCAiV2ViQ3J5cHRvLkVDUGFyYW1ldGVycyIsICpwYXJhbWV0ZXJz
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gbmFtZWRDdXJ2
ZSA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKGVjUGFyYW1ldGVycywgIm5hbWVkQ3VydmUiKTsK
KyAgICAgICAgaWYgKCFuYW1lZEN1cnZlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgYXV0byBwYXJhbWV0ZXJDdXJ2ZSA9IGN1cnZlRm9ySWRlbnRpZmllcihuYW1lZEN1
cnZlLT5kYXRhKCksIG5hbWVkQ3VydmUtPnNpemUoKSk7CisgICAgICAgIGlmICghcGFyYW1ldGVy
Q3VydmUgfHwgKnBhcmFtZXRlckN1cnZlICE9IGN1cnZlKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgLy8gUmV0cmlldmUgdGhlIGBzdWJqZWN0UHVibGljS2V5YCBk
YXRhIGFuZCBlbWJlZCBpdCBpbnRvIHRoZSBgcHVibGljLWtleWAgcy1leHByZXNzaW9uLgorICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHBsYXRmb3JtS2V5OworICAgIHsKKyAg
ICAgICAgYXV0byBzdWJqZWN0UHVibGljS2V5ID0gUEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoc3Br
aSwgInN1YmplY3RQdWJsaWNLZXkiKTsKKyAgICAgICAgaWYgKCFzdWJqZWN0UHVibGljS2V5KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gQmFpbCBpZiB0aGUgYHN1
YmplY3RQdWJsaWNLZXlgIGRhdGEgc2l6ZSBkb2Vzbid0IG1hdGNoIHRoZSBzaXplIG9mIGFuIHVu
Y29tcHJlc3NlZCBwb2ludAorICAgICAgICAvLyBmb3IgdGhpcyBjdXJ2ZSwgb3IgaWYgdGhlIGZp
cnN0IGJ5dGUgaW4gdGhlIGBzdWJqZWN0UHVibGljS2V5YCBkYXRhIGlzbid0IDB4MDQsIGFzIHJl
cXVpcmVkCisgICAgICAgIC8vIGZvciBhbiB1bmNvbXByZXNzZWQgRUMgcG9pbnQgZW5jb2RlZCBp
biBhbiBvY3RldCBzdHJpbmcuCisgICAgICAgIGlmICh1bmNvbXByZXNzZWRQb2ludFNpemVGb3JD
dXJ2ZShjdXJ2ZSkgIT0gc3ViamVjdFB1YmxpY0tleS0+c2l6ZSgpIHx8IHN1YmplY3RQdWJsaWNL
ZXktPmF0KDApICE9IDB4MDQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJnBsYXRmb3JtS2V5LCBudWxs
cHRyLCAiKHB1YmxpYy1rZXkoZWNjKGN1cnZlICVzKShxICViKSkpIiwKKyAgICAgICAgICAgIGN1
cnZlTmFtZShjdXJ2ZSksIHN1YmplY3RQdWJsaWNLZXktPnNpemUoKSwgc3ViamVjdFB1YmxpY0tl
eS0+ZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAg
ICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZpbmFsbHkgY3JlYXRlIGEg
bmV3IENyeXB0b0tleUVDIG9iamVjdCwgdHJhbnNmZXJyaW5nIHRvIGl0IG93bmVyc2hpcCBvZiB0
aGUgYHB1YmxpYy1rZXlgIHMtZXhwcmVzc2lvbi4KKyAgICByZXR1cm4gY3JlYXRlKGlkZW50aWZp
ZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwg
ZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAKIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRD
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRMaWJ0YXNuMS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9G
aW5kTGlidGFzbjEuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ2NDMxZjIxOTQ2ZTJiYzRlODQ4ZWEzNmZi
YWIwMTY4OTNiMWNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kTGlidGFz
bjEuY21ha2UKQEAgLTAsMCArMSw0NCBAQAorIyAtIFRyeSB0byBmaW5kIGxpYnRhc24xLgorIyBP
bmNlIGRvbmUsIHRoaXMgd2lsbCBkZWZpbmUKKyMKKyMgIExJQlRBU04xX0lOQ0xVREVfRElSUyAt
IHRoZSBsaWJ0YXNuMSBpbmNsdWRlIGRpcmVjdG9yaWVzCisjICBMSUJUQVNOMV9MSUJSQVJJRVMg
LSB0aGUgbGlidGFzbjEgbGlicmFyaWVzLgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTcgTWV0cm9s
b2dpY2FsIEdyb3VwIEIuVi4KKyMgQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtnQ29u
ZmlnKQorcGtnX2NoZWNrX21vZHVsZXMoUENfTElCVEFTTjEgbGlidGFzbjEpCisKK2ZpbmRfcGF0
aChMSUJUQVNOMV9JTkNMVURFX0RJUlMKKyAgICBOQU1FUyBsaWJ0YXNuMS5oCisgICAgUEFUSFMg
JHtQQ19MSUJUQVNOMV9JTkNMVURFRElSfSAke1BDX0xJQlRBU04xX0lOQ0xVREVfRElSU30KKykK
KworZmluZF9saWJyYXJ5KExJQlRBU04xX0xJQlJBUklFUworICAgIE5BTUVTIHRhc24xCisgICAg
UEFUSFMgJHtQQ19MSUJUQVNOMV9MSUJESVJ9ICR7UENfTElCVEFTTjFfTElCUkFSWV9ESVJTfQor
KQorCittYXJrX2FzX2FkdmFuY2VkKExJQlRBU04xX0lOQ0xVREVfRElSUyBMSUJUQVNOMV9MSUJS
QVJJRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGRmMzA5NjJlNmY5N2UwMzk2N2ZmY2QzMGFm
YWQwZjEyNDQwNmE2NmUuLmY3YTgwMTgwMjAxOTk3Y2E4YjUyZWE3M2NkYThiYjdiZDI0ZjIzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0yNzEsNiArMjcxLDcgQEAgaWYgKEVOQUJMRV9NRURJ
QV9TVFJFQU0gT1IgRU5BQkxFX1dFQl9SVEMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRM
RV9DUllQVE8pCisgICAgZmluZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQogICAgIGlmIChM
SUJHQ1JZUFRfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMS43LjApCiAgICAgICAgIG1lc3NhZ2UoRkFU
QUxfRVJST1IgImxpYmdjcnlwdCAxLjcuMCBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViIENyeXB0
byBBUEkgc3VwcG9ydC4iKQogICAgIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IGRj
NWNhYWYzODgzYWJhMjM0MWNjZGYxOTk3NWYzNDY5OWI2Y2E1MDYuLmM3OTk1MzY5YjEyMTFlMDVm
NTAxN2YzMmNjNDg1Y2Q3MDc5NzQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0xMTksNiAr
MTE5LDcgQEAgaWYgKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiBlbmRpZiAoKQogCiBp
ZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCisgICAgZmluZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJ
UkVEKQogICAgIGlmIChMSUJHQ1JZUFRfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMS43LjApCiAgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYmdjcnlwdCAxLjcuMCBpcyByZXF1aXJlZCB0byBl
bmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9ydC4iKQogICAgIGVuZGlmICgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGY5
YmQyZjQ4YWQxMTZmM2IwMTZjYzllMzY2YjQwOWQ4YTc3ODA1ZS4uMTNiMWRlODUzZmVkZDI0Y2Y4
Y2Y5MWIzMzMwMWIzNTk2NWJhYzA5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA2LTEz
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0
XSBJbXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICBVbnNraXAgRUMtYmFzZWQgU1BLSSBpbXBvcnQgdGVzdHMgdGhhdCBhcmUg
bm93IHBhc3NpbmcuCisKIDIwMTctMDYtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpbHRlciBTRFAgZnJvbSBJQ0UgY2FuZGlkYXRlcyBpbiBjYXNlIG9m
IGxvY2FsIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGUyNTU3NjhhN2Q3MTRlNmEyNWZhMDkxOTlkMzc1ODU4MTFl
ZmI3MDUuLmE0OTA5NjgyMWY4ZjY5YmE1N2I4YmJhODU5ODA1OGI0NmU5MTgzMjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC03NzAsMjAgKzc3MCwxNSBA
QCB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQt
a2V5LXNwa2ktcDI1Ni5odG1sIFsgU2tpcAogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3Vi
dGxlL2VjZGgtZ2VuZXJhdGUtZXhwb3J0LWtleS1zcGtpLXAzODQuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXBrY3M4LWtleS1wMjU2
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWlt
cG9ydC1wa2NzOC1rZXktcDM4NC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNy
eXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtc3BraS1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtc3BraS1rZXktcDM4NC5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2Vu
ZXJhdGUtZXhwb3J0LWtleS1wa2NzOC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIy
IGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUtZXhwb3J0LWtleS1zcGtpLmh0bWwgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQtcGtjczgt
a2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2Rz
YS1pbXBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vc3VidGxlL2VjLWltcG9ydC1qd2sta2V5LWV4cG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1qd2sta2V5LWV4
cG9ydC1zcGtpLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9z
dWJ0bGUvZWMtaW1wb3J0LXJhdy1rZXktZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9y
dC1qd2sta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRs
ZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1wa2NzOC1rZXktcDI1Ni5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS1l
eHBvcnQtcGtjczgta2V5LXAzODQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBj
cnlwdG8vc3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS1leHBvcnQtandrLWtleS5odG1sIFsgU2tp
cCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5
LWV4cG9ydC1yYXcta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRv
L3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXktZXhwb3J0LXNwa2kta2V5LXAyNTYuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1zcGtpLWtl
eS1leHBvcnQtc3BraS1rZXktcDM4NC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIy
IGNyeXB0by9zdWJ0bGUvcnNhLWV4cG9ydC1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBb
IFNraXAgXQpAQCAtODI5LDcgKzgyNCw2IEBAIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dv
cmtlcnMvc3VidGxlL2Flcy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtZ2VuZXJhdGUtZXhwb3J0LXBr
Y3M4LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJz
L3N1YnRsZS9lYy1nZW5lcmF0ZS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS5o
dG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9l
Yy1pbXBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2htYWMtcG9zdE1lc3NhZ2Ut
d29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMv
c3VidGxlL2hyc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzZjEwNDVjYmMzYmE1YzM5MGE1MzZkMmFjMGE4
ZGNkNDFmOTRiMTVmLi40Zjg0NzZjOWI0MzgzYTg2ZTlkMWI4YmZhNjZlODFkNjczMjNiMDU0IDEw
MDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTctMDYtMTMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjkyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRM
aWJ0YXNuMS5jbWFrZTogQWRkZWQuCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2U6IFJlcXVpcmUgbGlidGFzbjEgd2hlbiBTVUJUTEVfQ1JZUFRPIGlzIGVuYWJsZWQuCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6IERpdHRvLgorCiAyMDE3LTA2
LTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BF
XSBFbmFibGUgRU5DUllQVEVEX01FRElBIGZvciBidWlsZC13ZWJraXQgYnVpbGRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313064</attachid>
            <date>2017-06-16 01:27:38 -0700</date>
            <delta_ts>2017-06-18 13:01:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172927-20170616102737.patch</filename>
            <type>text/plain</type>
            <size>31842</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYzk2ZDdhN2IwY2Q1
ZWM5MzE3NmUwZDI5ZjcyZDRlNGVmMGVhYi4uM2NlY2JhMmE3OWE1MWYyZDg5OTA1YWZkYmY1MzFk
NTA3MGE3YWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTE2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBpbXBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgVXNpbmcgbGlidGFzbjEgdGhyb3VnaCB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHdyYXBw
ZXJzLCB0aGUgZ2l2ZW4ga2V5IGRhdGEKKyAgICAgICAgaXMgZGVjb2RlZCBhZ2FpbnN0IHRoZSBT
dWJqZWN0UHVibGljS2V5SW5mbyBBU04uMSBkZWZpbml0aW9uLiBUaGUgYWxnb3JpdGhtCisgICAg
ICAgIG1lbWJlciBpcyB0aGVuIHByb3Blcmx5IHZhbGlkYXRlZCwgbWFraW5nIHN1cmUgdGhhdCB0
aGUga2V5IGFsZ29yaXRobSBpZGVuZml0aWVyCisgICAgICAgIGlzIHN1cHBvcnRlZCBhbmQgdGhh
dCB0aGUgYWxnb3JpdGhtIHBhcmFtZXRlcnMgc3BlY2lmeSB0aGUgY29ycmVjdCBFQyBjdXJ2ZS4K
KworICAgICAgICBUaGUgcHVibGljIGtleSBiaXQgc3RyaW5nIGlzIHRoZW4gcmV0cmlldmVkIGFu
ZCB2YWxpZGF0ZWQsIGVuc3VyaW5nIGl0IHJlcHJlc2VudHMKKyAgICAgICAgYW4gdW5jb21wcmVz
c2VkIEVDIHBvaW50IHRoYXQgaXMgb2YgdmFsaWQgc2l6ZSBmb3IgdGhlIHNwZWNpZmllZCBFQyBj
dXJ2ZS4gVGhlCisgICAgICAgIHBvaW50IGlzIHRoZW4gdGVzdGVkIHRocm91Z2ggYW4gRUMgY29u
dGV4dCB0byBtYWtlIHN1cmUgaXQncyBwb3NpdGlvbmVkIG9uIHRoZQorICAgICAgICBzcGVjaWZp
ZWQgRUMgY3VydmUuCisKKyAgICAgICAgRmluYWxseSwgdGhlIGN1cnZlIG5hbWUgYW5kIHVuY29t
cHJlc3NlZCBwb2ludCBkYXRhIGFyZSBlbWJlZGRlZCBpbnRvIGEKKyAgICAgICAgYHB1YmxpYy1r
ZXlgIHMtZXhwcmVzc2lvbiB0aGF0IHdpbGwgYmUgdXNlZCB0aHJvdWdoIHRoZSBsaWJnY3J5cHQg
QVBJLiBUaGlzIGlzCisgICAgICAgIHRoZW4gdXNlZCwgYWxvbmcgd2l0aCBvdGhlciBpbmZvcm1h
dGlvbiwgdG8gY3JlYXRlIGEgdmFsaWQgQ3J5cHRvS2V5RUMgb2JqZWN0LgorCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IFVzZSBMSUJUQVNOMV9JTkNMVURFX0RJUkVDVE9SSUVTIGFuZCBM
SUJUQVNOMV9MSUJSQVJJRVMuCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IERpdHRvLgor
ICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJ2ZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0U3BraSk6CisKIDIwMTctMDYtMTUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhIEpTUnVuTG9vcFRpbWVyIHJlZ2lzdHJ5IGluIFZNLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggNTdhMjhlNDFlYTE1OTJjY2RmOWNlNTI0MzM0MTM0YjFhYjNh
ZjcxNC4uNWRhZjQwNjhhYTA1MmU1MzY4NDUwZGQyZjhiYTRiYTA0NjhkOWY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDYtMTYgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9L
ZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MjkyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhIGZpbGUgdGhhdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Ig
b3BlcmF0aW5nIHdpdGggbGlidGFzbjEgQVBJcy4KKworICAgICAgICBUaGUgcHJlY29tcHV0ZWQg
QVNOLjEgZGVjbGFyYXRpb25zLCBnZW5lcmF0ZWQgZnJvbSB0aGUgV2ViQ3J5cHRvLmFzbiBmaWxl
IHdpdGgKKyAgICAgICAgdGhlIGFzbjFQYXJzZXIgdG9vbCwgYXJlIHVzZWQgdG8gZW5hYmxlIGNv
bnN0cnVjdGlvbiBvZiBBU04uMSBzdHJ1Y3R1cmVzIHRoYXQKKyAgICAgICAgYXJlIHRoZW4gdXNl
ZCB0byBkZWNvZGUgdGhlIFNQS0kgb3IgUEtDUyM4IGRhdGEgdGhyb3VnaCB0aGUgZGVjb2RlU3Ry
dWN0dXJlKCkKKyAgICAgICAgZnVuY3Rpb24uIFJhdyBkYXRhIG9mIGVhY2ggZWxlbWVudCBpbiB0
aGF0IHN0cnVjdHVyZSBjYW4gYmUgcmV0cmlldmVkIHRocm91ZyB0aGUKKyAgICAgICAgZWxlbWVu
dERhdGEoKSBmdW5jdGlvbi4KKworICAgICAgICBUaGUgU3RydWN0dXJlIGNsYXNzIGlzIGFkZGVk
IGFzIGEgd3JhcHBlciBmb3IgYXNuMV9ub2RlIG9iamVjdHMgdGhhdCBhcmUgdXNlZAorICAgICAg
ICBhcyBkZWNvZGluZyB0YXJnZXRzLCBzaW1wbGlmeWluZyBsaWZldGltZSBtYW5hZ2VtZW50IG9m
IHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAgKiBwYWwvUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogcGFsL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAgIChQQUw6OlRBU04xOjphc24xRGVmaW5pdGlv
bnMpOgorICAgICAgICAoUEFMOjpUQVNOMTo6ZGVjb2RlU3RydWN0dXJlKToKKyAgICAgICAgKFBB
TDo6VEFTTjE6OmVsZW1lbnREYXRhKToKKyAgICAgICAgKiBwYWwvY3J5cHRvL3Rhc24xL1V0aWxp
dGllcy5oOiBBZGRlZC4KKyAgICAgICAgKFBBTDo6VEFTTjE6OlN0cnVjdHVyZTo6flN0cnVjdHVy
ZSk6CisgICAgICAgIChQQUw6OlRBU04xOjpTdHJ1Y3R1cmU6Om9wZXJhdG9yJik6CisgICAgICAg
IChQQUw6OlRBU04xOjpTdHJ1Y3R1cmU6Om9wZXJhdG9yIGFzbjFfbm9kZSk6CisgICAgICAgICog
cGFsL2NyeXB0by90YXNuMS9XZWJDcnlwdG8uYXNuOiBBZGRlZC4KKwogMjAxNy0wNi0xMCAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydGVkIHIyMTgwNTYg
YmVjYXVzZSBpdCBtYWRlIHRoZSBJREUgcmVpbmRleCBjb25zdGFudGx5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNzc1YzE4OTg0YWU4OWI5Y2VhYWIyNWI1
N2ZkYTA2YTFhMTVmYzYzYi4uYWZhNWE5YTA1OTg1OGNjYjI3YjYyZjdlMWUyYWVjOGNjNjkzYmJl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDMgKzEs
NSBAQAogbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0Rp
Z2VzdEdDcnlwdC5jcHAKKworICAgIGNyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCiApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3NzVjMTg5ODRhZTg5Yjlj
ZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiLi5hZmE1YTlhMDU5ODU4Y2NiMjdiNjJmN2UxZTJhZWM4
Y2M2OTNiYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BF
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKQEAg
LTEsMyArMSw1IEBACiBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorCisgICAgY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAK
ICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRmZGYwNTUxN2U2MDEwY2IwODQyZWM1NDU1NzY1MjMwODU2NTc1NDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9V
dGlsaXRpZXMuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5o
IgorCisjaW5jbHVkZSA8bXV0ZXg+CisKK25hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFRBU04x
IHsKKworc3RhdGljIGFzbjFfbm9kZSBhc24xRGVmaW5pdGlvbnMoKQoreworICAgIC8vIEdlbmVy
YXRlZCB3aXRoIGBhc24xUGFyc2VyIFdlYkNyeXB0by5hc25gLgorCisgICAgc3RhdGljIGFzbjFf
bm9kZSBzX2RlZmluaXRpb25zOworICAgIHN0YXRpYyBjb25zdCBhc24xX3N0YXRpY19ub2RlIHNf
V2ViQ3J5cHRvQVNOMVtdID0geworICAgICAgICB7ICJXZWJDcnlwdG8iLCA1MzY4NzI5NzYsIG51
bGxwdHIgfSwKKyAgICAgICAgeyBudWxscHRyLCAxMDczNzQxODM2LCBudWxscHRyIH0sCisgICAg
ICAgIHsgIlN1YmplY3RQdWJsaWNLZXlJbmZvIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAg
ICAgICB7ICJhbGdvcml0aG0iLCAxMDczNzQxODI2LCAiQWxnb3JpdGhtSWRlbnRpZmllciJ9LAor
ICAgICAgICB7ICJzdWJqZWN0UHVibGljS2V5IiwgNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJB
bGdvcml0aG1JZGVudGlmaWVyIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJh
bGdvcml0aG0iLCAxMDczNzQxODM2LCBudWxscHRyIH0sCisgICAgICAgIHsgInBhcmFtZXRlcnMi
LCA1NDEwODE2MTMsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiYWxnb3JpdGhtIiwgMSwgbnVsbHB0
ciB9LAorICAgICAgICB7ICJQcml2YXRlS2V5SW5mbyIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwK
KyAgICAgICAgeyAidmVyc2lvbiIsIDEwNzM3NDE4MjYsICJWZXJzaW9uIn0sCisgICAgICAgIHsg
InByaXZhdGVLZXlBbGdvcml0aG0iLCAxMDczNzQxODI2LCAiUHJpdmF0ZUtleUFsZ29yaXRobUlk
ZW50aWZpZXIifSwKKyAgICAgICAgeyAicHJpdmF0ZUtleSIsIDEwNzM3NDE4MjYsICJQcml2YXRl
S2V5In0sCisgICAgICAgIHsgImF0dHJpYnV0ZXMiLCA1MzY4OTU0OTAsICJBdHRyaWJ1dGVzIn0s
CisgICAgICAgIHsgbnVsbHB0ciwgNDEwNCwgIjAifSwKKyAgICAgICAgeyAiVmVyc2lvbiIsIDEw
NzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiUHJpdmF0ZUtleUFsZ29yaXRobUlkZW50
aWZpZXIiLCAxMDczNzQxODI2LCAiQWxnb3JpdGhtSWRlbnRpZmllciJ9LAorICAgICAgICB7ICJQ
cml2YXRlS2V5IiwgMTA3Mzc0MTgzMSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJBdHRyaWJ1dGVz
IiwgMTYxMDYxMjc1MSwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDIsICJBdHRyaWJ1
dGUifSwKKyAgICAgICAgeyAiQXR0cmlidXRlIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAg
ICAgICB7ICJ0eXBlIiwgMTA3Mzc0MTgzNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2YWx1ZXMi
LCAyLCAiQXR0cmlidXRlU2V0VmFsdWUifSwKKyAgICAgICAgeyAiQXR0cmlidXRlU2V0VmFsdWUi
LCAxNjEwNjEyNzUxLCBudWxscHRyIH0sCisgICAgICAgIHsgbnVsbHB0ciwgMTMsIG51bGxwdHIg
fSwKKyAgICAgICAgeyAiRUNQYXJhbWV0ZXJzIiwgMTYxMDYxMjc1NCwgbnVsbHB0ciB9LAorICAg
ICAgICB7ICJuYW1lZEN1cnZlIiwgMTIsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiRUNQcml2YXRl
S2V5IiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2ZXJzaW9uIiwgMTA3Mzc0
MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcml2YXRlS2V5IiwgMTA3Mzc0MTgzMSwgbnVs
bHB0ciB9LAorICAgICAgICB7ICJwYXJhbWV0ZXJzIiwgMTYxMDYzNzMxNCwgIkVDUGFyYW1ldGVy
cyJ9LAorICAgICAgICB7IG51bGxwdHIsIDIwNTYsICIwIn0sCisgICAgICAgIHsgInB1YmxpY0tl
eSIsIDUzNjg5NTQ5NCwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDIwNTYsICIxIn0s
CisgICAgICAgIHsgIlJTQVB1YmxpY0tleSIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAibW9kdWx1cyIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHVibGlj
RXhwb25lbnQiLCAzLCBudWxscHRyIH0sCisgICAgICAgIHsgIlJTQVByaXZhdGVLZXkiLCAxNjEw
NjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgInZlcnNpb24iLCAxMDczNzQxODI2LCAiVmVy
c2lvbiJ9LAorICAgICAgICB7ICJtb2R1bHVzIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAg
ICAgICB7ICJwdWJsaWNFeHBvbmVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAg
eyAicHJpdmF0ZUV4cG9uZW50IiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJw
cmltZTEiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInByaW1lMiIsIDEwNzM3
NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiZXhwb25lbnQxIiwgMTA3Mzc0MTgyNywgbnVs
bHB0ciB9LAorICAgICAgICB7ICJleHBvbmVudDIiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisg
ICAgICAgIHsgImNvZWZmaWNpZW50IiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7
ICJvdGhlclByaW1lSW5mb3MiLCAxNjM4NiwgIk90aGVyUHJpbWVJbmZvcyJ9LAorICAgICAgICB7
ICJPdGhlclByaW1lSW5mb3MiLCAxNjEyNzA5ODk5LCBudWxscHRyIH0sCisgICAgICAgIHsgIk1B
WCIsIDEwNzQyNjYxMjIsICIxIn0sCisgICAgICAgIHsgbnVsbHB0ciwgMiwgIk90aGVyUHJpbWVJ
bmZvIn0sCisgICAgICAgIHsgIk90aGVyUHJpbWVJbmZvIiwgNTM2ODcwOTE3LCBudWxscHRyIH0s
CisgICAgICAgIHsgInByaW1lIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJl
eHBvbmVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiY29lZmZpY2llbnQi
LCAzLCBudWxscHRyIH0sCisgICAgICAgIHsgbnVsbHB0ciwgMCwgbnVsbHB0ciB9CisgICAgfTsK
KworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9v
bmNlKHNfb25jZUZsYWcsIFtdIHsgYXNuMV9hcnJheTJ0cmVlKHNfV2ViQ3J5cHRvQVNOMSwgJnNf
ZGVmaW5pdGlvbnMsIG51bGxwdHIpOyB9KTsKKworICAgIHJldHVybiBzX2RlZmluaXRpb25zOwor
fQorCitib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVs
ZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCit7CisgICAgaW50IHJldCA9
IGFzbjFfY3JlYXRlX2VsZW1lbnQoYXNuMURlZmluaXRpb25zKCksIGVsZW1lbnROYW1lLCByb290
KTsKKyAgICBpZiAocmV0ICE9IEFTTjFfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaW50IGRhdGFTaXplID0gZGF0YS5zaXplKCk7CisgICAgcmV0ID0gYXNuMV9kZXJfZGVj
b2RpbmcyKHJvb3QsIGRhdGEuZGF0YSgpLCAmZGF0YVNpemUsIEFTTjFfREVDT0RFX0ZMQUdfU1RS
SUNUX0RFUiwgbnVsbHB0cik7CisgICAgcmV0dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9v
dCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCit7CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAg
dW5zaWduZWQgdHlwZSA9IDA7CisgICAgaW50IHJldCA9IGFzbjFfcmVhZF92YWx1ZV90eXBlKHJv
b3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3RoLCAmdHlwZSk7CisgICAgaWYgKHJldCAh
PSBBU04xX01FTV9FUlJPUikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICh0eXBlID09IEFTTjFfRVRZUEVfQklUX1NUUklORykgeworICAgICAgICBpZiAobGVuZ3RoICUg
OCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGxlbmd0aCAvPSA4
OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGxlbmd0aCk7CisgICAgcmV0ID0g
YXNuMV9yZWFkX3ZhbHVlKHJvb3QsIGVsZW1lbnROYW1lLCBkYXRhLmRhdGEoKSwgJmxlbmd0aCk7
CisgICAgaWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgVEFTTjEKK30gLy8g
bmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
dGFzbjEvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9V
dGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjNmNDY1MDZjZWJkOWQ2ZjE1Yzc5YWZiMDkzZDU0YmQw
OTM1YjkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
dGFzbjEvVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGlidGFzbjEuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFRBU04xIHsKKworY2xhc3MgU3RydWN0dXJlIHsKK3B1
YmxpYzoKKyAgICBTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7CisKKyAgICB+U3RydWN0dXJlKCkKKyAg
ICB7CisgICAgICAgIGFzbjFfZGVsZXRlX3N0cnVjdHVyZSgmbV9zdHJ1Y3R1cmUpOworICAgIH0K
KworICAgIFN0cnVjdHVyZShjb25zdCBTdHJ1Y3R1cmUmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1
cmUmIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmUmKSA9IGRlbGV0ZTsKKworICAgIFN0cnVjdHVy
ZShTdHJ1Y3R1cmUmJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlJiBvcGVyYXRvcj0oU3RydWN0
dXJlJiYpID0gZGVsZXRlOworCisgICAgYXNuMV9ub2RlKiBvcGVyYXRvciYoKSB7IHJldHVybiAm
bV9zdHJ1Y3R1cmU7IH0KKyAgICBvcGVyYXRvciBhc24xX25vZGUoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZTsgfQorCitwcml2YXRlOgorICAgIGFzbjFfbm9kZSBtX3N0cnVjdHVyZSB7IG51
bGxwdHIgfTsKK307CisKK2Jvb2wgZGVjb2RlU3RydWN0dXJlKGFzbjFfbm9kZSogcm9vdCwgY29u
c3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CitzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZWxlbWVudERhdGEoYXNuMV9ub2RlIHJvb3QsIGNv
bnN0IGNoYXIqIGVsZW1lbnROYW1lKTsKKworfSAvLyBuYW1lc3BhY2UgVEFTTjEKK30gLy8gbmFt
ZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFz
bjEvV2ViQ3J5cHRvLmFzbiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1dl
YkNyeXB0by5hc24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgxM2I4OTY0MTI0NzM1MzQ3MTc5NTFmZjY1YmI0ODNh
OGMyODM3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L3Rhc24xL1dlYkNyeXB0by5hc24KQEAgLTAsMCArMSw5MCBAQAorV2ViQ3J5cHRvIHsgfQorCitE
RUZJTklUSU9OUyBFWFBMSUNJVCBUQUdTIDo6PQorCitCRUdJTgorCistLSBodHRwOi8vd3d3Lmll
dGYub3JnL3JmYy9yZmM1MjgwLnR4dCBBcHBlbmRpeCBBLjEKKworU3ViamVjdFB1YmxpY0tleUlu
Zm8gOjo9ICBTRVFVRU5DRSAgeworICBhbGdvcml0aG0gICAgICAgICBBbGdvcml0aG1JZGVudGlm
aWVyLAorICBzdWJqZWN0UHVibGljS2V5ICBCSVQgU1RSSU5HCit9CisKK0FsZ29yaXRobUlkZW50
aWZpZXIgOjo9ICBTRVFVRU5DRSAgeworICBhbGdvcml0aG0gICBPQkpFQ1QgSURFTlRJRklFUiwK
KyAgcGFyYW1ldGVycyAgQU5ZIERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCit9CisKKy0t
IGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzUyMDgudHh0IEFwcGVuZGl4IEEKKworUHJpdmF0
ZUtleUluZm8gOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICBWZXJz
aW9uLAorICBwcml2YXRlS2V5QWxnb3JpdGhtICAgICAgIFByaXZhdGVLZXlBbGdvcml0aG1JZGVu
dGlmaWVyLAorICBwcml2YXRlS2V5ICAgICAgICAgICAgICAgIFByaXZhdGVLZXksCisgIGF0dHJp
YnV0ZXMgICAgICAgICAgIFswXSAgSU1QTElDSVQgQXR0cmlidXRlcyBPUFRJT05BTAorfQorCitW
ZXJzaW9uIDo6PSBJTlRFR0VSCisKK1ByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyIDo6PSBB
bGdvcml0aG1JZGVudGlmaWVyCisKK1ByaXZhdGVLZXkgOjo9IE9DVEVUIFNUUklORworCitBdHRy
aWJ1dGVzIDo6PSBTRVQgT0YgQXR0cmlidXRlCisKK0F0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0Ugewor
ICB0eXBlICAgIE9CSkVDVCBJREVOVElGSUVSLAorICB2YWx1ZXMgIEF0dHJpYnV0ZVNldFZhbHVl
Cit9CisKK0F0dHJpYnV0ZVNldFZhbHVlIDo6PSBTRVQgT0YgQU5ZCisKKy0tIGh0dHA6Ly93d3cu
aWV0Zi5vcmcvcmZjL3JmYzU0ODAudHh0IEFwcGVuZGl4IEEKKworRUNQYXJhbWV0ZXJzIDo6PSBD
SE9JQ0UgeworICBuYW1lZEN1cnZlICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgLS0gTVVTVCBi
ZSBzdXBwb3J0ZWQuCisgIC0tIGltcGxpY2l0Q3VydmUgICBOVUxMIC0gTVVTVCBOT1QgYmUgdXNl
ZC4KKyAgLS0gc3BlY2lmaWVkQ3VydmUgIFNwZWNpZmllZEVDRG9tYWluIC0gTVVTVCBOT1QgYmUg
dXNlZC4KK30KKworLS0gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkxNS50eHQgQXBwZW5k
aXggQQorCitFQ1ByaXZhdGVLZXkgOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lvbiAgICAgICAgSU5U
RUdFUiwKKyAgcHJpdmF0ZUtleSAgICAgT0NURVQgU1RSSU5HLAorICBwYXJhbWV0ZXJzIFswXSBF
Q1BhcmFtZXRlcnMgT1BUSU9OQUwsCisgIHB1YmxpY0tleSAgWzFdIEJJVCBTVFJJTkcgT1BUSU9O
QUwKK30KKworLS0gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzQ0Ny50eHQgQXBwZW5kaXgg
QS4xLjEKKworUlNBUHVibGljS2V5IDo6PSBTRVFVRU5DRSB7CisgIG1vZHVsdXMgICAgICAgICAg
IElOVEVHRVIsICAtLSBuCisgIHB1YmxpY0V4cG9uZW50ICAgIElOVEVHRVIgICAtLSBlCit9CisK
Ky0tIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzM0NDcudHh0IEFwcGVuZGl4IEEuMS4yCisK
K1JTQVByaXZhdGVLZXkgOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lvbiAgICAgICAgICAgVmVyc2lv
biwKKyAgbW9kdWx1cyAgICAgICAgICAgSU5URUdFUiwgIC0tIG4KKyAgcHVibGljRXhwb25lbnQg
ICAgSU5URUdFUiwgIC0tIGUKKyAgcHJpdmF0ZUV4cG9uZW50ICAgSU5URUdFUiwgIC0tIGQKKyAg
cHJpbWUxICAgICAgICAgICAgSU5URUdFUiwgIC0tIHAKKyAgcHJpbWUyICAgICAgICAgICAgSU5U
RUdFUiwgIC0tIHEKKyAgZXhwb25lbnQxICAgICAgICAgSU5URUdFUiwgIC0tIGQgbW9kIChwLTEp
CisgIGV4cG9uZW50MiAgICAgICAgIElOVEVHRVIsICAtLSBkIG1vZCAocS0xKQorICBjb2VmZmlj
aWVudCAgICAgICBJTlRFR0VSLCAgLS0gKGludmVyc2Ugb2YgcSkgbW9kIHAKKyAgb3RoZXJQcmlt
ZUluZm9zICAgT3RoZXJQcmltZUluZm9zIE9QVElPTkFMCit9CisKK090aGVyUHJpbWVJbmZvcyA6
Oj0gU0VRVUVOQ0UgU0laRSgxLi5NQVgpIE9GIE90aGVyUHJpbWVJbmZvCisKK090aGVyUHJpbWVJ
bmZvIDo6PSBTRVFVRU5DRSB7CisgIHByaW1lIElOVEVHRVIsICAtLSByaQorICBleHBvbmVudCBJ
TlRFR0VSLCAtLSBkaQorICBjb2VmZmljaWVudCBJTlRFR0VSIC0tIHRpCit9CisKK0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5MGUxZmUxYWVlMDFhZTJhZjMyYmFmMTczMzBkYmYy
MDBmNTg1MjdmLi40MDg2MjI4NzY3ODI2MWUyODJhZDI2YjlmNzg4NzYyMzg2N2FlMDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjE5LDYgKzIxOSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfTElCUkFSSUVTCiAgICAgJHtMSUJHQ1JZUFRfTElCUkFSSUVTfQogICAgICR7TElCU0VD
UkVUX0xJQlJBUklFU30KICAgICAke0xJQlNPVVBfTElCUkFSSUVTfQorICAgICR7TElCVEFTTjFf
TElCUkFSSUVTfQogICAgICR7TElCWE1MMl9MSUJSQVJJRVN9CiAgICAgJHtMSUJYU0xUX0xJQlJB
UklFU30KICAgICAke0hZUEhFTl9MSUJSQVJJRVN9CkBAIC0yNDUsNiArMjQ2LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7TElCR0NSWVBU
X0lOQ0xVREVfRElSU30KICAgICAke0xJQlNFQ1JFVF9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJT
T1VQX0lOQ0xVREVfRElSU30KKyAgICAke0xJQlRBU04xX0lOQ0xVREVfRElSU30KICAgICAke0xJ
QlhNTDJfSU5DTFVERV9ESVJ9CiAgICAgJHtMSUJYU0xUX0lOQ0xVREVfRElSfQogICAgICR7U1FM
SVRFX0lOQ0xVREVfRElSfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0MTU3Mjc1MDBl
YTM5YmUyNDhlMjYyYjlmZjVmODg5M2VmNTc4YTU1Li5kYjFjZDMyNzc4ZWJjN2Q1YWYyYTgwNDEw
OGRjZWQ3OTNmMjY4MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTcxLDYgKzE3
MSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfTElCUkFSSUVT
fQogICAgICR7TElCR0NSWVBUX0xJQlJBUklFU30KICAgICAke0xJQlNPVVBfTElCUkFSSUVTfQor
ICAgICR7TElCVEFTTjFfTElCUkFSSUVTfQogICAgICR7TElCWE1MMl9MSUJSQVJJRVN9CiAgICAg
JHtMSUJYU0xUX0xJQlJBUklFU30KICAgICAke1NRTElURV9MSUJSQVJJRVN9CkBAIC0xODUsNiAr
MTg2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtJ
Q1VfSU5DTFVERV9ESVJTfQogICAgICR7TElCR0NSWVBUX0lOQ0xVREVfRElSU30KICAgICAke0xJ
QlNPVVBfSU5DTFVERV9ESVJTfQorICAgICR7TElCVEFTTjFfSU5DTFVERV9ESVJTfQogICAgICR7
TElCWE1MMl9JTkNMVURFX0RJUn0KICAgICAke0xJQlhTTFRfSU5DTFVERV9ESVJ9CiAgICAgJHtT
UUxJVEVfSU5DTFVERV9ESVJ9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IDVlZmZkNmM2YTIwYTc0YTQzOGE0OTJkMDU1ODc2
MWNiMzg5NTRhZWIuLmMyMmE5ZGMwOTBmYjZkNjc2NmZhNzNlNDgyMjgxY2NmODUxMDViNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL2dj
cnlwdC9VdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xOTMsMTEgKzE5NCwxNDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxh
dGZvcm1JbXBvcnRKV0tQcml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICByZXR1cm4g
Y3JlYXRlKGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwbGF0Zm9y
bUtleS5yZWxlYXNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogfQogCi1SZWZQdHI8Q3J5cHRv
S2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVz
YWdlQml0bWFwKQorc3RhdGljIGJvb2wgc3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcihDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGtleUlkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN0YXRpYyBjb25z
dCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDE4PiBzX2lkX2VjUHVibGljS2V5IHsgeyAiMS4yLjg0MC4x
MDA0NS4yLjEiIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4g
c19pZF9lY0RIIHsgeyAiMS4zLjEzMi4xLjEyIiB9IH07CisKKyAgICBhdXRvIHNpemUgPSBpZGVu
dGlmaWVyLnNpemUoKTsKKyAgICBhdXRvKiBkYXRhID0gaWRlbnRpZmllci5kYXRhKCk7CisKKyAg
ICBzd2l0Y2ggKGtleUlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkVDRFNBOgorICAgICAgICAvLyBFQ0RTQSBvbmx5IHN1cHBvcnRzIGlkLWVjUHVibGlj
S2V5IGFsZ29yaXRobXMgZm9yIGltcG9ydGVkIGtleXMuCisgICAgICAgIGlmIChzaXplID09IHNf
aWRfZWNQdWJsaWNLZXkuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX2lkX2VjUHVibGlj
S2V5LmRhdGEoKSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoKKyAg
ICAgICAgLy8gRUNESCBzdXBwb3J0cyBib3RoIGlkLWVjUHVibGljS2V5IGFuZCBpYy1lY0RIIGFs
Z29yaXRobXMgZm9yIGltcG9ydGVkIGtleXMuCisgICAgICAgIGlmIChzaXplID09IHNfaWRfZWNQ
dWJsaWNLZXkuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX2lkX2VjUHVibGljS2V5LmRh
dGEoKSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHNpemUg
PT0gc19pZF9lY0RILnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19pZF9lY0RILmRhdGEo
KSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENyeXB0b0tleUVDOjpOYW1lZEN1cnZlPiBjdXJ2ZUZv
cklkZW50aWZpZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQoreworICAgIHN0
YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDIwPiBzX3NlY3AyNTZyMSB7IHsgIjEuMi44
NDAuMTAwNDUuMy4xLjciIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90
LCAxMz4gc19zZWNwMzg0cjEgeyB7ICIxLjMuMTMyLjAuMzQiIH0gfTsKKyAgICBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4gc19zZWNwNTIxcjEgeyB7ICIxLjMuMTMyLjAuMzUi
IH0gfTsKKworICAgIGF1dG8gc2l6ZSA9IGlkZW50aWZpZXIuc2l6ZSgpOworICAgIGF1dG8qIGRh
dGEgPSBpZGVudGlmaWVyLmRhdGEoKTsKKworICAgIGlmIChzaXplID09IHNfc2VjcDI1NnIxLnNp
emUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwMjU2cjEuZGF0YSgpLCBzaXplKSkKKyAg
ICAgICAgcmV0dXJuIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQMjU2OworICAgIGlmIChzaXpl
ID09IHNfc2VjcDM4NHIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwMzg0cjEu
ZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQ
Mzg0OworICAgIGlmIChzaXplID09IHNfc2VjcDUyMXIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAo
ZGF0YSwgc19zZWNwNTIxcjEuZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgLy8gTm90IHlldCBzdXBwb3J0ZWQuCisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
fQorCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2ko
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBW
ZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZXMpCit7CisgICAgLy8gRGVjb2RlIHRoZSBgU3ViamVjdFB1YmxpY0tleUlu
Zm9gIHN0cnVjdHVyZSB1c2luZyB0aGUgcHJvdmlkZWQga2V5IGRhdGEuCisgICAgUEFMOjpUQVNO
MTo6U3RydWN0dXJlIHNwa2k7CisgICAgaWYgKCFQQUw6OlRBU04xOjpkZWNvZGVTdHJ1Y3R1cmUo
JnNwa2ksICJXZWJDcnlwdG8uU3ViamVjdFB1YmxpY0tleUluZm8iLCBrZXlEYXRhKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBWYWxpZGF0ZSBgYWxnb3JpdGhtLmFsZ29yaXRo
bWAuCisgICAgeworICAgICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6VEFTTjE6OmVsZW1lbnRE
YXRhKHNwa2ksICJhbGdvcml0aG0uYWxnb3JpdGhtIik7CisgICAgICAgIGlmICghYWxnb3JpdGht
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRB
bGdvcml0aG1JZGVudGlmaWVyKGlkZW50aWZpZXIsICphbGdvcml0aG0pKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgYGFsZ29yaXRobS5wYXJh
bWV0ZXJzYCBhbmQgdGhlcmVpbiBlbWJlZGRlZCBgRUNQYXJhbWV0ZXJzYC4KKyAgICB7CisgICAg
ICAgIGF1dG8gcGFyYW1ldGVycyA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKHNwa2ksICJhbGdv
cml0aG0ucGFyYW1ldGVycyIpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBEZWNvZGUgdGhlIGBFQ1BhcmFtZXRlcnNg
IHN0cnVjdHVyZSB1c2luZyB0aGUgYGFsZ29yaXRobS5wYXJhbWV0ZXJzYCBkYXRhLgorICAgICAg
ICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgZWNQYXJhbWV0ZXJzOworICAgICAgICBpZiAoIVBBTDo6
VEFTTjE6OmRlY29kZVN0cnVjdHVyZSgmZWNQYXJhbWV0ZXJzLCAiV2ViQ3J5cHRvLkVDUGFyYW1l
dGVycyIsICpwYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIGF1dG8gbmFtZWRDdXJ2ZSA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKGVjUGFyYW1ldGVy
cywgIm5hbWVkQ3VydmUiKTsKKyAgICAgICAgaWYgKCFuYW1lZEN1cnZlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJDdXJ2ZSA9IGN1cnZlRm9y
SWRlbnRpZmllcigqbmFtZWRDdXJ2ZSk7CisgICAgICAgIGlmICghcGFyYW1ldGVyQ3VydmUgfHwg
KnBhcmFtZXRlckN1cnZlICE9IGN1cnZlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgLy8gUmV0cmlldmUgdGhlIGBzdWJqZWN0UHVibGljS2V5YCBkYXRhIGFuZCBl
bWJlZCBpdCBpbnRvIHRoZSBgcHVibGljLWtleWAgcy1leHByZXNzaW9uLgorICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHBsYXRmb3JtS2V5OworICAgIHsKKyAgICAgICAgYXV0
byBzdWJqZWN0UHVibGljS2V5ID0gUEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoc3BraSwgInN1Ympl
Y3RQdWJsaWNLZXkiKTsKKyAgICAgICAgaWYgKCFzdWJqZWN0UHVibGljS2V5KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gQmFpbCBpZiB0aGUgYHN1YmplY3RQdWJs
aWNLZXlgIGRhdGEgc2l6ZSBkb2Vzbid0IG1hdGNoIHRoZSBzaXplIG9mIGFuIHVuY29tcHJlc3Nl
ZCBwb2ludAorICAgICAgICAvLyBmb3IgdGhpcyBjdXJ2ZSwgb3IgaWYgdGhlIGZpcnN0IGJ5dGUg
aW4gdGhlIGBzdWJqZWN0UHVibGljS2V5YCBkYXRhIGlzbid0IDB4MDQsIGFzIHJlcXVpcmVkCisg
ICAgICAgIC8vIGZvciBhbiB1bmNvbXByZXNzZWQgRUMgcG9pbnQgZW5jb2RlZCBpbiBhbiBvY3Rl
dCBzdHJpbmcuCisgICAgICAgIGlmIChzdWJqZWN0UHVibGljS2V5LT5zaXplKCkgIT0gdW5jb21w
cmVzc2VkUG9pbnRTaXplRm9yQ3VydmUoY3VydmUpIHx8IHN1YmplY3RQdWJsaWNLZXktPmF0KDAp
ICE9IDB4MDQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBDb252
ZXJ0IFggYW5kIFkgY29vcmRpbmF0ZSBkYXRhIGludG8gTVBJcy4KKyAgICAgICAgdW5zaWduZWQg
Y29vcmRpbmF0ZVNpemUgPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplRm9yQ3VydmUoY3Vy
dmUpOworICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHhNUEksIHlNUEk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3Nj
YW4oJnhNUEksIEdDUllNUElfRk1UX1VTRywgJnN1YmplY3RQdWJsaWNLZXktPmF0KDEpLCBjb29y
ZGluYXRlU2l6ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgeworICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGVycm9yID0gZ2NyeV9tcGlfc2NhbigmeU1QSSwgR0NSWU1QSV9GTVRfVVNHLCAmc3Vi
amVjdFB1YmxpY0tleS0+YXQoMSArIGNvb3JkaW5hdGVTaXplKSwgY29vcmRpbmF0ZVNpemUsIG51
bGxwdHIpOworICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAg
ICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ29uc3RydWN0IGFuIE1QSSBwb2ludCBmcm9tIHRoZSBYIGFuZCBZIGNvb3JkaW5hdGVzIGFu
ZCB1c2luZyAxIGFzIHRoZSBaIGNvb3JkaW5hdGUuCisgICAgICAgIC8vIFRoaXMgYWx3YXlzIGFs
bG9jYXRlcyB0aGUgZ2NyeV9tcGlfcG9pbnRfdCBvYmplY3QuCisgICAgICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGU8Z2NyeV9tcGlfcG9pbnRfdD4gcG9pbnQoZ2NyeV9tcGlfcG9pbnRfc2V0KG51bGxw
dHIsIHhNUEksIHlNUEksIEdDUllNUElfQ09OU1RfT05FKSk7CisKKyAgICAgICAgLy8gQ3JlYXRl
IGFuIEVDIGNvbnRleHQgZm9yIHRoZSBzcGVjaWZpZWQgY3VydmUuCisgICAgICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9jdHhfdD4gY29udGV4dDsKKyAgICAgICAgZ2NyeV9lcnJvcl90IGVy
cm9yID0gZ2NyeV9tcGlfZWNfbmV3KCZjb250ZXh0LCBudWxscHRyLCBjdXJ2ZU5hbWUoY3VydmUp
KTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJhaWwgaWYgdGhlIGNvbnN0cnVjdGVkIE1QSSBw
b2ludCBpcyBub3Qgb24gdGhlIHNwZWNpZmllZCBFQyBjdXJ2ZS4KKyAgICAgICAgaWYgKCFnY3J5
X21waV9lY19jdXJ2ZV9wb2ludChwb2ludCwgY29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmcGxhdGZvcm1LZXks
IG51bGxwdHIsICIocHVibGljLWtleShlY2MoY3VydmUgJXMpKHEgJWIpKSkiLAorICAgICAgICAg
ICAgY3VydmVOYW1lKGN1cnZlKSwgc3ViamVjdFB1YmxpY0tleS0+c2l6ZSgpLCBzdWJqZWN0UHVi
bGljS2V5LT5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRmluYWxseSBjcmVh
dGUgYSBuZXcgQ3J5cHRvS2V5RUMgb2JqZWN0LCB0cmFuc2ZlcnJpbmcgdG8gaXQgb3duZXJzaGlw
IG9mIHRoZSBgcHVibGljLWtleWAgcy1leHByZXNzaW9uLgorICAgIHJldHVybiBjcmVhdGUoaWRl
bnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcGxhdGZvcm1LZXkucmVsZWFz
ZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKIH0KIAogUmVmUHRyPENyeXB0b0tleUVDPiBDcnlw
dG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBO
YW1lZEN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZExpYnRhc24xLmNtYWtlIGIvU291cmNlL2Nt
YWtlL0ZpbmRMaWJ0YXNuMS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDY0MzFmMjE5NDZlMmJjNGU4NDhl
YTM2ZmJhYjAxNjg5M2IxY2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRM
aWJ0YXNuMS5jbWFrZQpAQCAtMCwwICsxLDQ0IEBACisjIC0gVHJ5IHRvIGZpbmQgbGlidGFzbjEu
CisjIE9uY2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQorIworIyAgTElCVEFTTjFfSU5DTFVERV9E
SVJTIC0gdGhlIGxpYnRhc24xIGluY2x1ZGUgZGlyZWN0b3JpZXMKKyMgIExJQlRBU04xX0xJQlJB
UklFUyAtIHRoZSBsaWJ0YXNuMSBsaWJyYXJpZXMuCisjCisjIENvcHlyaWdodCAoQykgMjAxNyBN
ZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ZpbmRfcGFja2FnZShQ
a2dDb25maWcpCitwa2dfY2hlY2tfbW9kdWxlcyhQQ19MSUJUQVNOMSBsaWJ0YXNuMSkKKworZmlu
ZF9wYXRoKExJQlRBU04xX0lOQ0xVREVfRElSUworICAgIE5BTUVTIGxpYnRhc24xLmgKKyAgICBQ
QVRIUyAke1BDX0xJQlRBU04xX0lOQ0xVREVESVJ9ICR7UENfTElCVEFTTjFfSU5DTFVERV9ESVJT
fQorKQorCitmaW5kX2xpYnJhcnkoTElCVEFTTjFfTElCUkFSSUVTCisgICAgTkFNRVMgdGFzbjEK
KyAgICBQQVRIUyAke1BDX0xJQlRBU04xX0xJQkRJUn0gJHtQQ19MSUJUQVNOMV9MSUJSQVJZX0RJ
UlN9CispCisKK21hcmtfYXNfYWR2YW5jZWQoTElCVEFTTjFfSU5DTFVERV9ESVJTIExJQlRBU04x
X0xJQlJBUklFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggZGYzMDk2MmU2Zjk3ZTAzOTY3ZmZj
ZDMwYWZhZDBmMTI0NDA2YTY2ZS4uMmM1ZDk4NjZiYWJiNTMzODVlN2QwODcyNGQ1ZWZiZWViYjc2
NmU5OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTI3MSw2ICsyNzEsMTAgQEAgaWYgKEVOQUJM
RV9NRURJQV9TVFJFQU0gT1IgRU5BQkxFX1dFQl9SVEMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxF
X1NVQlRMRV9DUllQVE8pCisgICAgZmluZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQorICAg
IGlmIChOT1QgTElCVEFTTjFfRk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxp
YnRhc24xIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpOwor
ICAgIGVuZGlmICgpCiAgICAgaWYgKExJQkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcu
MCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVp
cmVkIHRvIGVuYWJsZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXUEUuY21ha2UKaW5kZXggZGM1Y2FhZjM4ODNhYmEyMzQxY2NkZjE5OTc1ZjM0Njk5YjZj
YTUwNi4uY2YxYWRjMjY4YjIzNDJmYTJhMWM3Y2Q4Y2ZjMTRmYjY1OTAxYTBkYyAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKQEAgLTExOSw2ICsxMTksMTAgQEAgaWYgKEVOQUJMRV9BQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCisgICAgZmlu
ZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQorICAgIGlmIChOT1QgTElCVEFTTjFfRk9VTkQp
CisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYnRhc24xIGlzIHJlcXVpcmVkIHRvIGVu
YWJsZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpOworICAgIGVuZGlmICgpCiAgICAgaWYgKExJ
QkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcuMCkKICAgICAgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBXZWIgQ3J5cHRv
IEFQSSBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMGUzZjU3MjFlMWU5NDdmZjM3
NzA4YTlkOWI2ZTA5OTVmMWUzOTJlLi45YTEwMTc2ODk2ZWVlMDMyOTQ5NGUzNjFjYzdjYWZhYjIw
OWU3MTg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMTYgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlw
dG9LZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjkyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFVu
c2tpcCBFQy1iYXNlZCBTUEtJIGltcG9ydCB0ZXN0cyB0aGF0IGFyZSBub3cgcGFzc2luZy4KKwog
MjAxNy0wNi0xNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dpbl0gVXBkYXRlIGV4cGVjdGF0aW9ucyBmb3IgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2MDViMDA5ZmU0MzhiZmU0M2Mw
MWNiNmMzNTFlOTBkOTA1ZmRmYWUzLi5mMWQ5MjhkZTRkN2ZiOTA4NzZlMTQzMWQ2ODEwNDRkYjU3
YTkyNGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NzcyLDIwICs3NzIsMTUgQEAgd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgt
Z2VuZXJhdGUtZXhwb3J0LWtleS1zcGtpLXAyNTYuaHRtbCBbIFNraXAKIHdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS1wMzg0Lmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9y
dC1wa2NzOC1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0
by9zdWJ0bGUvZWNkaC1pbXBvcnQtcGtjczgta2V5LXAzODQuaHRtbCBbIFNraXAgXQotd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXNwa2kta2V5LXAyNTYuaHRt
bCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0
LXNwa2kta2V5LXAzODQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8v
c3VidGxlL2VjZHNhLWdlbmVyYXRlLWV4cG9ydC1rZXktcGtjczguaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZHNhLWdlbmVyYXRlLWV4cG9ydC1rZXkt
c3BraS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNk
c2EtaW1wb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNy
eXB0by9zdWJ0bGUvZWNkc2EtaW1wb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtandrLWtleS1leHBvcnQtcGtjczgt
a2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1p
bXBvcnQtandrLWtleS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1yYXcta2V5LWV4cG9ydC1zcGtpLWtleS5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0
LXBrY3M4LWtleS1leHBvcnQtandrLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS1leHBvcnQtcGtjczgta2V5LXAy
NTYuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWlt
cG9ydC1wa2NzOC1rZXktZXhwb3J0LXBrY3M4LWtleS1wMzg0Lmh0bWwgWyBTa2lwIF0KLXdlYmtp
dC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXktZXhwb3J0LWp3
ay1rZXkuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Vj
LWltcG9ydC1zcGtpLWtleS1leHBvcnQtcmF3LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1zcGtpLWtl
eS1wMjU2Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9l
Yy1pbXBvcnQtc3BraS1rZXktZXhwb3J0LXNwa2kta2V5LXAzODQuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1leHBvcnQta2V5LW1hbGZvcm1lZC1w
YXJhbWV0ZXJzLmh0bWwgWyBTa2lwIF0KQEAgLTgzMSw3ICs4MjYsNiBAQCB3ZWJraXQub3JnL2Iv
MTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9hZXMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWdl
bmVyYXRlLWV4cG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtZ2VuZXJhdGUtZXhwb3J0LXNwa2kta2V5Lmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWlt
cG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8v
d29ya2Vycy9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLXBvc3RNZXNzYWdlLXdvcmtlci5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9o
bWFjLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIy
IGNyeXB0by93b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sIFsgU2tp
cCBdCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZDZjNTRmZGQxYjAx
MjBhYjAyZmRkMTBhNmM1YjIzMDNjZjAyZGYyYy4uMTk0ZmU2ZDY0YmViNjI4ODIyNjIyZjczZTkw
YTEzOTFhYTM3ZGQyNCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE3LTA2LTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBv
cnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9jbWFrZS9GaW5kTGlidGFzbjEuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlOiBSZXF1aXJlIGxpYnRhc24xIHdoZW4gU1VCVExFX0NSWVBU
TyBpcyBlbmFibGVkLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOiBE
aXR0by4KKwogMjAxNy0wNi0xNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgu
cnU+CiAKICAgICAgICAgW2NtYWtlXSBBRERfUFJFQ09NUElMRURfSEVBREVSIHNob3VsZCBhcHBl
bmQgT0JKRUNUX0RFUEVORFMsIG5vdCBvdmVyd3JpdGUgaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313240</attachid>
            <date>2017-06-18 13:01:11 -0700</date>
            <delta_ts>2017-06-19 07:18:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172927-20170618220110.patch</filename>
            <type>text/plain</type>
            <size>31932</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFiZGM1MTE3YTlhOTIx
ZGRiMTYwNTMwZTcxYTVkMTc3MzZlYTkxMi4uYzU4OTkwMjE1MjM4OTFiYjJiODljYzgxNTMxNGE1
YzY3YzRiNmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTE4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBpbXBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgVXNpbmcgbGlidGFzbjEgdGhyb3VnaCB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHdyYXBw
ZXJzLCB0aGUgZ2l2ZW4ga2V5IGRhdGEKKyAgICAgICAgaXMgZGVjb2RlZCBhZ2FpbnN0IHRoZSBT
dWJqZWN0UHVibGljS2V5SW5mbyBBU04uMSBkZWZpbml0aW9uLiBUaGUgYWxnb3JpdGhtCisgICAg
ICAgIG1lbWJlciBpcyB0aGVuIHByb3Blcmx5IHZhbGlkYXRlZCwgbWFraW5nIHN1cmUgdGhhdCB0
aGUga2V5IGFsZ29yaXRobSBpZGVuZml0aWVyCisgICAgICAgIGlzIHN1cHBvcnRlZCBhbmQgdGhh
dCB0aGUgYWxnb3JpdGhtIHBhcmFtZXRlcnMgc3BlY2lmeSB0aGUgY29ycmVjdCBFQyBjdXJ2ZS4K
KworICAgICAgICBUaGUgcHVibGljIGtleSBiaXQgc3RyaW5nIGlzIHRoZW4gcmV0cmlldmVkIGFu
ZCB2YWxpZGF0ZWQsIGVuc3VyaW5nIGl0IHJlcHJlc2VudHMKKyAgICAgICAgYW4gdW5jb21wcmVz
c2VkIEVDIHBvaW50IHRoYXQgaXMgb2YgdmFsaWQgc2l6ZSBmb3IgdGhlIHNwZWNpZmllZCBFQyBj
dXJ2ZS4gVGhlCisgICAgICAgIHBvaW50IGlzIHRoZW4gdGVzdGVkIHRocm91Z2ggYW4gRUMgY29u
dGV4dCB0byBtYWtlIHN1cmUgaXQncyBwb3NpdGlvbmVkIG9uIHRoZQorICAgICAgICBzcGVjaWZp
ZWQgRUMgY3VydmUuCisKKyAgICAgICAgRmluYWxseSwgdGhlIGN1cnZlIG5hbWUgYW5kIHVuY29t
cHJlc3NlZCBwb2ludCBkYXRhIGFyZSBlbWJlZGRlZCBpbnRvIGEKKyAgICAgICAgYHB1YmxpYy1r
ZXlgIHMtZXhwcmVzc2lvbiB0aGF0IHdpbGwgYmUgdXNlZCB0aHJvdWdoIHRoZSBsaWJnY3J5cHQg
QVBJLiBUaGlzIGlzCisgICAgICAgIHRoZW4gdXNlZCwgYWxvbmcgd2l0aCBvdGhlciBpbmZvcm1h
dGlvbiwgdG8gY3JlYXRlIGEgdmFsaWQgQ3J5cHRvS2V5RUMgb2JqZWN0LgorCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IFVzZSBMSUJUQVNOMV9JTkNMVURFX0RJUkVDVE9SSUVTIGFuZCBM
SUJUQVNOMV9MSUJSQVJJRVMuCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IERpdHRvLgor
ICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJ2ZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0U3BraSk6CisKIDIwMTctMDYtMTggIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gU2Vla2luZyBvciBlbnRlcmluZyBmdWxsc2NyZWVu
IGNhbiBjYXVzZSBleHRyZW1lIENQVSB1c2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggYzJjZDZi
NWRjZGQ1MjRjNTVjNGZiZWMzMTU5ZjU1YTJlNDhiNTUxMC4uYzk4MDgyMzdhN2JiMTVhNjQ5YmU3
OTNiYjIxNWJmYTI4YmE2ODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTctMDYtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjkyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZpbGUgdGhhdCBw
cm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nIHdpdGggbGlidGFzbjEgQVBJ
cy4KKworICAgICAgICBUaGUgcHJlY29tcHV0ZWQgQVNOLjEgZGVjbGFyYXRpb25zLCBnZW5lcmF0
ZWQgZnJvbSB0aGUgV2ViQ3J5cHRvLmFzbiBmaWxlIHdpdGgKKyAgICAgICAgdGhlIGFzbjFQYXJz
ZXIgdG9vbCwgYXJlIHVzZWQgdG8gZW5hYmxlIGNvbnN0cnVjdGlvbiBvZiBBU04uMSBzdHJ1Y3R1
cmVzIHRoYXQKKyAgICAgICAgYXJlIHRoZW4gdXNlZCB0byBkZWNvZGUgdGhlIFNQS0kgb3IgUEtD
UyM4IGRhdGEgdGhyb3VnaCB0aGUgZGVjb2RlU3RydWN0dXJlKCkKKyAgICAgICAgZnVuY3Rpb24u
IFJhdyBkYXRhIG9mIGVhY2ggZWxlbWVudCBpbiB0aGF0IHN0cnVjdHVyZSBjYW4gYmUgcmV0cmll
dmVkIHRocm91ZyB0aGUKKyAgICAgICAgZWxlbWVudERhdGEoKSBmdW5jdGlvbi4KKworICAgICAg
ICBUaGUgU3RydWN0dXJlIGNsYXNzIGlzIGFkZGVkIGFzIGEgd3JhcHBlciBmb3IgYXNuMV9ub2Rl
IG9iamVjdHMgdGhhdCBhcmUgdXNlZAorICAgICAgICBhcyBkZWNvZGluZyB0YXJnZXRzLCBzaW1w
bGlmeWluZyBsaWZldGltZSBtYW5hZ2VtZW50IG9mIHRoZXNlIG9iamVjdHMuCisKKyAgICAgICAg
KiBwYWwvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGFsL1BsYXRmb3JtV1BFLmNtYWtl
OgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAg
ICAgIChQQUw6OlRBU04xOjphc24xRGVmaW5pdGlvbnMpOgorICAgICAgICAoUEFMOjpUQVNOMTo6
ZGVjb2RlU3RydWN0dXJlKToKKyAgICAgICAgKFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKToKKyAg
ICAgICAgKiBwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKFBB
TDo6VEFTTjE6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChQQUw6OlRBU04xOjpT
dHJ1Y3R1cmU6Om9wZXJhdG9yJik6CisgICAgICAgIChQQUw6OlRBU04xOjpTdHJ1Y3R1cmU6Om9w
ZXJhdG9yIGFzbjFfbm9kZSk6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9XZWJDcnlwdG8u
YXNuOiBBZGRlZC4KKwogMjAxNy0wNi0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TIERuRF0gVXBzdHJlYW0gaU9TIGRyYWcgYW5kIGRyb3Ag
aW1wbGVtZW50YXRpb24gaW50byBPcGVuU291cmNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNzc1YzE4OTg0YWU4OWI5Y2VhYWIyNWI1N2ZkYTA2
YTFhMTVmYzYzYi4uYWZhNWE5YTA1OTg1OGNjYjI3YjYyZjdlMWUyYWVjOGNjNjkzYmJlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDMgKzEsNSBAQAog
bGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKworICAgIGNyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCiApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3NzVjMTg5ODRhZTg5YjljZWFhYjI1
YjU3ZmRhMDZhMWExNWZjNjNiLi5hZmE1YTlhMDU5ODU4Y2NiMjdiNjJmN2UxZTJhZWM4Y2M2OTNi
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTEsMyAr
MSw1IEBACiBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcAorCisgICAgY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRmZGYwNTUxN2U2MDEwY2IwODQyZWM1NDU1NzY1MjMwODU2NTc1NDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRp
ZXMuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJv
bG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgorCisj
aW5jbHVkZSA8bXV0ZXg+CisKK25hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFRBU04xIHsKKwor
c3RhdGljIGFzbjFfbm9kZSBhc24xRGVmaW5pdGlvbnMoKQoreworICAgIC8vIEdlbmVyYXRlZCB3
aXRoIGBhc24xUGFyc2VyIFdlYkNyeXB0by5hc25gLgorCisgICAgc3RhdGljIGFzbjFfbm9kZSBz
X2RlZmluaXRpb25zOworICAgIHN0YXRpYyBjb25zdCBhc24xX3N0YXRpY19ub2RlIHNfV2ViQ3J5
cHRvQVNOMVtdID0geworICAgICAgICB7ICJXZWJDcnlwdG8iLCA1MzY4NzI5NzYsIG51bGxwdHIg
fSwKKyAgICAgICAgeyBudWxscHRyLCAxMDczNzQxODM2LCBudWxscHRyIH0sCisgICAgICAgIHsg
IlN1YmplY3RQdWJsaWNLZXlJbmZvIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7
ICJhbGdvcml0aG0iLCAxMDczNzQxODI2LCAiQWxnb3JpdGhtSWRlbnRpZmllciJ9LAorICAgICAg
ICB7ICJzdWJqZWN0UHVibGljS2V5IiwgNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJBbGdvcml0
aG1JZGVudGlmaWVyIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJhbGdvcml0
aG0iLCAxMDczNzQxODM2LCBudWxscHRyIH0sCisgICAgICAgIHsgInBhcmFtZXRlcnMiLCA1NDEw
ODE2MTMsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiYWxnb3JpdGhtIiwgMSwgbnVsbHB0ciB9LAor
ICAgICAgICB7ICJQcml2YXRlS2V5SW5mbyIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAidmVyc2lvbiIsIDEwNzM3NDE4MjYsICJWZXJzaW9uIn0sCisgICAgICAgIHsgInByaXZh
dGVLZXlBbGdvcml0aG0iLCAxMDczNzQxODI2LCAiUHJpdmF0ZUtleUFsZ29yaXRobUlkZW50aWZp
ZXIifSwKKyAgICAgICAgeyAicHJpdmF0ZUtleSIsIDEwNzM3NDE4MjYsICJQcml2YXRlS2V5In0s
CisgICAgICAgIHsgImF0dHJpYnV0ZXMiLCA1MzY4OTU0OTAsICJBdHRyaWJ1dGVzIn0sCisgICAg
ICAgIHsgbnVsbHB0ciwgNDEwNCwgIjAifSwKKyAgICAgICAgeyAiVmVyc2lvbiIsIDEwNzM3NDE4
MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiUHJpdmF0ZUtleUFsZ29yaXRobUlkZW50aWZpZXIi
LCAxMDczNzQxODI2LCAiQWxnb3JpdGhtSWRlbnRpZmllciJ9LAorICAgICAgICB7ICJQcml2YXRl
S2V5IiwgMTA3Mzc0MTgzMSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJBdHRyaWJ1dGVzIiwgMTYx
MDYxMjc1MSwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDIsICJBdHRyaWJ1dGUifSwK
KyAgICAgICAgeyAiQXR0cmlidXRlIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7
ICJ0eXBlIiwgMTA3Mzc0MTgzNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2YWx1ZXMiLCAyLCAi
QXR0cmlidXRlU2V0VmFsdWUifSwKKyAgICAgICAgeyAiQXR0cmlidXRlU2V0VmFsdWUiLCAxNjEw
NjEyNzUxLCBudWxscHRyIH0sCisgICAgICAgIHsgbnVsbHB0ciwgMTMsIG51bGxwdHIgfSwKKyAg
ICAgICAgeyAiRUNQYXJhbWV0ZXJzIiwgMTYxMDYxMjc1NCwgbnVsbHB0ciB9LAorICAgICAgICB7
ICJuYW1lZEN1cnZlIiwgMTIsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiRUNQcml2YXRlS2V5Iiwg
MTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2ZXJzaW9uIiwgMTA3Mzc0MTgyNywg
bnVsbHB0ciB9LAorICAgICAgICB7ICJwcml2YXRlS2V5IiwgMTA3Mzc0MTgzMSwgbnVsbHB0ciB9
LAorICAgICAgICB7ICJwYXJhbWV0ZXJzIiwgMTYxMDYzNzMxNCwgIkVDUGFyYW1ldGVycyJ9LAor
ICAgICAgICB7IG51bGxwdHIsIDIwNTYsICIwIn0sCisgICAgICAgIHsgInB1YmxpY0tleSIsIDUz
Njg5NTQ5NCwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDIwNTYsICIxIn0sCisgICAg
ICAgIHsgIlJTQVB1YmxpY0tleSIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAi
bW9kdWx1cyIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHVibGljRXhwb25l
bnQiLCAzLCBudWxscHRyIH0sCisgICAgICAgIHsgIlJTQVByaXZhdGVLZXkiLCAxNjEwNjEyNzQx
LCBudWxscHRyIH0sCisgICAgICAgIHsgInZlcnNpb24iLCAxMDczNzQxODI2LCAiVmVyc2lvbiJ9
LAorICAgICAgICB7ICJtb2R1bHVzIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7
ICJwdWJsaWNFeHBvbmVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJp
dmF0ZUV4cG9uZW50IiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcmltZTEi
LCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInByaW1lMiIsIDEwNzM3NDE4Mjcs
IG51bGxwdHIgfSwKKyAgICAgICAgeyAiZXhwb25lbnQxIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9
LAorICAgICAgICB7ICJleHBvbmVudDIiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAg
IHsgImNvZWZmaWNpZW50IiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJvdGhl
clByaW1lSW5mb3MiLCAxNjM4NiwgIk90aGVyUHJpbWVJbmZvcyJ9LAorICAgICAgICB7ICJPdGhl
clByaW1lSW5mb3MiLCAxNjEyNzA5ODk5LCBudWxscHRyIH0sCisgICAgICAgIHsgIk1BWCIsIDEw
NzQyNjYxMjIsICIxIn0sCisgICAgICAgIHsgbnVsbHB0ciwgMiwgIk90aGVyUHJpbWVJbmZvIn0s
CisgICAgICAgIHsgIk90aGVyUHJpbWVJbmZvIiwgNTM2ODcwOTE3LCBudWxscHRyIH0sCisgICAg
ICAgIHsgInByaW1lIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJleHBvbmVu
dCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiY29lZmZpY2llbnQiLCAzLCBu
dWxscHRyIH0sCisgICAgICAgIHsgbnVsbHB0ciwgMCwgbnVsbHB0ciB9CisgICAgfTsKKworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKHNf
b25jZUZsYWcsIFtdIHsgYXNuMV9hcnJheTJ0cmVlKHNfV2ViQ3J5cHRvQVNOMSwgJnNfZGVmaW5p
dGlvbnMsIG51bGxwdHIpOyB9KTsKKworICAgIHJldHVybiBzX2RlZmluaXRpb25zOworfQorCiti
b29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnRO
YW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCit7CisgICAgaW50IHJldCA9IGFzbjFf
Y3JlYXRlX2VsZW1lbnQoYXNuMURlZmluaXRpb25zKCksIGVsZW1lbnROYW1lLCByb290KTsKKyAg
ICBpZiAocmV0ICE9IEFTTjFfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aW50IGRhdGFTaXplID0gZGF0YS5zaXplKCk7CisgICAgcmV0ID0gYXNuMV9kZXJfZGVjb2Rpbmcy
KHJvb3QsIGRhdGEuZGF0YSgpLCAmZGF0YVNpemUsIEFTTjFfREVDT0RFX0ZMQUdfU1RSSUNUX0RF
UiwgbnVsbHB0cik7CisgICAgcmV0dXJuIHJldCA9PSBBU04xX1NVQ0NFU1M7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29u
c3QgY2hhciogZWxlbWVudE5hbWUpCit7CisgICAgaW50IGxlbmd0aCA9IDA7CisgICAgdW5zaWdu
ZWQgdHlwZSA9IDA7CisgICAgaW50IHJldCA9IGFzbjFfcmVhZF92YWx1ZV90eXBlKHJvb3QsIGVs
ZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3RoLCAmdHlwZSk7CisgICAgaWYgKHJldCAhPSBBU04x
X01FTV9FUlJPUikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICh0eXBl
ID09IEFTTjFfRVRZUEVfQklUX1NUUklORykgeworICAgICAgICBpZiAobGVuZ3RoICUgOCkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGxlbmd0aCAvPSA4OworICAg
IH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGxlbmd0aCk7CisgICAgcmV0ID0gYXNuMV9y
ZWFkX3ZhbHVlKHJvb3QsIGVsZW1lbnROYW1lLCBkYXRhLmRhdGEoKSwgJmxlbmd0aCk7CisgICAg
aWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gZGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgVEFTTjEKK30gLy8gbmFtZXNw
YWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRp
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NjNmNDY1MDZjZWJkOWQ2ZjE1Yzc5YWZiMDkzZDU0YmQwOTM1Yjky
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBN
ZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGlidGFzbjEuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBQQUwgeworbmFtZXNwYWNlIFRBU04xIHsKKworY2xhc3MgU3RydWN0dXJlIHsKK3B1YmxpYzoK
KyAgICBTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7CisKKyAgICB+U3RydWN0dXJlKCkKKyAgICB7Cisg
ICAgICAgIGFzbjFfZGVsZXRlX3N0cnVjdHVyZSgmbV9zdHJ1Y3R1cmUpOworICAgIH0KKworICAg
IFN0cnVjdHVyZShjb25zdCBTdHJ1Y3R1cmUmKSA9IGRlbGV0ZTsKKyAgICBTdHJ1Y3R1cmUmIG9w
ZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmUmKSA9IGRlbGV0ZTsKKworICAgIFN0cnVjdHVyZShTdHJ1
Y3R1cmUmJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJlJiBvcGVyYXRvcj0oU3RydWN0dXJlJiYp
ID0gZGVsZXRlOworCisgICAgYXNuMV9ub2RlKiBvcGVyYXRvciYoKSB7IHJldHVybiAmbV9zdHJ1
Y3R1cmU7IH0KKyAgICBvcGVyYXRvciBhc24xX25vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZTsgfQorCitwcml2YXRlOgorICAgIGFzbjFfbm9kZSBtX3N0cnVjdHVyZSB7IG51bGxwdHIg
fTsKK307CisKK2Jvb2wgZGVjb2RlU3RydWN0dXJlKGFzbjFfbm9kZSogcm9vdCwgY29uc3QgY2hh
ciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSk7CitzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZWxlbWVudERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNo
YXIqIGVsZW1lbnROYW1lKTsKKworfSAvLyBuYW1lc3BhY2UgVEFTTjEKK30gLy8gbmFtZXNwYWNl
IFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvV2Vi
Q3J5cHRvLmFzbiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1dlYkNyeXB0
by5hc24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzgxM2I4OTY0MTI0NzM1MzQ3MTc5NTFmZjY1YmI0ODNhOGMyODM3
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24x
L1dlYkNyeXB0by5hc24KQEAgLTAsMCArMSw5MCBAQAorV2ViQ3J5cHRvIHsgfQorCitERUZJTklU
SU9OUyBFWFBMSUNJVCBUQUdTIDo6PQorCitCRUdJTgorCistLSBodHRwOi8vd3d3LmlldGYub3Jn
L3JmYy9yZmM1MjgwLnR4dCBBcHBlbmRpeCBBLjEKKworU3ViamVjdFB1YmxpY0tleUluZm8gOjo9
ICBTRVFVRU5DRSAgeworICBhbGdvcml0aG0gICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyLAor
ICBzdWJqZWN0UHVibGljS2V5ICBCSVQgU1RSSU5HCit9CisKK0FsZ29yaXRobUlkZW50aWZpZXIg
Ojo9ICBTRVFVRU5DRSAgeworICBhbGdvcml0aG0gICBPQkpFQ1QgSURFTlRJRklFUiwKKyAgcGFy
YW1ldGVycyAgQU5ZIERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCit9CisKKy0tIGh0dHA6
Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzUyMDgudHh0IEFwcGVuZGl4IEEKKworUHJpdmF0ZUtleUlu
Zm8gOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICBWZXJzaW9uLAor
ICBwcml2YXRlS2V5QWxnb3JpdGhtICAgICAgIFByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVy
LAorICBwcml2YXRlS2V5ICAgICAgICAgICAgICAgIFByaXZhdGVLZXksCisgIGF0dHJpYnV0ZXMg
ICAgICAgICAgIFswXSAgSU1QTElDSVQgQXR0cmlidXRlcyBPUFRJT05BTAorfQorCitWZXJzaW9u
IDo6PSBJTlRFR0VSCisKK1ByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyIDo6PSBBbGdvcml0
aG1JZGVudGlmaWVyCisKK1ByaXZhdGVLZXkgOjo9IE9DVEVUIFNUUklORworCitBdHRyaWJ1dGVz
IDo6PSBTRVQgT0YgQXR0cmlidXRlCisKK0F0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgeworICB0eXBl
ICAgIE9CSkVDVCBJREVOVElGSUVSLAorICB2YWx1ZXMgIEF0dHJpYnV0ZVNldFZhbHVlCit9CisK
K0F0dHJpYnV0ZVNldFZhbHVlIDo6PSBTRVQgT0YgQU5ZCisKKy0tIGh0dHA6Ly93d3cuaWV0Zi5v
cmcvcmZjL3JmYzU0ODAudHh0IEFwcGVuZGl4IEEKKworRUNQYXJhbWV0ZXJzIDo6PSBDSE9JQ0Ug
eworICBuYW1lZEN1cnZlICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgLS0gTVVTVCBiZSBzdXBw
b3J0ZWQuCisgIC0tIGltcGxpY2l0Q3VydmUgICBOVUxMIC0gTVVTVCBOT1QgYmUgdXNlZC4KKyAg
LS0gc3BlY2lmaWVkQ3VydmUgIFNwZWNpZmllZEVDRG9tYWluIC0gTVVTVCBOT1QgYmUgdXNlZC4K
K30KKworLS0gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkxNS50eHQgQXBwZW5kaXggQQor
CitFQ1ByaXZhdGVLZXkgOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lvbiAgICAgICAgSU5URUdFUiwK
KyAgcHJpdmF0ZUtleSAgICAgT0NURVQgU1RSSU5HLAorICBwYXJhbWV0ZXJzIFswXSBFQ1BhcmFt
ZXRlcnMgT1BUSU9OQUwsCisgIHB1YmxpY0tleSAgWzFdIEJJVCBTVFJJTkcgT1BUSU9OQUwKK30K
KworLS0gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzQ0Ny50eHQgQXBwZW5kaXggQS4xLjEK
KworUlNBUHVibGljS2V5IDo6PSBTRVFVRU5DRSB7CisgIG1vZHVsdXMgICAgICAgICAgIElOVEVH
RVIsICAtLSBuCisgIHB1YmxpY0V4cG9uZW50ICAgIElOVEVHRVIgICAtLSBlCit9CisKKy0tIGh0
dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzM0NDcudHh0IEFwcGVuZGl4IEEuMS4yCisKK1JTQVBy
aXZhdGVLZXkgOjo9IFNFUVVFTkNFIHsKKyAgdmVyc2lvbiAgICAgICAgICAgVmVyc2lvbiwKKyAg
bW9kdWx1cyAgICAgICAgICAgSU5URUdFUiwgIC0tIG4KKyAgcHVibGljRXhwb25lbnQgICAgSU5U
RUdFUiwgIC0tIGUKKyAgcHJpdmF0ZUV4cG9uZW50ICAgSU5URUdFUiwgIC0tIGQKKyAgcHJpbWUx
ICAgICAgICAgICAgSU5URUdFUiwgIC0tIHAKKyAgcHJpbWUyICAgICAgICAgICAgSU5URUdFUiwg
IC0tIHEKKyAgZXhwb25lbnQxICAgICAgICAgSU5URUdFUiwgIC0tIGQgbW9kIChwLTEpCisgIGV4
cG9uZW50MiAgICAgICAgIElOVEVHRVIsICAtLSBkIG1vZCAocS0xKQorICBjb2VmZmljaWVudCAg
ICAgICBJTlRFR0VSLCAgLS0gKGludmVyc2Ugb2YgcSkgbW9kIHAKKyAgb3RoZXJQcmltZUluZm9z
ICAgT3RoZXJQcmltZUluZm9zIE9QVElPTkFMCit9CisKK090aGVyUHJpbWVJbmZvcyA6Oj0gU0VR
VUVOQ0UgU0laRSgxLi5NQVgpIE9GIE90aGVyUHJpbWVJbmZvCisKK090aGVyUHJpbWVJbmZvIDo6
PSBTRVFVRU5DRSB7CisgIHByaW1lIElOVEVHRVIsICAtLSByaQorICBleHBvbmVudCBJTlRFR0VS
LCAtLSBkaQorICBjb2VmZmljaWVudCBJTlRFR0VSIC0tIHRpCit9CisKK0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCA5MGUxZmUxYWVlMDFhZTJhZjMyYmFmMTczMzBkYmYyMDBmNTg1
MjdmLi40MDg2MjI4NzY3ODI2MWUyODJhZDI2YjlmNzg4NzYyMzg2N2FlMDFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjE5LDYgKzIxOSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
TElCUkFSSUVTCiAgICAgJHtMSUJHQ1JZUFRfTElCUkFSSUVTfQogICAgICR7TElCU0VDUkVUX0xJ
QlJBUklFU30KICAgICAke0xJQlNPVVBfTElCUkFSSUVTfQorICAgICR7TElCVEFTTjFfTElCUkFS
SUVTfQogICAgICR7TElCWE1MMl9MSUJSQVJJRVN9CiAgICAgJHtMSUJYU0xUX0xJQlJBUklFU30K
ICAgICAke0hZUEhFTl9MSUJSQVJJRVN9CkBAIC0yNDUsNiArMjQ2LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7TElCR0NSWVBUX0lOQ0xV
REVfRElSU30KICAgICAke0xJQlNFQ1JFVF9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJTT1VQX0lO
Q0xVREVfRElSU30KKyAgICAke0xJQlRBU04xX0lOQ0xVREVfRElSU30KICAgICAke0xJQlhNTDJf
SU5DTFVERV9ESVJ9CiAgICAgJHtMSUJYU0xUX0lOQ0xVREVfRElSfQogICAgICR7U1FMSVRFX0lO
Q0xVREVfRElSfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA0MTU3Mjc1MDBlYTM5YmUy
NDhlMjYyYjlmZjVmODg5M2VmNTc4YTU1Li5kYjFjZDMyNzc4ZWJjN2Q1YWYyYTgwNDEwOGRjZWQ3
OTNmMjY4MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMTcxLDYgKzE3MSw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfTElCUkFSSUVTfQogICAg
ICR7TElCR0NSWVBUX0xJQlJBUklFU30KICAgICAke0xJQlNPVVBfTElCUkFSSUVTfQorICAgICR7
TElCVEFTTjFfTElCUkFSSUVTfQogICAgICR7TElCWE1MMl9MSUJSQVJJRVN9CiAgICAgJHtMSUJY
U0xUX0xJQlJBUklFU30KICAgICAke1NRTElURV9MSUJSQVJJRVN9CkBAIC0xODUsNiArMTg2LDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtJQ1VfSU5D
TFVERV9ESVJTfQogICAgICR7TElCR0NSWVBUX0lOQ0xVREVfRElSU30KICAgICAke0xJQlNPVVBf
SU5DTFVERV9ESVJTfQorICAgICR7TElCVEFTTjFfSU5DTFVERV9ESVJTfQogICAgICR7TElCWE1M
Ml9JTkNMVURFX0RJUn0KICAgICAke0xJQlhTTFRfSU5DTFVERV9ESVJ9CiAgICAgJHtTUUxJVEVf
SU5DTFVERV9ESVJ9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
S2V5RUNHQ3J5cHQuY3BwCmluZGV4IDVlZmZkNmM2YTIwYTc0YTQzOGE0OTJkMDU1ODc2MWNiMzg5
NTRhZWIuLmMyMmE5ZGMwOTBmYjZkNjc2NmZhNzNlNDgyMjgxY2NmODUxMDViNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDxw
YWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9V
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTMs
MTEgKzE5NCwxNDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRKV0tQcml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICByZXR1cm4gY3JlYXRl
KGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwbGF0Zm9ybUtleS5y
ZWxlYXNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5RUM+
IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0
bWFwKQorc3RhdGljIGJvb2wgc3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGtleUlkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaWRl
bnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDE4PiBzX2lkX2VjUHVibGljS2V5IHsgeyAiMS4yLjg0MC4xMDA0NS4y
LjEiIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4gc19pZF9l
Y0RIIHsgeyAiMS4zLjEzMi4xLjEyIiB9IH07CisKKyAgICBhdXRvIHNpemUgPSBpZGVudGlmaWVy
LnNpemUoKTsKKyAgICBhdXRvKiBkYXRhID0gaWRlbnRpZmllci5kYXRhKCk7CisKKyAgICBzd2l0
Y2ggKGtleUlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkVDRFNBOgorICAgICAgICAvLyBFQ0RTQSBvbmx5IHN1cHBvcnRzIGlkLWVjUHVibGljS2V5IGFs
Z29yaXRobXMgZm9yIGltcG9ydGVkIGtleXMuCisgICAgICAgIGlmIChzaXplID09IHNfaWRfZWNQ
dWJsaWNLZXkuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX2lkX2VjUHVibGljS2V5LmRh
dGEoKSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDoKKyAgICAgICAg
Ly8gRUNESCBzdXBwb3J0cyBib3RoIGlkLWVjUHVibGljS2V5IGFuZCBpYy1lY0RIIGFsZ29yaXRo
bXMgZm9yIGltcG9ydGVkIGtleXMuCisgICAgICAgIGlmIChzaXplID09IHNfaWRfZWNQdWJsaWNL
ZXkuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX2lkX2VjUHVibGljS2V5LmRhdGEoKSwg
c2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHNpemUgPT0gc19p
ZF9lY0RILnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19pZF9lY0RILmRhdGEoKSwgc2l6
ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPENyeXB0b0tleUVDOjpOYW1lZEN1cnZlPiBjdXJ2ZUZvcklkZW50
aWZpZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQoreworICAgIHN0YXRpYyBj
b25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDIwPiBzX3NlY3AyNTZyMSB7IHsgIjEuMi44NDAuMTAw
NDUuMy4xLjciIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAxMz4g
c19zZWNwMzg0cjEgeyB7ICIxLjMuMTMyLjAuMzQiIH0gfTsKKyAgICBzdGF0aWMgY29uc3Qgc3Rk
OjphcnJheTx1aW50OF90LCAxMz4gc19zZWNwNTIxcjEgeyB7ICIxLjMuMTMyLjAuMzUiIH0gfTsK
KworICAgIGF1dG8gc2l6ZSA9IGlkZW50aWZpZXIuc2l6ZSgpOworICAgIGF1dG8qIGRhdGEgPSBp
ZGVudGlmaWVyLmRhdGEoKTsKKworICAgIGlmIChzaXplID09IHNfc2VjcDI1NnIxLnNpemUoKSAm
JiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwMjU2cjEuZGF0YSgpLCBzaXplKSkKKyAgICAgICAg
cmV0dXJuIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQMjU2OworICAgIGlmIChzaXplID09IHNf
c2VjcDM4NHIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19zZWNwMzg0cjEuZGF0YSgp
LCBzaXplKSkKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQMzg0Owor
ICAgIGlmIChzaXplID09IHNfc2VjcDUyMXIxLnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwg
c19zZWNwNTIxcjEuZGF0YSgpLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
Ly8gTm90IHlldCBzdXBwb3J0ZWQuCisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitS
ZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBWZWN0b3I8
dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMpCit7CisgICAgLy8gRGVjb2RlIHRoZSBgU3ViamVjdFB1YmxpY0tleUluZm9gIHN0
cnVjdHVyZSB1c2luZyB0aGUgcHJvdmlkZWQga2V5IGRhdGEuCisgICAgUEFMOjpUQVNOMTo6U3Ry
dWN0dXJlIHNwa2k7CisgICAgaWYgKCFQQUw6OlRBU04xOjpkZWNvZGVTdHJ1Y3R1cmUoJnNwa2ks
ICJXZWJDcnlwdG8uU3ViamVjdFB1YmxpY0tleUluZm8iLCBrZXlEYXRhKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAvLyBWYWxpZGF0ZSBgYWxnb3JpdGhtLmFsZ29yaXRobWAuCisg
ICAgeworICAgICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKHNw
a2ksICJhbGdvcml0aG0uYWxnb3JpdGhtIik7CisgICAgICAgIGlmICghYWxnb3JpdGhtKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFzdXBwb3J0ZWRBbGdvcml0
aG1JZGVudGlmaWVyKGlkZW50aWZpZXIsICphbGdvcml0aG0pKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgLy8gVmFsaWRhdGUgYGFsZ29yaXRobS5wYXJhbWV0ZXJz
YCBhbmQgdGhlcmVpbiBlbWJlZGRlZCBgRUNQYXJhbWV0ZXJzYC4KKyAgICB7CisgICAgICAgIGF1
dG8gcGFyYW1ldGVycyA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKHNwa2ksICJhbGdvcml0aG0u
cGFyYW1ldGVycyIpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBEZWNvZGUgdGhlIGBFQ1BhcmFtZXRlcnNgIHN0cnVj
dHVyZSB1c2luZyB0aGUgYGFsZ29yaXRobS5wYXJhbWV0ZXJzYCBkYXRhLgorICAgICAgICBQQUw6
OlRBU04xOjpTdHJ1Y3R1cmUgZWNQYXJhbWV0ZXJzOworICAgICAgICBpZiAoIVBBTDo6VEFTTjE6
OmRlY29kZVN0cnVjdHVyZSgmZWNQYXJhbWV0ZXJzLCAiV2ViQ3J5cHRvLkVDUGFyYW1ldGVycyIs
ICpwYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1
dG8gbmFtZWRDdXJ2ZSA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKGVjUGFyYW1ldGVycywgIm5h
bWVkQ3VydmUiKTsKKyAgICAgICAgaWYgKCFuYW1lZEN1cnZlKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJDdXJ2ZSA9IGN1cnZlRm9ySWRlbnRp
ZmllcigqbmFtZWRDdXJ2ZSk7CisgICAgICAgIGlmICghcGFyYW1ldGVyQ3VydmUgfHwgKnBhcmFt
ZXRlckN1cnZlICE9IGN1cnZlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgLy8gUmV0cmlldmUgdGhlIGBzdWJqZWN0UHVibGljS2V5YCBkYXRhIGFuZCBlbWJlZCBp
dCBpbnRvIHRoZSBgcHVibGljLWtleWAgcy1leHByZXNzaW9uLgorICAgIFBBTDo6R0NyeXB0OjpI
YW5kbGU8Z2NyeV9zZXhwX3Q+IHBsYXRmb3JtS2V5OworICAgIHsKKyAgICAgICAgYXV0byBzdWJq
ZWN0UHVibGljS2V5ID0gUEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoc3BraSwgInN1YmplY3RQdWJs
aWNLZXkiKTsKKyAgICAgICAgaWYgKCFzdWJqZWN0UHVibGljS2V5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gQmFpbCBpZiB0aGUgYHN1YmplY3RQdWJsaWNLZXlg
IGRhdGEgc2l6ZSBkb2Vzbid0IG1hdGNoIHRoZSBzaXplIG9mIGFuIHVuY29tcHJlc3NlZCBwb2lu
dAorICAgICAgICAvLyBmb3IgdGhpcyBjdXJ2ZSwgb3IgaWYgdGhlIGZpcnN0IGJ5dGUgaW4gdGhl
IGBzdWJqZWN0UHVibGljS2V5YCBkYXRhIGlzbid0IDB4MDQsIGFzIHJlcXVpcmVkCisgICAgICAg
IC8vIGZvciBhbiB1bmNvbXByZXNzZWQgRUMgcG9pbnQgZW5jb2RlZCBpbiBhbiBvY3RldCBzdHJp
bmcuCisgICAgICAgIGlmIChzdWJqZWN0UHVibGljS2V5LT5zaXplKCkgIT0gdW5jb21wcmVzc2Vk
UG9pbnRTaXplRm9yQ3VydmUoY3VydmUpIHx8IHN1YmplY3RQdWJsaWNLZXktPmF0KDApICE9IDB4
MDQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBDb252ZXJ0IFgg
YW5kIFkgY29vcmRpbmF0ZSBkYXRhIGludG8gTVBJcy4KKyAgICAgICAgdW5zaWduZWQgY29vcmRp
bmF0ZVNpemUgPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplRm9yQ3VydmUoY3VydmUpOwor
ICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHhNUEksIHlNUEk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3NjYW4oJnhN
UEksIEdDUllNUElfRk1UX1VTRywgJnN1YmplY3RQdWJsaWNLZXktPmF0KDEpLCBjb29yZGluYXRl
U2l6ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgeworICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGVycm9yID0gZ2NyeV9tcGlfc2NhbigmeU1QSSwgR0NSWU1QSV9GTVRfVVNHLCAmc3ViamVjdFB1
YmxpY0tleS0+YXQoMSArIGNvb3JkaW5hdGVTaXplKSwgY29vcmRpbmF0ZVNpemUsIG51bGxwdHIp
OworICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAg
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ29u
c3RydWN0IGFuIE1QSSBwb2ludCBmcm9tIHRoZSBYIGFuZCBZIGNvb3JkaW5hdGVzIGFuZCB1c2lu
ZyAxIGFzIHRoZSBaIGNvb3JkaW5hdGUuCisgICAgICAgIC8vIFRoaXMgYWx3YXlzIGFsbG9jYXRl
cyB0aGUgZ2NyeV9tcGlfcG9pbnRfdCBvYmplY3QuCisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9tcGlfcG9pbnRfdD4gcG9pbnQoZ2NyeV9tcGlfcG9pbnRfc2V0KG51bGxwdHIsIHhN
UEksIHlNUEksIEdDUllNUElfQ09OU1RfT05FKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGFuIEVD
IGNvbnRleHQgZm9yIHRoZSBzcGVjaWZpZWQgY3VydmUuCisgICAgICAgIFBBTDo6R0NyeXB0OjpI
YW5kbGU8Z2NyeV9jdHhfdD4gY29udGV4dDsKKyAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9tcGlfZWNfbmV3KCZjb250ZXh0LCBudWxscHRyLCBjdXJ2ZU5hbWUoY3VydmUpKTsKKyAg
ICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIEJhaWwgaWYgdGhlIGNvbnN0cnVjdGVkIE1QSSBwb2ludCBp
cyBub3Qgb24gdGhlIHNwZWNpZmllZCBFQyBjdXJ2ZS4KKyAgICAgICAgaWYgKCFnY3J5X21waV9l
Y19jdXJ2ZV9wb2ludChwb2ludCwgY29udGV4dCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmcGxhdGZvcm1LZXksIG51bGxw
dHIsICIocHVibGljLWtleShlY2MoY3VydmUgJXMpKHEgJWIpKSkiLAorICAgICAgICAgICAgY3Vy
dmVOYW1lKGN1cnZlKSwgc3ViamVjdFB1YmxpY0tleS0+c2l6ZSgpLCBzdWJqZWN0UHVibGljS2V5
LT5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAg
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRmluYWxseSBjcmVhdGUgYSBu
ZXcgQ3J5cHRvS2V5RUMgb2JqZWN0LCB0cmFuc2ZlcnJpbmcgdG8gaXQgb3duZXJzaGlwIG9mIHRo
ZSBgcHVibGljLWtleWAgcy1leHByZXNzaW9uLgorICAgIHJldHVybiBjcmVhdGUoaWRlbnRpZmll
ciwgY3VydmUsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcGxhdGZvcm1LZXkucmVsZWFzZSgpLCBl
eHRyYWN0YWJsZSwgdXNhZ2VzKTsKIH0KIAogUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1JbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1
cnZlLCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZExpYnRhc24xLmNtYWtlIGIvU291cmNlL2NtYWtlL0Zp
bmRMaWJ0YXNuMS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWU2ZGYzN2M5Mjg1MWJkNTgxNzRmYzM5N2Jm
OWVkNDBmNjQ5OGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRMaWJ0YXNu
MS5jbWFrZQpAQCAtMCwwICsxLDQ3IEBACisjIC0gVHJ5IHRvIGZpbmQgbGlidGFzbjEuCisjIE9u
Y2UgZG9uZSwgdGhpcyB3aWxsIGRlZmluZQorIworIyAgTElCVEFTTjFfSU5DTFVERV9ESVJTIC0g
dGhlIGxpYnRhc24xIGluY2x1ZGUgZGlyZWN0b3JpZXMKKyMgIExJQlRBU04xX0xJQlJBUklFUyAt
IHRoZSBsaWJ0YXNuMSBsaWJyYXJpZXMuCisjCisjIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xv
Z2ljYWwgR3JvdXAgQi5WLgorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ZpbmRfcGFja2FnZShQa2dDb25m
aWcpCitwa2dfY2hlY2tfbW9kdWxlcyhQQ19MSUJUQVNOMSBsaWJ0YXNuMSkKKworZmluZF9wYXRo
KExJQlRBU04xX0lOQ0xVREVfRElSUworICAgIE5BTUVTIGxpYnRhc24xLmgKKyAgICBQQVRIUyAk
e1BDX0xJQlRBU04xX0lOQ0xVREVESVJ9ICR7UENfTElCVEFTTjFfSU5DTFVERV9ESVJTfQorKQor
CitmaW5kX2xpYnJhcnkoTElCVEFTTjFfTElCUkFSSUVTCisgICAgTkFNRVMgdGFzbjEKKyAgICBQ
QVRIUyAke1BDX0xJQlRBU04xX0xJQkRJUn0gJHtQQ19MSUJUQVNOMV9MSUJSQVJZX0RJUlN9Cisp
CisKK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitGSU5EX1BBQ0tBR0Vf
SEFORExFX1NUQU5EQVJEX0FSR1MoTElCVEFTTjEgREVGQVVMVF9NU0cgTElCVEFTTjFfTElCUkFS
SUVTKQorCittYXJrX2FzX2FkdmFuY2VkKExJQlRBU04xX0lOQ0xVREVfRElSUyBMSUJUQVNOMV9M
SUJSQVJJRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGRmMzA5NjJlNmY5N2UwMzk2N2ZmY2Qz
MGFmYWQwZjEyNDQwNmE2NmUuLmM3ZmNlY2FmODIyM2UyYzMzYTdkNGM1ZTFkNjJmYzEzZTg2ZDMw
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0yNzEsNiArMjcxLDEwIEBAIGlmIChFTkFCTEVf
TUVESUFfU1RSRUFNIE9SIEVOQUJMRV9XRUJfUlRDKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9T
VUJUTEVfQ1JZUFRPKQorICAgIGZpbmRfcGFja2FnZShMaWJ0YXNuMSBSRVFVSVJFRCkKKyAgICBp
ZiAoTk9UIExJQlRBU04xX0ZPVU5EKQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJ0
YXNuMSBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9ydC4iKQorICAg
IGVuZGlmICgpCiAgICAgaWYgKExJQkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcuMCkK
ICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVpcmVk
IHRvIGVuYWJsZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKaW5kZXggZGM1Y2FhZjM4ODNhYmEyMzQxY2NkZjE5OTc1ZjM0Njk5YjZjYTUw
Ni4uZTcxYzBiODE2MjRkOGIyNmM1OWMyZGY4MDJiNWE5YjA0NWI1YmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2UKQEAgLTExOSw2ICsxMTksMTAgQEAgaWYgKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCisgICAgZmluZF9w
YWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQorICAgIGlmIChOT1QgTElCVEFTTjFfRk9VTkQpCisg
ICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYnRhc24xIGlzIHJlcXVpcmVkIHRvIGVuYWJs
ZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpCisgICAgZW5kaWYgKCkKICAgICBpZiAoTElCR0NS
WVBUX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEuNy4wKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VS
Uk9SICJsaWJnY3J5cHQgMS43LjAgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFdlYiBDcnlwdG8gQVBJ
IHN1cHBvcnQuIikKICAgICBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFjOTZiMDZkMmM0YjE0MzBhMWMyMjdi
OTMwZjQxNjlmNDY3NDhkNDguLjBjZGZlODAxMjQ1MjEyOGEyYTQwMjg5Y2Y4MGFiOTU5OTFmZjMz
NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0xOCAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gSW1wbGVtZW50IENyeXB0b0tl
eUVDIFNQS0kgaW1wb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyOTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgVW5za2lw
IEVDLWJhc2VkIFNQS0kgaW1wb3J0IHRlc3RzIHRoYXQgYXJlIG5vdyBwYXNzaW5nLgorCiAyMDE3
LTA2LTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEltcGxlbWVudCBET01RdWFkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDFlMzQ2OGQzYmFhNGMxMmE3NzI2MzZmMGIyMDE5YWE5YThhYTFkZGYuLjJlY2Fi
NWUyOGE2N2YxMDkzZmZmNGMwZTgzYzUxMTQ3MWU1NDZiNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC03NzMsMjAgKzc3MywxNSBAQCB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2ktcDI1
Ni5odG1sIFsgU2tpcAogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtZ2Vu
ZXJhdGUtZXhwb3J0LWtleS1zcGtpLXAzODQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEz
MzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXBrY3M4LWtleS1wMjU2Lmh0bWwgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9ydC1wa2NzOC1r
ZXktcDM4NC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUv
ZWNkaC1pbXBvcnQtc3BraS1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtc3BraS1rZXktcDM4NC5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUtZXhwb3J0
LWtleS1wa2NzOC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvZWNkc2EtZ2VuZXJhdGUtZXhwb3J0LWtleS1zcGtpLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQtc3Br
aS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Vj
LWltcG9ydC1qd2sta2V5LWV4cG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1qd2sta2V5LWV4cG9ydC1zcGtpLWtl
eS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1w
b3J0LXJhdy1rZXktZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1qd2sta2V5Lmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQt
cGtjczgta2V5LWV4cG9ydC1wa2NzOC1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS1leHBvcnQtcGtjczgt
a2V5LXAzODQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxl
L2VjLWltcG9ydC1zcGtpLWtleS1leHBvcnQtandrLWtleS5odG1sIFsgU2tpcCBdCi13ZWJraXQu
b3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1yYXct
a2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1p
bXBvcnQtc3BraS1rZXktZXhwb3J0LXNwa2kta2V5LXAyNTYuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS1leHBvcnQtc3Br
aS1rZXktcDM4NC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvcnNhLWV4cG9ydC1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFNraXAgXQpAQCAt
ODMyLDcgKzgyNyw2IEBAIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxl
L2Flcy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtZ2VuZXJhdGUtZXhwb3J0LXBrY3M4LWtleS5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1n
ZW5lcmF0ZS1leHBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtaW1wb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBd
Ci13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1pbXBvcnQtc3Br
aS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9z
dWJ0bGUvZWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2htYWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2Et
cG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZwppbmRleCAwYmFlOWU0ODNlZTU3NDBkZDNmOWFiNTA4ZDc5ZjNkZmJkYzA2Yjdj
Li5kNGMzMjM2MjQ0YzFiNmM5MzdlNGNjZjJmZTAwNjRhMjdkNmJlODQ1IDEwMDY0NAotLS0gYS9D
aGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDYtMTggIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIElt
cGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjkyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRMaWJ0YXNuMS5jbWFr
ZTogQWRkZWQuCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IFJlcXVp
cmUgbGlidGFzbjEgd2hlbiBTVUJUTEVfQ1JZUFRPIGlzIGVuYWJsZWQuCisgICAgICAgICogU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6IERpdHRvLgorCiAyMDE3LTA2LTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IE1hYyBD
TWFrZSBidWlsZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313292</attachid>
            <date>2017-06-19 07:18:57 -0700</date>
            <delta_ts>2017-06-20 23:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172927-20170619161856.patch</filename>
            <type>text/plain</type>
            <size>32673</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2YjQzYzk5MDBiYmZj
NzkzZGEzY2VkYWE2ZGYwYzYxMjM5MDNiNC4uZmY1NjM1M2ZiYWE0YTU3Nzg3YzFhZDE3OTk2NGY5
OThmZmI3M2JiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gYWZmZWN0ZWQgdGVzdHMgYXJl
IG5vdyBwYXNzaW5nIGFuZCBhcmUgdW5za2lwcGVkLgorCisgICAgICAgIEltcGxlbWVudCBsaWJn
Y3J5cHQtYmFzZWQgc3VwcG9ydCBmb3IgU1BLSSBpbXBvcnRzIG9mIEVDIGtleXMuCisKKyAgICAg
ICAgVXNpbmcgbGlidGFzbjEgdGhyb3VnaCB0aGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHdyYXBw
ZXJzLCB0aGUgZ2l2ZW4ga2V5IGRhdGEKKyAgICAgICAgaXMgZGVjb2RlZCBhZ2FpbnN0IHRoZSBT
dWJqZWN0UHVibGljS2V5SW5mbyBBU04uMSBkZWZpbml0aW9uLiBUaGUgYWxnb3JpdGhtCisgICAg
ICAgIG1lbWJlciBpcyB0aGVuIHByb3Blcmx5IHZhbGlkYXRlZCwgbWFraW5nIHN1cmUgdGhhdCB0
aGUga2V5IGFsZ29yaXRobSBpZGVuZml0aWVyCisgICAgICAgIGlzIHN1cHBvcnRlZCBhbmQgdGhh
dCB0aGUgYWxnb3JpdGhtIHBhcmFtZXRlcnMgc3BlY2lmeSB0aGUgY29ycmVjdCBFQyBjdXJ2ZS4K
KworICAgICAgICBUaGUgcHVibGljIGtleSBiaXQgc3RyaW5nIGlzIHRoZW4gcmV0cmlldmVkIGFu
ZCB2YWxpZGF0ZWQsIGVuc3VyaW5nIGl0IHJlcHJlc2VudHMKKyAgICAgICAgYW4gdW5jb21wcmVz
c2VkIEVDIHBvaW50IHRoYXQgaXMgb2YgdmFsaWQgc2l6ZSBmb3IgdGhlIHNwZWNpZmllZCBFQyBj
dXJ2ZS4gVGhlCisgICAgICAgIHBvaW50IGlzIHRoZW4gdGVzdGVkIHRocm91Z2ggYW4gRUMgY29u
dGV4dCB0byBtYWtlIHN1cmUgaXQncyBwb3NpdGlvbmVkIG9uIHRoZQorICAgICAgICBzcGVjaWZp
ZWQgRUMgY3VydmUuCisKKyAgICAgICAgRmluYWxseSwgdGhlIGN1cnZlIG5hbWUgYW5kIHVuY29t
cHJlc3NlZCBwb2ludCBkYXRhIGFyZSBlbWJlZGRlZCBpbnRvIGEKKyAgICAgICAgYHB1YmxpYy1r
ZXlgIHMtZXhwcmVzc2lvbiB0aGF0IHdpbGwgYmUgdXNlZCB0aHJvdWdoIHRoZSBsaWJnY3J5cHQg
QVBJLiBUaGlzIGlzCisgICAgICAgIHRoZW4gdXNlZCwgYWxvbmcgd2l0aCBvdGhlciBpbmZvcm1h
dGlvbiwgdG8gY3JlYXRlIGEgdmFsaWQgQ3J5cHRvS2V5RUMgb2JqZWN0LgorCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IFVzZSBMSUJUQVNOMV9JTkNMVURFX0RJUkVDVE9SSUVTIGFuZCBM
SUJUQVNOMV9MSUJSQVJJRVMuCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IERpdHRvLgor
ICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJ2ZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0U3BraSk6CisKIDIwMTctMDYtMTkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBNaXNzaW5nIDxmdW5jdGlvbmFsPiBpbmNs
dWRlcyBtYWtlIGJ1aWxkcyBmYWlsIHdpdGggR0NDIDcueApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXgg
ODU4ZTRmZTgzZWU3MDNlODhlOTc1MjMwNDQ3YmMwNDdlOGFmNDY1My4uNjkxYTlmNTc3MzhmNGM1
ZTg4MjFlYzlkNTQ3MWJmMDkwOTY5ODM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MzUgQEAKIDIwMTctMDYtMTkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgog
CisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGltcG9ydHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjkyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZpbGUg
dGhhdCBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nIHdpdGggbGlidGFz
bjEgQVBJcy4KKworICAgICAgICBUaGUgcHJlY29tcHV0ZWQgQVNOLjEgZGVjbGFyYXRpb25zLCBn
ZW5lcmF0ZWQgZnJvbSB0aGUgV2ViQ3J5cHRvLmFzbiBmaWxlIHdpdGgKKyAgICAgICAgdGhlIGFz
bjFQYXJzZXIgdG9vbCwgYXJlIHVzZWQgdG8gZW5hYmxlIGNvbnN0cnVjdGlvbiBvZiBBU04uMSBz
dHJ1Y3R1cmVzIHRoYXQKKyAgICAgICAgYXJlIHRoZW4gdXNlZCB0byBkZWNvZGUgdGhlIFNQS0kg
b3IgUEtDUyM4IGRhdGEgdGhyb3VnaCB0aGUgZGVjb2RlU3RydWN0dXJlKCkKKyAgICAgICAgZnVu
Y3Rpb24uIFJhdyBkYXRhIG9mIGVhY2ggZWxlbWVudCBpbiB0aGF0IHN0cnVjdHVyZSBjYW4gYmUg
cmV0cmlldmVkIHRocm91ZyB0aGUKKyAgICAgICAgZWxlbWVudERhdGEoKSBmdW5jdGlvbi4KKwor
ICAgICAgICBUaGUgU3RydWN0dXJlIGNsYXNzIGlzIGFkZGVkIGFzIGEgd3JhcHBlciBmb3IgYXNu
MV9ub2RlIG9iamVjdHMgdGhhdCBhcmUgdXNlZAorICAgICAgICBhcyBkZWNvZGluZyB0YXJnZXRz
LCBzaW1wbGlmeWluZyBsaWZldGltZSBtYW5hZ2VtZW50IG9mIHRoZXNlIG9iamVjdHMuCisKKyAg
ICAgICAgKiBwYWwvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGFsL1BsYXRmb3JtV1BF
LmNtYWtlOgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcDogQWRkZWQu
CisgICAgICAgIChQQUw6OlRBU04xOjphc24xRGVmaW5pdGlvbnMpOgorICAgICAgICAoUEFMOjpU
QVNOMTo6ZGVjb2RlU3RydWN0dXJlKToKKyAgICAgICAgKFBBTDo6VEFTTjE6OmVsZW1lbnREYXRh
KToKKyAgICAgICAgKiBwYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAg
ICAgKFBBTDo6VEFTTjE6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChQQUw6OlRB
U04xOjpTdHJ1Y3R1cmU6Om9wZXJhdG9yJik6CisgICAgICAgIChQQUw6OlRBU04xOjpTdHJ1Y3R1
cmU6Om9wZXJhdG9yIGFzbjFfbm9kZSk6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9XZWJD
cnlwdG8uYXNuOiBBZGRlZC4KKworMjAxNy0wNi0xOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjIxODQ4
NC4KIAogICAgICAgICAqIHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oOiBEcm9wIHRoZSBH
Q3J5cHQgcHJlZml4IGZyb20gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA3NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiLi5hZmE1
YTlhMDU5ODU4Y2NiMjdiNjJmN2UxZTJhZWM4Y2M2OTNiYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEsMyArMSw1IEBACiBsaXN0KEFQUEVORCBQQUxf
U09VUkNFUwogICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorCisgICAg
Y3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtV1BFLmNtYWtlCmluZGV4IDc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2
M2IuLmFmYTVhOWEwNTk4NThjY2IyN2I2MmY3ZTFlMmFlYzhjYzY5M2JiZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMSwzICsxLDUgQEAKIGxpc3QoQVBQ
RU5EIFBBTF9TT1VSQ0VTCiAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3Bw
CisKKyAgICBjcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAogKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZkZjA1
NTE3ZTYwMTBjYjA4NDJlYzU0NTU3NjUyMzA4NTY1NzU0OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKQEAgLTAsMCAr
MSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIu
Vi4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxtdXRleD4K
KworbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgVEFTTjEgeworCitzdGF0aWMgYXNuMV9ub2Rl
IGFzbjFEZWZpbml0aW9ucygpCit7CisgICAgLy8gR2VuZXJhdGVkIHdpdGggYGFzbjFQYXJzZXIg
V2ViQ3J5cHRvLmFzbmAuCisKKyAgICBzdGF0aWMgYXNuMV9ub2RlIHNfZGVmaW5pdGlvbnM7Cisg
ICAgc3RhdGljIGNvbnN0IGFzbjFfc3RhdGljX25vZGUgc19XZWJDcnlwdG9BU04xW10gPSB7Cisg
ICAgICAgIHsgIldlYkNyeXB0byIsIDUzNjg3Mjk3NiwgbnVsbHB0ciB9LAorICAgICAgICB7IG51
bGxwdHIsIDEwNzM3NDE4MzYsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiU3ViamVjdFB1YmxpY0tl
eUluZm8iLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgImFsZ29yaXRobSIsIDEw
NzM3NDE4MjYsICJBbGdvcml0aG1JZGVudGlmaWVyIn0sCisgICAgICAgIHsgInN1YmplY3RQdWJs
aWNLZXkiLCA2LCBudWxscHRyIH0sCisgICAgICAgIHsgIkFsZ29yaXRobUlkZW50aWZpZXIiLCAx
NjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgImFsZ29yaXRobSIsIDEwNzM3NDE4MzYs
IG51bGxwdHIgfSwKKyAgICAgICAgeyAicGFyYW1ldGVycyIsIDU0MTA4MTYxMywgbnVsbHB0ciB9
LAorICAgICAgICB7ICJhbGdvcml0aG0iLCAxLCBudWxscHRyIH0sCisgICAgICAgIHsgIlByaXZh
dGVLZXlJbmZvIiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2ZXJzaW9uIiwg
MTA3Mzc0MTgyNiwgIlZlcnNpb24ifSwKKyAgICAgICAgeyAicHJpdmF0ZUtleUFsZ29yaXRobSIs
IDEwNzM3NDE4MjYsICJQcml2YXRlS2V5QWxnb3JpdGhtSWRlbnRpZmllciJ9LAorICAgICAgICB7
ICJwcml2YXRlS2V5IiwgMTA3Mzc0MTgyNiwgIlByaXZhdGVLZXkifSwKKyAgICAgICAgeyAiYXR0
cmlidXRlcyIsIDUzNjg5NTQ5MCwgIkF0dHJpYnV0ZXMifSwKKyAgICAgICAgeyBudWxscHRyLCA0
MTA0LCAiMCJ9LAorICAgICAgICB7ICJWZXJzaW9uIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAor
ICAgICAgICB7ICJQcml2YXRlS2V5QWxnb3JpdGhtSWRlbnRpZmllciIsIDEwNzM3NDE4MjYsICJB
bGdvcml0aG1JZGVudGlmaWVyIn0sCisgICAgICAgIHsgIlByaXZhdGVLZXkiLCAxMDczNzQxODMx
LCBudWxscHRyIH0sCisgICAgICAgIHsgIkF0dHJpYnV0ZXMiLCAxNjEwNjEyNzUxLCBudWxscHRy
IH0sCisgICAgICAgIHsgbnVsbHB0ciwgMiwgIkF0dHJpYnV0ZSJ9LAorICAgICAgICB7ICJBdHRy
aWJ1dGUiLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAgIHsgInR5cGUiLCAxMDczNzQx
ODM2LCBudWxscHRyIH0sCisgICAgICAgIHsgInZhbHVlcyIsIDIsICJBdHRyaWJ1dGVTZXRWYWx1
ZSJ9LAorICAgICAgICB7ICJBdHRyaWJ1dGVTZXRWYWx1ZSIsIDE2MTA2MTI3NTEsIG51bGxwdHIg
fSwKKyAgICAgICAgeyBudWxscHRyLCAxMywgbnVsbHB0ciB9LAorICAgICAgICB7ICJFQ1BhcmFt
ZXRlcnMiLCAxNjEwNjEyNzU0LCBudWxscHRyIH0sCisgICAgICAgIHsgIm5hbWVkQ3VydmUiLCAx
MiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJFQ1ByaXZhdGVLZXkiLCAxNjEwNjEyNzQxLCBudWxs
cHRyIH0sCisgICAgICAgIHsgInZlcnNpb24iLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAg
ICAgIHsgInByaXZhdGVLZXkiLCAxMDczNzQxODMxLCBudWxscHRyIH0sCisgICAgICAgIHsgInBh
cmFtZXRlcnMiLCAxNjEwNjM3MzE0LCAiRUNQYXJhbWV0ZXJzIn0sCisgICAgICAgIHsgbnVsbHB0
ciwgMjA1NiwgIjAifSwKKyAgICAgICAgeyAicHVibGljS2V5IiwgNTM2ODk1NDk0LCBudWxscHRy
IH0sCisgICAgICAgIHsgbnVsbHB0ciwgMjA1NiwgIjEifSwKKyAgICAgICAgeyAiUlNBUHVibGlj
S2V5IiwgMTYxMDYxMjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJtb2R1bHVzIiwgMTA3Mzc0
MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwdWJsaWNFeHBvbmVudCIsIDMsIG51bGxwdHIg
fSwKKyAgICAgICAgeyAiUlNBUHJpdmF0ZUtleSIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAg
ICAgICAgeyAidmVyc2lvbiIsIDEwNzM3NDE4MjYsICJWZXJzaW9uIn0sCisgICAgICAgIHsgIm1v
ZHVsdXMiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInB1YmxpY0V4cG9uZW50
IiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcml2YXRlRXhwb25lbnQiLCAx
MDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInByaW1lMSIsIDEwNzM3NDE4MjcsIG51
bGxwdHIgfSwKKyAgICAgICAgeyAicHJpbWUyIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAg
ICAgICB7ICJleHBvbmVudDEiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgImV4
cG9uZW50MiIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiY29lZmZpY2llbnQi
LCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgIm90aGVyUHJpbWVJbmZvcyIsIDE2
Mzg2LCAiT3RoZXJQcmltZUluZm9zIn0sCisgICAgICAgIHsgIk90aGVyUHJpbWVJbmZvcyIsIDE2
MTI3MDk4OTksIG51bGxwdHIgfSwKKyAgICAgICAgeyAiTUFYIiwgMTA3NDI2NjEyMiwgIjEifSwK
KyAgICAgICAgeyBudWxscHRyLCAyLCAiT3RoZXJQcmltZUluZm8ifSwKKyAgICAgICAgeyAiT3Ro
ZXJQcmltZUluZm8iLCA1MzY4NzA5MTcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJpbWUiLCAx
MDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgImV4cG9uZW50IiwgMTA3Mzc0MTgyNywg
bnVsbHB0ciB9LAorICAgICAgICB7ICJjb2VmZmljaWVudCIsIDMsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyBudWxscHRyLCAwLCBudWxscHRyIH0KKyAgICB9OworCisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIHNfb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywgW10geyBh
c24xX2FycmF5MnRyZWUoc19XZWJDcnlwdG9BU04xLCAmc19kZWZpbml0aW9ucywgbnVsbHB0cik7
IH0pOworCisgICAgcmV0dXJuIHNfZGVmaW5pdGlvbnM7Cit9CisKK2Jvb2wgZGVjb2RlU3RydWN0
dXJlKGFzbjFfbm9kZSogcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSkKK3sKKyAgICBpbnQgcmV0ID0gYXNuMV9jcmVhdGVfZWxlbWVudChh
c24xRGVmaW5pdGlvbnMoKSwgZWxlbWVudE5hbWUsIHJvb3QpOworICAgIGlmIChyZXQgIT0gQVNO
MV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgZGF0YVNpemUgPSBk
YXRhLnNpemUoKTsKKyAgICByZXQgPSBhc24xX2Rlcl9kZWNvZGluZzIocm9vdCwgZGF0YS5kYXRh
KCksICZkYXRhU2l6ZSwgQVNOMV9ERUNPREVfRkxBR19TVFJJQ1RfREVSLCBudWxscHRyKTsKKyAg
ICByZXR1cm4gcmV0ID09IEFTTjFfU1VDQ0VTUzsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVtZW50
TmFtZSkKK3sKKyAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICB1bnNpZ25lZCB0eXBlID0gMDsKKyAg
ICBpbnQgcmV0ID0gYXNuMV9yZWFkX3ZhbHVlX3R5cGUocm9vdCwgZWxlbWVudE5hbWUsIG51bGxw
dHIsICZsZW5ndGgsICZ0eXBlKTsKKyAgICBpZiAocmV0ICE9IEFTTjFfTUVNX0VSUk9SKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKHR5cGUgPT0gQVNOMV9FVFlQRV9C
SVRfU1RSSU5HKSB7CisgICAgICAgIGlmIChsZW5ndGggJSA4KQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgbGVuZ3RoIC89IDg7CisgICAgfQorCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEobGVuZ3RoKTsKKyAgICByZXQgPSBhc24xX3JlYWRfdmFsdWUocm9vdCwg
ZWxlbWVudE5hbWUsIGRhdGEuZGF0YSgpLCAmbGVuZ3RoKTsKKyAgICBpZiAocmV0ICE9IEFTTjFf
U1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBkYXRh
OworfQorCit9IC8vIG5hbWVzcGFjZSBUQVNOMQorfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk2M2Y0NjUwNmNlYmQ5ZDZmMTVjNzlhZmIwOTNkNTRiZDA5MzViOTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaApAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxsaWJ0YXNuMS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFBBTCB7CituYW1lc3Bh
Y2UgVEFTTjEgeworCitjbGFzcyBTdHJ1Y3R1cmUgeworcHVibGljOgorICAgIFN0cnVjdHVyZSgp
ID0gZGVmYXVsdDsKKworICAgIH5TdHJ1Y3R1cmUoKQorICAgIHsKKyAgICAgICAgYXNuMV9kZWxl
dGVfc3RydWN0dXJlKCZtX3N0cnVjdHVyZSk7CisgICAgfQorCisgICAgU3RydWN0dXJlKGNvbnN0
IFN0cnVjdHVyZSYpID0gZGVsZXRlOworICAgIFN0cnVjdHVyZSYgb3BlcmF0b3I9KGNvbnN0IFN0
cnVjdHVyZSYpID0gZGVsZXRlOworCisgICAgU3RydWN0dXJlKFN0cnVjdHVyZSYmKSA9IGRlbGV0
ZTsKKyAgICBTdHJ1Y3R1cmUmIG9wZXJhdG9yPShTdHJ1Y3R1cmUmJikgPSBkZWxldGU7CisKKyAg
ICBhc24xX25vZGUqIG9wZXJhdG9yJigpIHsgcmV0dXJuICZtX3N0cnVjdHVyZTsgfQorICAgIG9w
ZXJhdG9yIGFzbjFfbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CisKK3ByaXZh
dGU6CisgICAgYXNuMV9ub2RlIG1fc3RydWN0dXJlIHsgbnVsbHB0ciB9OworfTsKKworYm9vbCBk
ZWNvZGVTdHJ1Y3R1cmUoYXNuMV9ub2RlKiByb290LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUp
OworCit9IC8vIG5hbWVzcGFjZSBUQVNOMQorfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9XZWJDcnlwdG8uYXNuIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvV2ViQ3J5cHRvLmFzbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jODEzYjg5NjQxMjQ3MzUzNDcxNzk1MWZmNjViYjQ4M2E4YzI4Mzc2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvV2ViQ3J5cHRvLmFzbgpA
QCAtMCwwICsxLDkwIEBACitXZWJDcnlwdG8geyB9CisKK0RFRklOSVRJT05TIEVYUExJQ0lUIFRB
R1MgOjo9CisKK0JFR0lOCisKKy0tIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzUyODAudHh0
IEFwcGVuZGl4IEEuMQorCitTdWJqZWN0UHVibGljS2V5SW5mbyA6Oj0gIFNFUVVFTkNFICB7Cisg
IGFsZ29yaXRobSAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCisgIHN1YmplY3RQdWJsaWNL
ZXkgIEJJVCBTVFJJTkcKK30KKworQWxnb3JpdGhtSWRlbnRpZmllciA6Oj0gIFNFUVVFTkNFICB7
CisgIGFsZ29yaXRobSAgIE9CSkVDVCBJREVOVElGSUVSLAorICBwYXJhbWV0ZXJzICBBTlkgREVG
SU5FRCBCWSBhbGdvcml0aG0gT1BUSU9OQUwKK30KKworLS0gaHR0cDovL3d3dy5pZXRmLm9yZy9y
ZmMvcmZjNTIwOC50eHQgQXBwZW5kaXggQQorCitQcml2YXRlS2V5SW5mbyA6Oj0gU0VRVUVOQ0Ug
eworICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgIFZlcnNpb24sCisgIHByaXZhdGVLZXlBbGdv
cml0aG0gICAgICAgUHJpdmF0ZUtleUFsZ29yaXRobUlkZW50aWZpZXIsCisgIHByaXZhdGVLZXkg
ICAgICAgICAgICAgICAgUHJpdmF0ZUtleSwKKyAgYXR0cmlidXRlcyAgICAgICAgICAgWzBdICBJ
TVBMSUNJVCBBdHRyaWJ1dGVzIE9QVElPTkFMCit9CisKK1ZlcnNpb24gOjo9IElOVEVHRVIKKwor
UHJpdmF0ZUtleUFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKKwor
UHJpdmF0ZUtleSA6Oj0gT0NURVQgU1RSSU5HCisKK0F0dHJpYnV0ZXMgOjo9IFNFVCBPRiBBdHRy
aWJ1dGUKKworQXR0cmlidXRlIDo6PSBTRVFVRU5DRSB7CisgIHR5cGUgICAgT0JKRUNUIElERU5U
SUZJRVIsCisgIHZhbHVlcyAgQXR0cmlidXRlU2V0VmFsdWUKK30KKworQXR0cmlidXRlU2V0VmFs
dWUgOjo9IFNFVCBPRiBBTlkKKworLS0gaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTQ4MC50
eHQgQXBwZW5kaXggQQorCitFQ1BhcmFtZXRlcnMgOjo9IENIT0lDRSB7CisgIG5hbWVkQ3VydmUg
ICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiAtLSBNVVNUIGJlIHN1cHBvcnRlZC4KKyAgLS0gaW1w
bGljaXRDdXJ2ZSAgIE5VTEwgLSBNVVNUIE5PVCBiZSB1c2VkLgorICAtLSBzcGVjaWZpZWRDdXJ2
ZSAgU3BlY2lmaWVkRUNEb21haW4gLSBNVVNUIE5PVCBiZSB1c2VkLgorfQorCistLSBodHRwOi8v
d3d3LmlldGYub3JnL3JmYy9yZmM1OTE1LnR4dCBBcHBlbmRpeCBBCisKK0VDUHJpdmF0ZUtleSA6
Oj0gU0VRVUVOQ0UgeworICB2ZXJzaW9uICAgICAgICBJTlRFR0VSLAorICBwcml2YXRlS2V5ICAg
ICBPQ1RFVCBTVFJJTkcsCisgIHBhcmFtZXRlcnMgWzBdIEVDUGFyYW1ldGVycyBPUFRJT05BTCwK
KyAgcHVibGljS2V5ICBbMV0gQklUIFNUUklORyBPUFRJT05BTAorfQorCistLSBodHRwOi8vd3d3
LmlldGYub3JnL3JmYy9yZmMzNDQ3LnR4dCBBcHBlbmRpeCBBLjEuMQorCitSU0FQdWJsaWNLZXkg
Ojo9IFNFUVVFTkNFIHsKKyAgbW9kdWx1cyAgICAgICAgICAgSU5URUdFUiwgIC0tIG4KKyAgcHVi
bGljRXhwb25lbnQgICAgSU5URUdFUiAgIC0tIGUKK30KKworLS0gaHR0cDovL3d3dy5pZXRmLm9y
Zy9yZmMvcmZjMzQ0Ny50eHQgQXBwZW5kaXggQS4xLjIKKworUlNBUHJpdmF0ZUtleSA6Oj0gU0VR
VUVOQ0UgeworICB2ZXJzaW9uICAgICAgICAgICBWZXJzaW9uLAorICBtb2R1bHVzICAgICAgICAg
ICBJTlRFR0VSLCAgLS0gbgorICBwdWJsaWNFeHBvbmVudCAgICBJTlRFR0VSLCAgLS0gZQorICBw
cml2YXRlRXhwb25lbnQgICBJTlRFR0VSLCAgLS0gZAorICBwcmltZTEgICAgICAgICAgICBJTlRF
R0VSLCAgLS0gcAorICBwcmltZTIgICAgICAgICAgICBJTlRFR0VSLCAgLS0gcQorICBleHBvbmVu
dDEgICAgICAgICBJTlRFR0VSLCAgLS0gZCBtb2QgKHAtMSkKKyAgZXhwb25lbnQyICAgICAgICAg
SU5URUdFUiwgIC0tIGQgbW9kIChxLTEpCisgIGNvZWZmaWNpZW50ICAgICAgIElOVEVHRVIsICAt
LSAoaW52ZXJzZSBvZiBxKSBtb2QgcAorICBvdGhlclByaW1lSW5mb3MgICBPdGhlclByaW1lSW5m
b3MgT1BUSU9OQUwKK30KKworT3RoZXJQcmltZUluZm9zIDo6PSBTRVFVRU5DRSBTSVpFKDEuLk1B
WCkgT0YgT3RoZXJQcmltZUluZm8KKworT3RoZXJQcmltZUluZm8gOjo9IFNFUVVFTkNFIHsKKyAg
cHJpbWUgSU5URUdFUiwgIC0tIHJpCisgIGV4cG9uZW50IElOVEVHRVIsIC0tIGRpCisgIGNvZWZm
aWNpZW50IElOVEVHRVIgLS0gdGkKK30KKworRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IDkwZTFmZTFhZWUwMWFlMmFmMzJiYWYxNzMzMGRiZjIwMGY1ODUyN2YuLjQwODYyMjg3Njc4
MjYxZTI4MmFkMjZiOWY3ODg3NjIzODY3YWUwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0yMTksNiArMjE5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKICAgICAk
e0xJQkdDUllQVF9MSUJSQVJJRVN9CiAgICAgJHtMSUJTRUNSRVRfTElCUkFSSUVTfQogICAgICR7
TElCU09VUF9MSUJSQVJJRVN9CisgICAgJHtMSUJUQVNOMV9MSUJSQVJJRVN9CiAgICAgJHtMSUJY
TUwyX0xJQlJBUklFU30KICAgICAke0xJQlhTTFRfTElCUkFSSUVTfQogICAgICR7SFlQSEVOX0xJ
QlJBUklFU30KQEAgLTI0NSw2ICsyNDYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtMSUJHQ1JZUFRfSU5DTFVERV9ESVJTfQogICAgICR7
TElCU0VDUkVUX0lOQ0xVREVfRElSU30KICAgICAke0xJQlNPVVBfSU5DTFVERV9ESVJTfQorICAg
ICR7TElCVEFTTjFfSU5DTFVERV9ESVJTfQogICAgICR7TElCWE1MMl9JTkNMVURFX0RJUn0KICAg
ICAke0xJQlhTTFRfSU5DTFVERV9ESVJ9CiAgICAgJHtTUUxJVEVfSU5DTFVERV9ESVJ9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDQxNTcyNzUwMGVhMzliZTI0OGUyNjJiOWZmNWY4ODkz
ZWY1NzhhNTUuLmRiMWNkMzI3NzhlYmM3ZDVhZjJhODA0MTA4ZGNlZDc5M2YyNjgyYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNzEsNiArMTcxLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAgJHtMSUJHQ1JZUFRfTElC
UkFSSUVTfQogICAgICR7TElCU09VUF9MSUJSQVJJRVN9CisgICAgJHtMSUJUQVNOMV9MSUJSQVJJ
RVN9CiAgICAgJHtMSUJYTUwyX0xJQlJBUklFU30KICAgICAke0xJQlhTTFRfTElCUkFSSUVTfQog
ICAgICR7U1FMSVRFX0xJQlJBUklFU30KQEAgLTE4NSw2ICsxODYsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0lDVV9JTkNMVURFX0RJUlN9CiAgICAg
JHtMSUJHQ1JZUFRfSU5DTFVERV9ESVJTfQogICAgICR7TElCU09VUF9JTkNMVURFX0RJUlN9Cisg
ICAgJHtMSUJUQVNOMV9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJYTUwyX0lOQ0xVREVfRElSfQog
ICAgICR7TElCWFNMVF9JTkNMVURFX0RJUn0KICAgICAke1NRTElURV9JTkNMVURFX0RJUn0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAK
aW5kZXggNWVmZmQ2YzZhMjBhNzRhNDM4YTQ5MmQwNTU4NzYxY2IzODk1NGFlYi4uYzIyYTlkYzA5
MGZiNmQ2NzY2ZmE3M2U0ODIyODFjY2Y4NTEwNWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0
L0hhbmRsZS5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgorI2lu
Y2x1ZGUgPHBhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5MywxMSArMTk0LDE0NyBAQCBS
ZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIHJldHVybiBjcmVhdGUoaWRlbnRpZmllciwgY3Vy
dmUsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBs
YXRmb3JtSW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBW
ZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApCitzdGF0aWMgYm9v
bCBzdXBwb3J0ZWRBbGdvcml0aG1JZGVudGlmaWVyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
a2V5SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpZGVudGlmaWVyKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwg
MTg+IHNfaWRfZWNQdWJsaWNLZXkgeyB7ICIxLjIuODQwLjEwMDQ1LjIuMSIgfSB9OworICAgIHN0
YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDEzPiBzX2lkX2VjREggeyB7ICIxLjMuMTMy
LjEuMTIiIH0gfTsKKworICAgIGF1dG8gc2l6ZSA9IGlkZW50aWZpZXIuc2l6ZSgpOworICAgIGF1
dG8qIGRhdGEgPSBpZGVudGlmaWVyLmRhdGEoKTsKKworICAgIHN3aXRjaCAoa2V5SWRlbnRpZmll
cikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CisgICAgICAg
IC8vIEVDRFNBIG9ubHkgc3VwcG9ydHMgaWQtZWNQdWJsaWNLZXkgYWxnb3JpdGhtcyBmb3IgaW1w
b3J0ZWQga2V5cy4KKyAgICAgICAgaWYgKHNpemUgPT0gc19pZF9lY1B1YmxpY0tleS5zaXplKCkg
JiYgIXN0ZDo6bWVtY21wKGRhdGEsIHNfaWRfZWNQdWJsaWNLZXkuZGF0YSgpLCBzaXplKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOgorICAgICAgICAvLyBFQ0RIIHN1cHBvcnRz
IGJvdGggaWQtZWNQdWJsaWNLZXkgYW5kIGljLWVjREggYWxnb3JpdGhtcyBmb3IgaW1wb3J0ZWQg
a2V5cy4KKyAgICAgICAgaWYgKHNpemUgPT0gc19pZF9lY1B1YmxpY0tleS5zaXplKCkgJiYgIXN0
ZDo6bWVtY21wKGRhdGEsIHNfaWRfZWNQdWJsaWNLZXkuZGF0YSgpLCBzaXplKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoc2l6ZSA9PSBzX2lkX2VjREguc2l6ZSgpICYm
ICFzdGQ6Om1lbWNtcChkYXRhLCBzX2lkX2VjREguZGF0YSgpLCBzaXplKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Q3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU+IGN1cnZlRm9ySWRlbnRpZmllcihjb25zdCBWZWN0
b3I8dWludDhfdD4mIGlkZW50aWZpZXIpCit7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8
dWludDhfdCwgMjA+IHNfc2VjcDI1NnIxIHsgeyAiMS4yLjg0MC4xMDA0NS4zLjEuNyIgfSB9Owor
ICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDEzPiBzX3NlY3AzODRyMSB7IHsg
IjEuMy4xMzIuMC4zNCIgfSB9OworICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3Qs
IDEzPiBzX3NlY3A1MjFyMSB7IHsgIjEuMy4xMzIuMC4zNSIgfSB9OworCisgICAgYXV0byBzaXpl
ID0gaWRlbnRpZmllci5zaXplKCk7CisgICAgYXV0byogZGF0YSA9IGlkZW50aWZpZXIuZGF0YSgp
OworCisgICAgaWYgKHNpemUgPT0gc19zZWNwMjU2cjEuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChk
YXRhLCBzX3NlY3AyNTZyMS5kYXRhKCksIHNpemUpKQorICAgICAgICByZXR1cm4gQ3J5cHRvS2V5
RUM6Ok5hbWVkQ3VydmU6OlAyNTY7CisgICAgaWYgKHNpemUgPT0gc19zZWNwMzg0cjEuc2l6ZSgp
ICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX3NlY3AzODRyMS5kYXRhKCksIHNpemUpKQorICAgICAg
ICByZXR1cm4gQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU6OlAzODQ7CisgICAgaWYgKHNpemUgPT0g
c19zZWNwNTIxcjEuc2l6ZSgpICYmICFzdGQ6Om1lbWNtcChkYXRhLCBzX3NlY3A1MjFyMS5kYXRh
KCksIHNpemUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyAvLyBOb3QgeWV0IHN1cHBv
cnRlZC4KKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK1JlZlB0cjxDcnlwdG9LZXlF
Qz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIsIE5hbWVkQ3VydmUgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURh
dGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKK3sKKyAg
ICAvLyBEZWNvZGUgdGhlIGBTdWJqZWN0UHVibGljS2V5SW5mb2Agc3RydWN0dXJlIHVzaW5nIHRo
ZSBwcm92aWRlZCBrZXkgZGF0YS4KKyAgICBQQUw6OlRBU04xOjpTdHJ1Y3R1cmUgc3BraTsKKyAg
ICBpZiAoIVBBTDo6VEFTTjE6OmRlY29kZVN0cnVjdHVyZSgmc3BraSwgIldlYkNyeXB0by5TdWJq
ZWN0UHVibGljS2V5SW5mbyIsIGtleURhdGEpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIFZhbGlkYXRlIGBhbGdvcml0aG0uYWxnb3JpdGhtYC4KKyAgICB7CisgICAgICAgIGF1
dG8gYWxnb3JpdGhtID0gUEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoc3BraSwgImFsZ29yaXRobS5h
bGdvcml0aG0iKTsKKyAgICAgICAgaWYgKCFhbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICBpZiAoIXN1cHBvcnRlZEFsZ29yaXRobUlkZW50aWZpZXIoaWRl
bnRpZmllciwgKmFsZ29yaXRobSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICAvLyBWYWxpZGF0ZSBgYWxnb3JpdGhtLnBhcmFtZXRlcnNgIGFuZCB0aGVyZWluIGVt
YmVkZGVkIGBFQ1BhcmFtZXRlcnNgLgorICAgIHsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0g
UEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoc3BraSwgImFsZ29yaXRobS5wYXJhbWV0ZXJzIik7Cisg
ICAgICAgIGlmICghcGFyYW1ldGVycykKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIC8vIERlY29kZSB0aGUgYEVDUGFyYW1ldGVyc2Agc3RydWN0dXJlIHVzaW5nIHRoZSBg
YWxnb3JpdGhtLnBhcmFtZXRlcnNgIGRhdGEuCisgICAgICAgIFBBTDo6VEFTTjE6OlN0cnVjdHVy
ZSBlY1BhcmFtZXRlcnM7CisgICAgICAgIGlmICghUEFMOjpUQVNOMTo6ZGVjb2RlU3RydWN0dXJl
KCZlY1BhcmFtZXRlcnMsICJXZWJDcnlwdG8uRUNQYXJhbWV0ZXJzIiwgKnBhcmFtZXRlcnMpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBuYW1lZEN1cnZlID0g
UEFMOjpUQVNOMTo6ZWxlbWVudERhdGEoZWNQYXJhbWV0ZXJzLCAibmFtZWRDdXJ2ZSIpOworICAg
ICAgICBpZiAoIW5hbWVkQ3VydmUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBhdXRvIHBhcmFtZXRlckN1cnZlID0gY3VydmVGb3JJZGVudGlmaWVyKCpuYW1lZEN1cnZl
KTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJDdXJ2ZSB8fCAqcGFyYW1ldGVyQ3VydmUgIT0gY3Vy
dmUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBSZXRyaWV2
ZSB0aGUgYHN1YmplY3RQdWJsaWNLZXlgIGRhdGEgYW5kIGVtYmVkIGl0IGludG8gdGhlIGBwdWJs
aWMta2V5YCBzLWV4cHJlc3Npb24uCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBf
dD4gcGxhdGZvcm1LZXk7CisgICAgeworICAgICAgICBhdXRvIHN1YmplY3RQdWJsaWNLZXkgPSBQ
QUw6OlRBU04xOjplbGVtZW50RGF0YShzcGtpLCAic3ViamVjdFB1YmxpY0tleSIpOworICAgICAg
ICBpZiAoIXN1YmplY3RQdWJsaWNLZXkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICAvLyBCYWlsIGlmIHRoZSBgc3ViamVjdFB1YmxpY0tleWAgZGF0YSBzaXplIGRvZXNu
J3QgbWF0Y2ggdGhlIHNpemUgb2YgYW4gdW5jb21wcmVzc2VkIHBvaW50CisgICAgICAgIC8vIGZv
ciB0aGlzIGN1cnZlLCBvciBpZiB0aGUgZmlyc3QgYnl0ZSBpbiB0aGUgYHN1YmplY3RQdWJsaWNL
ZXlgIGRhdGEgaXNuJ3QgMHgwNCwgYXMgcmVxdWlyZWQKKyAgICAgICAgLy8gZm9yIGFuIHVuY29t
cHJlc3NlZCBFQyBwb2ludCBlbmNvZGVkIGluIGFuIG9jdGV0IHN0cmluZy4KKyAgICAgICAgaWYg
KHN1YmplY3RQdWJsaWNLZXktPnNpemUoKSAhPSB1bmNvbXByZXNzZWRQb2ludFNpemVGb3JDdXJ2
ZShjdXJ2ZSkgfHwgc3ViamVjdFB1YmxpY0tleS0+YXQoMCkgIT0gMHgwNCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIENvbnZlcnQgWCBhbmQgWSBjb29yZGluYXRl
IGRhdGEgaW50byBNUElzLgorICAgICAgICB1bnNpZ25lZCBjb29yZGluYXRlU2l6ZSA9IHVuY29t
cHJlc3NlZEZpZWxkRWxlbWVudFNpemVGb3JDdXJ2ZShjdXJ2ZSk7CisgICAgICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4geE1QSSwgeU1QSTsKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlfc2NhbigmeE1QSSwgR0NSWU1QSV9GTVRf
VVNHLCAmc3ViamVjdFB1YmxpY0tleS0+YXQoMSksIGNvb3JkaW5hdGVTaXplLCBudWxscHRyKTsK
KyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21w
aV9zY2FuKCZ5TVBJLCBHQ1JZTVBJX0ZNVF9VU0csICZzdWJqZWN0UHVibGljS2V5LT5hdCgxICsg
Y29vcmRpbmF0ZVNpemUpLCBjb29yZGluYXRlU2l6ZSwgbnVsbHB0cik7CisgICAgICAgICAgICBp
ZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgICAgIFBBTDo6R0Ny
eXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBDb25zdHJ1Y3QgYW4gTVBJIHBv
aW50IGZyb20gdGhlIFggYW5kIFkgY29vcmRpbmF0ZXMgYW5kIHVzaW5nIDEgYXMgdGhlIFogY29v
cmRpbmF0ZS4KKyAgICAgICAgLy8gVGhpcyBhbHdheXMgYWxsb2NhdGVzIHRoZSBnY3J5X21waV9w
b2ludF90IG9iamVjdC4KKyAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV9wb2lu
dF90PiBwb2ludChnY3J5X21waV9wb2ludF9zZXQobnVsbHB0ciwgeE1QSSwgeU1QSSwgR0NSWU1Q
SV9DT05TVF9PTkUpKTsKKworICAgICAgICAvLyBDcmVhdGUgYW4gRUMgY29udGV4dCBmb3IgdGhl
IHNwZWNpZmllZCBjdXJ2ZS4KKyAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2N0eF90
PiBjb250ZXh0OworICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9lY19uZXco
JmNvbnRleHQsIG51bGxwdHIsIGN1cnZlTmFtZShjdXJ2ZSkpOworICAgICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gQmFpbCBpZiB0aGUgY29uc3RydWN0ZWQgTVBJIHBvaW50IGlzIG5vdCBvbiB0aGUgc3Bl
Y2lmaWVkIEVDIGN1cnZlLgorICAgICAgICBpZiAoIWdjcnlfbXBpX2VjX2N1cnZlX3BvaW50KHBv
aW50LCBjb250ZXh0KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGVy
cm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZwbGF0Zm9ybUtleSwgbnVsbHB0ciwgIihwdWJsaWMta2V5
KGVjYyhjdXJ2ZSAlcykocSAlYikpKSIsCisgICAgICAgICAgICBjdXJ2ZU5hbWUoY3VydmUpLCBz
dWJqZWN0UHVibGljS2V5LT5zaXplKCksIHN1YmplY3RQdWJsaWNLZXktPmRhdGEoKSk7CisgICAg
ICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBGaW5hbGx5IGNyZWF0ZSBhIG5ldyBDcnlwdG9LZXlFQyBv
YmplY3QsIHRyYW5zZmVycmluZyB0byBpdCBvd25lcnNoaXAgb2YgdGhlIGBwdWJsaWMta2V5YCBz
LWV4cHJlc3Npb24uCisgICAgcmV0dXJuIGNyZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRv
S2V5VHlwZTo6UHVibGljLCBwbGF0Zm9ybUtleS5yZWxlYXNlKCksIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50
OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9GaW5kTGlidGFzbjEuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZExpYnRhc24xLmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA5ZTZkZjM3YzkyODUxYmQ1ODE3NGZjMzk3YmY5ZWQ0MGY2NDk4ZDYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvY21ha2UvRmluZExpYnRhc24xLmNtYWtlCkBAIC0wLDAg
KzEsNDcgQEAKKyMgLSBUcnkgdG8gZmluZCBsaWJ0YXNuMS4KKyMgT25jZSBkb25lLCB0aGlzIHdp
bGwgZGVmaW5lCisjCisjICBMSUJUQVNOMV9JTkNMVURFX0RJUlMgLSB0aGUgbGlidGFzbjEgaW5j
bHVkZSBkaXJlY3RvcmllcworIyAgTElCVEFTTjFfTElCUkFSSUVTIC0gdGhlIGxpYnRhc24xIGxp
YnJhcmllcy4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYu
CisjIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworZmluZF9wYWNrYWdlKFBrZ0NvbmZpZykKK3BrZ19jaGVja19t
b2R1bGVzKFBDX0xJQlRBU04xIGxpYnRhc24xKQorCitmaW5kX3BhdGgoTElCVEFTTjFfSU5DTFVE
RV9ESVJTCisgICAgTkFNRVMgbGlidGFzbjEuaAorICAgIFBBVEhTICR7UENfTElCVEFTTjFfSU5D
TFVERURJUn0gJHtQQ19MSUJUQVNOMV9JTkNMVURFX0RJUlN9CispCisKK2ZpbmRfbGlicmFyeShM
SUJUQVNOMV9MSUJSQVJJRVMKKyAgICBOQU1FUyB0YXNuMQorICAgIFBBVEhTICR7UENfTElCVEFT
TjFfTElCRElSfSAke1BDX0xJQlRBU04xX0xJQlJBUllfRElSU30KKykKKworaW5jbHVkZShGaW5k
UGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK0ZJTkRfUEFDS0FHRV9IQU5ETEVfU1RBTkRBUkRf
QVJHUyhMSUJUQVNOMSBERUZBVUxUX01TRyBMSUJUQVNOMV9MSUJSQVJJRVMpCisKK21hcmtfYXNf
YWR2YW5jZWQoTElCVEFTTjFfSU5DTFVERV9ESVJTIExJQlRBU04xX0xJQlJBUklFUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UKaW5kZXggZThhOWRiNmExNmMyZjgzMDkxOWQ4OWU1OWVlMjEzMmY0YzQ5NTkw
My4uMDJkODNmZDY2MTY5NWY1ZTllN2RiZTU0ZDlkZTkxZDk5ZmE2MzFjNyAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKQEAgLTI3MSw2ICsyNzEsMTAgQEAgaWYgKEVOQUJMRV9NRURJQV9TVFJFQU0gT1Ig
RU5BQkxFX1dFQl9SVEMpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCisg
ICAgZmluZF9wYWNrYWdlKExpYnRhc24xIFJFUVVJUkVEKQorICAgIGlmIChOT1QgTElCVEFTTjFf
Rk9VTkQpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYnRhc24xIGlzIHJlcXVpcmVk
IHRvIGVuYWJsZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpCisgICAgZW5kaWYgKCkKICAgICBp
ZiAoTElCR0NSWVBUX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEuNy4wKQogICAgICAgICBtZXNzYWdl
KEZBVEFMX0VSUk9SICJsaWJnY3J5cHQgMS43LjAgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFdlYiBD
cnlwdG8gQVBJIHN1cHBvcnQuIikKICAgICBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRl
eCBkYzVjYWFmMzg4M2FiYTIzNDFjY2RmMTk5NzVmMzQ2OTliNmNhNTA2Li5lNzFjMGI4MTYyNGQ4
YjI2YzU5YzJkZjgwMmI1YTliMDQ1YjViZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAtMTE5
LDYgKzExOSwxMCBAQCBpZiAoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykKIGVuZGlmICgp
CiAKIGlmIChFTkFCTEVfU1VCVExFX0NSWVBUTykKKyAgICBmaW5kX3BhY2thZ2UoTGlidGFzbjEg
UkVRVUlSRUQpCisgICAgaWYgKE5PVCBMSUJUQVNOMV9GT1VORCkKKyAgICAgICAgbWVzc2FnZShG
QVRBTF9FUlJPUiAibGlidGFzbjEgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFdlYiBDcnlwdG8gQVBJ
IHN1cHBvcnQuIikKKyAgICBlbmRpZiAoKQogICAgIGlmIChMSUJHQ1JZUFRfVkVSU0lPTiBWRVJT
SU9OX0xFU1MgMS43LjApCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYmdjcnlwdCAx
LjcuMCBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9ydC4iKQogICAg
IGVuZGlmICgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZGQ5ZDIzODYxNWMwMDZlNzkxYTc0ZDMyNzQyMDFkYmJiM2E4ODkx
MC4uZDA4YTA0NTEwZDk2NTZiNTRhOTUwNDZjM2Y1MTQ0MjMzZDhjZDM5ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE1IEBACiAyMDE3LTA2LTE5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBVbnNraXAgb3IgZW5hYmxlIHRoZSBF
Qy1iYXNlZCBTUEtJIGltcG9ydCB0ZXN0cyB0aGF0IGFyZSBub3cgcGFzc2luZy4KKworMjAxNy0w
Ni0xOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5y
ZXZpZXdlZCBHVEsrIGdhcmRlbmluZy4KIAogICAgICAgICBFbmFibGUgUlNBLVBTUyB0ZXN0cyBv
biB0aGUgR1RLKyBwb3J0LiBUZXN0cyBjb3ZlcmluZyB0aGlzIFdlYiBDcnlwdG8KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZDI4NmVhZDk3OGE0NTc3NTYz
NGQ0MTg3NjY2OTc0NDI0YTZhMDVhNy4uYTRiYmU4MGFlZjMyOTBlNjRmN2NiMzNiYzA2YTA4OTQ0
NTFjOGExNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTc1OSwyMCArNzU5LDE1IEBAIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2Ro
LWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS1wMjU2Lmh0bWwgWyBTa2lwCiB3ZWJraXQub3JnL2Iv
MTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2ktcDM4NC5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBv
cnQtcGtjczgta2V5LXAyNTYuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vc3VidGxlL2VjZGgtaW1wb3J0LXBrY3M4LWtleS1wMzg0Lmh0bWwgWyBTa2lwIF0KLXdlYmtp
dC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9ydC1zcGtpLWtleS1wMjU2Lmh0
bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9y
dC1zcGtpLWtleS1wMzg0Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRv
L3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4Lmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1nZW5lcmF0ZS1leHBvcnQta2V5
LXNwa2kuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Vj
ZHNhLWltcG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEzMzEyMiBj
cnlwdG8vc3VidGxlL2VjZHNhLWltcG9ydC1zcGtpLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQu
b3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LWp3ay1rZXktZXhwb3J0LXBrY3M4
LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMt
aW1wb3J0LWp3ay1rZXktZXhwb3J0LXNwa2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcmF3LWtleS1leHBvcnQtc3BraS1rZXku
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9y
dC1wa2NzOC1rZXktZXhwb3J0LWp3ay1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEz
MzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1wa2NzOC1rZXktZXhwb3J0LXBrY3M4LWtleS1w
MjU2Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1p
bXBvcnQtcGtjczgta2V5LWV4cG9ydC1wa2NzOC1rZXktcDM4NC5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1q
d2sta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9l
Yy1pbXBvcnQtc3BraS1rZXktZXhwb3J0LXJhdy1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS1leHBvcnQtc3BraS1r
ZXktcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUv
ZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1zcGtpLWtleS1wMzg0Lmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtZXhwb3J0LWtleS1tYWxmb3JtZWQt
cGFyYW1ldGVycy5odG1sIFsgU2tpcCBdCkBAIC04MTIsNyArODA3LDYgQEAgd2Via2l0Lm9yZy9i
LzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvYWVzLXBvc3RNZXNzYWdlLXdvcmtlci5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1n
ZW5lcmF0ZS1leHBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMx
MjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2VjLWdlbmVyYXRlLWV4cG9ydC1zcGtpLWtleS5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1p
bXBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRv
L3dvcmtlcnMvc3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQu
b3JnL2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1wb3N0TWVzc2FnZS13b3JrZXIu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUv
aG1hYy1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEy
MiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvaHJzYS1wb3N0TWVzc2FnZS13b3JrZXIuaHRtbCBbIFNr
aXAgXQpAQCAtODQ1LDYgKzgzOSw5IEBAIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQta2V5
LXZlcmlmeS5odG1sIFsgUGFzcyBdCiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQogY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1wc3Mt
aW1wb3J0LWtleS12ZXJpZnkuaHRtbCBbIFBhc3MgXQogCisjIGxpYmdjcnlwdC1iYXNlZCBpbXBs
ZW1lbnRhdGlvbiBzdXBwb3J0cyBlY0RIIGFsZ29yaXRobSBpZGVudGlmaWVyIGZvciBFQ0RIIFNQ
S0kgaW1wb3J0cy4KK2NyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtc3BraS1rZXktZWNkaC1pZGVu
dGlmaWVyLmh0bWwgWyBQYXNzIF0KKwogIyBUaGVzZSBhcmUgbGVnYWN5IEFQSXMgdGhhdCB3ZSBk
b24ndCBzdXBwb3J0LCBhcGFydCBmcm9tIGEgZmV3IGRpZ2VzdCBhbGdvcml0aG1zLgogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd2Via2l0U3VidGxlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MTMzMzE5IGNyeXB0by93ZWJraXRTdWJ0bGUvc2hhLTEuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGRjNzdiYWNkYWRlM2JlMDdmNTNkNmY0NWI5
NTY3OWQzNTAxM2VjZjUuLjUzMjMyMjU3MmFjNGNlMTkyMDQ5YjRkZDMxYzM5Nzg5Y2Q2M2Q2NTkg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0wNi0xOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dDcnlwdF0gSW1wbGVtZW50IENyeXB0b0tleUVDIFNQS0kgaW1wb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyOTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmlu
ZExpYnRhc24xLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZTogUmVxdWlyZSBsaWJ0YXNuMSB3aGVuIFNVQlRMRV9DUllQVE8gaXMgZW5hYmxlZC4K
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZTogRGl0dG8uCisKIDIwMTct
MDYtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjE3
LjQgcmVsZWFzZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313496</attachid>
            <date>2017-06-20 23:48:38 -0700</date>
            <delta_ts>2017-06-20 23:48:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172927-20170621084837.patch</filename>
            <type>text/plain</type>
            <size>32700</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUyOTlhMmE2N2UwZjMz
NmFlMTBmYWJjNWM5MzczNTJkOTMwOGEwNi4uNzA1ZWU1MmMzYzZmNjgzMmU0MWNlZjliYzM0MTQw
YmQyOTdiNWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTA2LTIwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBKaWV3
ZW4gVGFuLCBNaWNoYWVsIENhdGFuemFybyBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIC0tIGFmZmVjdGVkIHRlc3RzIGFyZSBub3cgcGFzc2luZyBhbmQg
YXJlIHVuc2tpcHBlZC4KKworICAgICAgICBJbXBsZW1lbnQgbGliZ2NyeXB0LWJhc2VkIHN1cHBv
cnQgZm9yIFNQS0kgaW1wb3J0cyBvZiBFQyBrZXlzLgorCisgICAgICAgIFVzaW5nIGxpYnRhc24x
IHRocm91Z2ggdGhlIHV0aWxpdHkgZnVuY3Rpb25zIGFuZCB3cmFwcGVycywgdGhlIGdpdmVuIGtl
eSBkYXRhCisgICAgICAgIGlzIGRlY29kZWQgYWdhaW5zdCB0aGUgU3ViamVjdFB1YmxpY0tleUlu
Zm8gQVNOLjEgZGVmaW5pdGlvbi4gVGhlIGFsZ29yaXRobQorICAgICAgICBtZW1iZXIgaXMgdGhl
biBwcm9wZXJseSB2YWxpZGF0ZWQsIG1ha2luZyBzdXJlIHRoYXQgdGhlIGtleSBhbGdvcml0aG0g
aWRlbmZpdGllcgorICAgICAgICBpcyBzdXBwb3J0ZWQgYW5kIHRoYXQgdGhlIGFsZ29yaXRobSBw
YXJhbWV0ZXJzIHNwZWNpZnkgdGhlIGNvcnJlY3QgRUMgY3VydmUuCisKKyAgICAgICAgVGhlIHB1
YmxpYyBrZXkgYml0IHN0cmluZyBpcyB0aGVuIHJldHJpZXZlZCBhbmQgdmFsaWRhdGVkLCBlbnN1
cmluZyBpdCByZXByZXNlbnRzCisgICAgICAgIGFuIHVuY29tcHJlc3NlZCBFQyBwb2ludCB0aGF0
IGlzIG9mIHZhbGlkIHNpemUgZm9yIHRoZSBzcGVjaWZpZWQgRUMgY3VydmUuIFRoZQorICAgICAg
ICBwb2ludCBpcyB0aGVuIHRlc3RlZCB0aHJvdWdoIGFuIEVDIGNvbnRleHQgdG8gbWFrZSBzdXJl
IGl0J3MgcG9zaXRpb25lZCBvbiB0aGUKKyAgICAgICAgc3BlY2lmaWVkIEVDIGN1cnZlLgorCisg
ICAgICAgIEZpbmFsbHksIHRoZSBjdXJ2ZSBuYW1lIGFuZCB1bmNvbXByZXNzZWQgcG9pbnQgZGF0
YSBhcmUgZW1iZWRkZWQgaW50byBhCisgICAgICAgIGBwdWJsaWMta2V5YCBzLWV4cHJlc3Npb24g
dGhhdCB3aWxsIGJlIHVzZWQgdGhyb3VnaCB0aGUgbGliZ2NyeXB0IEFQSS4gVGhpcyBpcworICAg
ICAgICB0aGVuIHVzZWQsIGFsb25nIHdpdGggb3RoZXIgaW5mb3JtYXRpb24sIHRvIGNyZWF0ZSBh
IHZhbGlkIENyeXB0b0tleUVDIG9iamVjdC4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtl
OiBVc2UgTElCVEFTTjFfSU5DTFVERV9ESVJFQ1RPUklFUyBhbmQgTElCVEFTTjFfTElCUkFSSUVT
LgorICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRl
ZEFsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3VydmVGb3JJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2kp
OgorCiAyMDE3LTA2LTIwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJHUFUgY29udGV4dHMgc2hvdWxkIGhhdmUgYSBiYWNrIHJlZmVyZW5jZSB0byB0aGUg
Y2FudmFzIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDcxNDgxNTQxMTNhYjZiZjA0NTlh
M2E0ZmFkNzc4ZDJmMzc0NjA2YWQuLjhkZGJlMGVmMmVhMDNmN2U3ODg3Mzc2OWFmZjY5YTMzNzM3
YjU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA2LTIwICBa
YW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJ
bXBsZW1lbnQgQ3J5cHRvS2V5RUMgU1BLSSBpbXBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI5MjcKKworICAgICAgICBSZXZpZXdlZCBieSBK
aWV3ZW4gVGFuLCBNaWNoYWVsIENhdGFuemFybyBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisK
KyAgICAgICAgQWRkIGEgZmlsZSB0aGF0IHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBv
cGVyYXRpbmcgd2l0aCBsaWJ0YXNuMSBBUElzLgorCisgICAgICAgIFRoZSBwcmVjb21wdXRlZCBB
U04uMSBkZWNsYXJhdGlvbnMsIGdlbmVyYXRlZCBmcm9tIHRoZSBXZWJDcnlwdG8uYXNuIGZpbGUg
d2l0aAorICAgICAgICB0aGUgYXNuMVBhcnNlciB0b29sLCBhcmUgdXNlZCB0byBlbmFibGUgY29u
c3RydWN0aW9uIG9mIEFTTi4xIHN0cnVjdHVyZXMgdGhhdAorICAgICAgICBhcmUgdGhlbiB1c2Vk
IHRvIGRlY29kZSB0aGUgU1BLSSBvciBQS0NTIzggZGF0YSB0aHJvdWdoIHRoZSBkZWNvZGVTdHJ1
Y3R1cmUoKQorICAgICAgICBmdW5jdGlvbi4gUmF3IGRhdGEgb2YgZWFjaCBlbGVtZW50IGluIHRo
YXQgc3RydWN0dXJlIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnIHRoZQorICAgICAgICBlbGVtZW50
RGF0YSgpIGZ1bmN0aW9uLgorCisgICAgICAgIFRoZSBTdHJ1Y3R1cmUgY2xhc3MgaXMgYWRkZWQg
YXMgYSB3cmFwcGVyIGZvciBhc24xX25vZGUgb2JqZWN0cyB0aGF0IGFyZSB1c2VkCisgICAgICAg
IGFzIGRlY29kaW5nIHRhcmdldHMsIHNpbXBsaWZ5aW5nIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2Yg
dGhlc2Ugb2JqZWN0cy4KKworICAgICAgICAqIHBhbC9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBwYWwvUGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogcGFsL2NyeXB0by90YXNuMS9V
dGlsaXRpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBBTDo6VEFTTjE6OmFzbjFEZWZpbml0aW9u
cyk6CisgICAgICAgIChQQUw6OlRBU04xOjpkZWNvZGVTdHJ1Y3R1cmUpOgorICAgICAgICAoUEFM
OjpUQVNOMTo6ZWxlbWVudERhdGEpOgorICAgICAgICAqIHBhbC9jcnlwdG8vdGFzbjEvVXRpbGl0
aWVzLmg6IEFkZGVkLgorICAgICAgICAoUEFMOjpUQVNOMTo6U3RydWN0dXJlOjp+U3RydWN0dXJl
KToKKyAgICAgICAgKFBBTDo6VEFTTjE6OlN0cnVjdHVyZTo6b3BlcmF0b3ImKToKKyAgICAgICAg
KFBBTDo6VEFTTjE6OlN0cnVjdHVyZTo6b3BlcmF0b3IgYXNuMV9ub2RlKToKKyAgICAgICAgKiBw
YWwvY3J5cHRvL3Rhc24xL1dlYkNyeXB0by5hc246IEFkZGVkLgorCiAyMDE3LTA2LTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBm
b250IHZhcmlhdGlvbnMgb24gbWFjT1MgU2llcnJhIGFuZCBpT1MgMTAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDc3NWMxODk4NGFlODliOWNlYWFiMjViNTdm
ZGEwNmExYTE1ZmM2M2IuLmFmYTVhOWEwNTk4NThjY2IyN2I2MmY3ZTFlMmFlYzhjYzY5M2JiZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMSwzICsxLDUg
QEAKIGxpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCiAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdl
c3RHQ3J5cHQuY3BwCisKKyAgICBjcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcAogKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNzc1YzE4OTg0YWU4OWI5Y2Vh
YWIyNWI1N2ZkYTA2YTFhMTVmYzYzYi4uYWZhNWE5YTA1OTg1OGNjYjI3YjYyZjdlMWUyYWVjOGNj
NjkzYmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdQRS5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0x
LDMgKzEsNSBAQAogbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKICAgICBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0RpZ2VzdEdDcnlwdC5jcHAKKworICAgIGNyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCiAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZmRmMDU1MTdlNjAxMGNiMDg0MmVjNTQ1NTc2NTIzMDg1NjU3NTQ4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRp
bGl0aWVzLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBN
ZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIK
KworI2luY2x1ZGUgPG11dGV4PgorCituYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBUQVNOMSB7
CisKK3N0YXRpYyBhc24xX25vZGUgYXNuMURlZmluaXRpb25zKCkKK3sKKyAgICAvLyBHZW5lcmF0
ZWQgd2l0aCBgYXNuMVBhcnNlciBXZWJDcnlwdG8uYXNuYC4KKworICAgIHN0YXRpYyBhc24xX25v
ZGUgc19kZWZpbml0aW9uczsKKyAgICBzdGF0aWMgY29uc3QgYXNuMV9zdGF0aWNfbm9kZSBzX1dl
YkNyeXB0b0FTTjFbXSA9IHsKKyAgICAgICAgeyAiV2ViQ3J5cHRvIiwgNTM2ODcyOTc2LCBudWxs
cHRyIH0sCisgICAgICAgIHsgbnVsbHB0ciwgMTA3Mzc0MTgzNiwgbnVsbHB0ciB9LAorICAgICAg
ICB7ICJTdWJqZWN0UHVibGljS2V5SW5mbyIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAiYWxnb3JpdGhtIiwgMTA3Mzc0MTgyNiwgIkFsZ29yaXRobUlkZW50aWZpZXIifSwKKyAg
ICAgICAgeyAic3ViamVjdFB1YmxpY0tleSIsIDYsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiQWxn
b3JpdGhtSWRlbnRpZmllciIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiYWxn
b3JpdGhtIiwgMTA3Mzc0MTgzNiwgbnVsbHB0ciB9LAorICAgICAgICB7ICJwYXJhbWV0ZXJzIiwg
NTQxMDgxNjEzLCBudWxscHRyIH0sCisgICAgICAgIHsgImFsZ29yaXRobSIsIDEsIG51bGxwdHIg
fSwKKyAgICAgICAgeyAiUHJpdmF0ZUtleUluZm8iLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisg
ICAgICAgIHsgInZlcnNpb24iLCAxMDczNzQxODI2LCAiVmVyc2lvbiJ9LAorICAgICAgICB7ICJw
cml2YXRlS2V5QWxnb3JpdGhtIiwgMTA3Mzc0MTgyNiwgIlByaXZhdGVLZXlBbGdvcml0aG1JZGVu
dGlmaWVyIn0sCisgICAgICAgIHsgInByaXZhdGVLZXkiLCAxMDczNzQxODI2LCAiUHJpdmF0ZUtl
eSJ9LAorICAgICAgICB7ICJhdHRyaWJ1dGVzIiwgNTM2ODk1NDkwLCAiQXR0cmlidXRlcyJ9LAor
ICAgICAgICB7IG51bGxwdHIsIDQxMDQsICIwIn0sCisgICAgICAgIHsgIlZlcnNpb24iLCAxMDcz
NzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgIlByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlm
aWVyIiwgMTA3Mzc0MTgyNiwgIkFsZ29yaXRobUlkZW50aWZpZXIifSwKKyAgICAgICAgeyAiUHJp
dmF0ZUtleSIsIDEwNzM3NDE4MzEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiQXR0cmlidXRlcyIs
IDE2MTA2MTI3NTEsIG51bGxwdHIgfSwKKyAgICAgICAgeyBudWxscHRyLCAyLCAiQXR0cmlidXRl
In0sCisgICAgICAgIHsgIkF0dHJpYnV0ZSIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAidHlwZSIsIDEwNzM3NDE4MzYsIG51bGxwdHIgfSwKKyAgICAgICAgeyAidmFsdWVzIiwg
MiwgIkF0dHJpYnV0ZVNldFZhbHVlIn0sCisgICAgICAgIHsgIkF0dHJpYnV0ZVNldFZhbHVlIiwg
MTYxMDYxMjc1MSwgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDEzLCBudWxscHRyIH0s
CisgICAgICAgIHsgIkVDUGFyYW1ldGVycyIsIDE2MTA2MTI3NTQsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAibmFtZWRDdXJ2ZSIsIDEyLCBudWxscHRyIH0sCisgICAgICAgIHsgIkVDUHJpdmF0ZUtl
eSIsIDE2MTA2MTI3NDEsIG51bGxwdHIgfSwKKyAgICAgICAgeyAidmVyc2lvbiIsIDEwNzM3NDE4
MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJpdmF0ZUtleSIsIDEwNzM3NDE4MzEsIG51bGxw
dHIgfSwKKyAgICAgICAgeyAicGFyYW1ldGVycyIsIDE2MTA2MzczMTQsICJFQ1BhcmFtZXRlcnMi
fSwKKyAgICAgICAgeyBudWxscHRyLCAyMDU2LCAiMCJ9LAorICAgICAgICB7ICJwdWJsaWNLZXki
LCA1MzY4OTU0OTQsIG51bGxwdHIgfSwKKyAgICAgICAgeyBudWxscHRyLCAyMDU2LCAiMSJ9LAor
ICAgICAgICB7ICJSU0FQdWJsaWNLZXkiLCAxNjEwNjEyNzQxLCBudWxscHRyIH0sCisgICAgICAg
IHsgIm1vZHVsdXMiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgInB1YmxpY0V4
cG9uZW50IiwgMywgbnVsbHB0ciB9LAorICAgICAgICB7ICJSU0FQcml2YXRlS2V5IiwgMTYxMDYx
Mjc0MSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJ2ZXJzaW9uIiwgMTA3Mzc0MTgyNiwgIlZlcnNp
b24ifSwKKyAgICAgICAgeyAibW9kdWx1cyIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAg
ICAgeyAicHVibGljRXhwb25lbnQiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsg
InByaXZhdGVFeHBvbmVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAicHJp
bWUxIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAgICAgICB7ICJwcmltZTIiLCAxMDczNzQx
ODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgImV4cG9uZW50MSIsIDEwNzM3NDE4MjcsIG51bGxw
dHIgfSwKKyAgICAgICAgeyAiZXhwb25lbnQyIiwgMTA3Mzc0MTgyNywgbnVsbHB0ciB9LAorICAg
ICAgICB7ICJjb2VmZmljaWVudCIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAi
b3RoZXJQcmltZUluZm9zIiwgMTYzODYsICJPdGhlclByaW1lSW5mb3MifSwKKyAgICAgICAgeyAi
T3RoZXJQcmltZUluZm9zIiwgMTYxMjcwOTg5OSwgbnVsbHB0ciB9LAorICAgICAgICB7ICJNQVgi
LCAxMDc0MjY2MTIyLCAiMSJ9LAorICAgICAgICB7IG51bGxwdHIsIDIsICJPdGhlclByaW1lSW5m
byJ9LAorICAgICAgICB7ICJPdGhlclByaW1lSW5mbyIsIDUzNjg3MDkxNywgbnVsbHB0ciB9LAor
ICAgICAgICB7ICJwcmltZSIsIDEwNzM3NDE4MjcsIG51bGxwdHIgfSwKKyAgICAgICAgeyAiZXhw
b25lbnQiLCAxMDczNzQxODI3LCBudWxscHRyIH0sCisgICAgICAgIHsgImNvZWZmaWNpZW50Iiwg
MywgbnVsbHB0ciB9LAorICAgICAgICB7IG51bGxwdHIsIDAsIG51bGxwdHIgfQorICAgIH07CisK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShzX29uY2VGbGFnLCBbXSB7IGFzbjFfYXJyYXkydHJlZShzX1dlYkNyeXB0b0FTTjEsICZzX2Rl
ZmluaXRpb25zLCBudWxscHRyKTsgfSk7CisKKyAgICByZXR1cm4gc19kZWZpbml0aW9uczsKK30K
KworYm9vbCBkZWNvZGVTdHJ1Y3R1cmUoYXNuMV9ub2RlKiByb290LCBjb25zdCBjaGFyKiBlbGVt
ZW50TmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIGludCByZXQgPSBh
c24xX2NyZWF0ZV9lbGVtZW50KGFzbjFEZWZpbml0aW9ucygpLCBlbGVtZW50TmFtZSwgcm9vdCk7
CisgICAgaWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGludCBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOworICAgIHJldCA9IGFzbjFfZGVyX2RlY29k
aW5nMihyb290LCBkYXRhLmRhdGEoKSwgJmRhdGFTaXplLCBBU04xX0RFQ09ERV9GTEFHX1NUUklD
VF9ERVIsIG51bGxwdHIpOworICAgIHJldHVybiByZXQgPT0gQVNOMV9TVUNDRVNTOworfQorCitz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZWxlbWVudERhdGEoYXNuMV9ub2RlIHJvb3Qs
IGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKQoreworICAgIGludCBsZW5ndGggPSAwOworICAgIHVu
c2lnbmVkIHR5cGUgPSAwOworICAgIGludCByZXQgPSBhc24xX3JlYWRfdmFsdWVfdHlwZShyb290
LCBlbGVtZW50TmFtZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnR5cGUpOworICAgIGlmIChyZXQgIT0g
QVNOMV9NRU1fRVJST1IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAo
dHlwZSA9PSBBU04xX0VUWVBFX0JJVF9TVFJJTkcpIHsKKyAgICAgICAgaWYgKGxlbmd0aCAlIDgp
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBsZW5ndGggLz0gODsK
KyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YShsZW5ndGgpOworICAgIHJldCA9IGFz
bjFfcmVhZF92YWx1ZShyb290LCBlbGVtZW50TmFtZSwgZGF0YS5kYXRhKCksICZsZW5ndGgpOwor
ICAgIGlmIChyZXQgIT0gQVNOMV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGRhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRBU04xCit9IC8vIG5h
bWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rh
c24xL1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRp
bGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYzZjQ2NTA2Y2ViZDlkNmYxNWM3OWFmYjA5M2Q1NGJkMDkz
NWI5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rh
c24xL1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpYnRhc24xLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgUEFMIHsKK25hbWVzcGFjZSBUQVNOMSB7CisKK2NsYXNzIFN0cnVjdHVyZSB7CitwdWJs
aWM6CisgICAgU3RydWN0dXJlKCkgPSBkZWZhdWx0OworCisgICAgflN0cnVjdHVyZSgpCisgICAg
eworICAgICAgICBhc24xX2RlbGV0ZV9zdHJ1Y3R1cmUoJm1fc3RydWN0dXJlKTsKKyAgICB9CisK
KyAgICBTdHJ1Y3R1cmUoY29uc3QgU3RydWN0dXJlJikgPSBkZWxldGU7CisgICAgU3RydWN0dXJl
JiBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlJikgPSBkZWxldGU7CisKKyAgICBTdHJ1Y3R1cmUo
U3RydWN0dXJlJiYpID0gZGVsZXRlOworICAgIFN0cnVjdHVyZSYgb3BlcmF0b3I9KFN0cnVjdHVy
ZSYmKSA9IGRlbGV0ZTsKKworICAgIGFzbjFfbm9kZSogb3BlcmF0b3ImKCkgeyByZXR1cm4gJm1f
c3RydWN0dXJlOyB9CisgICAgb3BlcmF0b3IgYXNuMV9ub2RlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KKworcHJpdmF0ZToKKyAgICBhc24xX25vZGUgbV9zdHJ1Y3R1cmUgeyBudWxs
cHRyIH07Cit9OworCitib29sIGRlY29kZVN0cnVjdHVyZShhc24xX25vZGUqIHJvb3QsIGNvbnN0
IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpOworc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25z
dCBjaGFyKiBlbGVtZW50TmFtZSk7CisKK30gLy8gbmFtZXNwYWNlIFRBU04xCit9IC8vIG5hbWVz
cGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24x
L1dlYkNyeXB0by5hc24gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9XZWJD
cnlwdG8uYXNuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MTNiODk2NDEyNDczNTM0NzE3OTUxZmY2NWJiNDgzYThj
MjgzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90
YXNuMS9XZWJDcnlwdG8uYXNuCkBAIC0wLDAgKzEsOTAgQEAKK1dlYkNyeXB0byB7IH0KKworREVG
SU5JVElPTlMgRVhQTElDSVQgVEFHUyA6Oj0KKworQkVHSU4KKworLS0gaHR0cDovL3d3dy5pZXRm
Lm9yZy9yZmMvcmZjNTI4MC50eHQgQXBwZW5kaXggQS4xCisKK1N1YmplY3RQdWJsaWNLZXlJbmZv
IDo6PSAgU0VRVUVOQ0UgIHsKKyAgYWxnb3JpdGhtICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmll
ciwKKyAgc3ViamVjdFB1YmxpY0tleSAgQklUIFNUUklORworfQorCitBbGdvcml0aG1JZGVudGlm
aWVyIDo6PSAgU0VRVUVOQ0UgIHsKKyAgYWxnb3JpdGhtICAgT0JKRUNUIElERU5USUZJRVIsCisg
IHBhcmFtZXRlcnMgIEFOWSBERUZJTkVEIEJZIGFsZ29yaXRobSBPUFRJT05BTAorfQorCistLSBo
dHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM1MjA4LnR4dCBBcHBlbmRpeCBBCisKK1ByaXZhdGVL
ZXlJbmZvIDo6PSBTRVFVRU5DRSB7CisgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgVmVyc2lv
biwKKyAgcHJpdmF0ZUtleUFsZ29yaXRobSAgICAgICBQcml2YXRlS2V5QWxnb3JpdGhtSWRlbnRp
ZmllciwKKyAgcHJpdmF0ZUtleSAgICAgICAgICAgICAgICBQcml2YXRlS2V5LAorICBhdHRyaWJ1
dGVzICAgICAgICAgICBbMF0gIElNUExJQ0lUIEF0dHJpYnV0ZXMgT1BUSU9OQUwKK30KKworVmVy
c2lvbiA6Oj0gSU5URUdFUgorCitQcml2YXRlS2V5QWxnb3JpdGhtSWRlbnRpZmllciA6Oj0gQWxn
b3JpdGhtSWRlbnRpZmllcgorCitQcml2YXRlS2V5IDo6PSBPQ1RFVCBTVFJJTkcKKworQXR0cmli
dXRlcyA6Oj0gU0VUIE9GIEF0dHJpYnV0ZQorCitBdHRyaWJ1dGUgOjo9IFNFUVVFTkNFIHsKKyAg
dHlwZSAgICBPQkpFQ1QgSURFTlRJRklFUiwKKyAgdmFsdWVzICBBdHRyaWJ1dGVTZXRWYWx1ZQor
fQorCitBdHRyaWJ1dGVTZXRWYWx1ZSA6Oj0gU0VUIE9GIEFOWQorCistLSBodHRwOi8vd3d3Lmll
dGYub3JnL3JmYy9yZmM1NDgwLnR4dCBBcHBlbmRpeCBBCisKK0VDUGFyYW1ldGVycyA6Oj0gQ0hP
SUNFIHsKKyAgbmFtZWRDdXJ2ZSAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIC0tIE1VU1QgYmUg
c3VwcG9ydGVkLgorICAtLSBpbXBsaWNpdEN1cnZlICAgTlVMTCAtIE1VU1QgTk9UIGJlIHVzZWQu
CisgIC0tIHNwZWNpZmllZEN1cnZlICBTcGVjaWZpZWRFQ0RvbWFpbiAtIE1VU1QgTk9UIGJlIHVz
ZWQuCit9CisKKy0tIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzU5MTUudHh0IEFwcGVuZGl4
IEEKKworRUNQcml2YXRlS2V5IDo6PSBTRVFVRU5DRSB7CisgIHZlcnNpb24gICAgICAgIElOVEVH
RVIsCisgIHByaXZhdGVLZXkgICAgIE9DVEVUIFNUUklORywKKyAgcGFyYW1ldGVycyBbMF0gRUNQ
YXJhbWV0ZXJzIE9QVElPTkFMLAorICBwdWJsaWNLZXkgIFsxXSBCSVQgU1RSSU5HIE9QVElPTkFM
Cit9CisKKy0tIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzM0NDcudHh0IEFwcGVuZGl4IEEu
MS4xCisKK1JTQVB1YmxpY0tleSA6Oj0gU0VRVUVOQ0UgeworICBtb2R1bHVzICAgICAgICAgICBJ
TlRFR0VSLCAgLS0gbgorICBwdWJsaWNFeHBvbmVudCAgICBJTlRFR0VSICAgLS0gZQorfQorCist
LSBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzNDQ3LnR4dCBBcHBlbmRpeCBBLjEuMgorCitS
U0FQcml2YXRlS2V5IDo6PSBTRVFVRU5DRSB7CisgIHZlcnNpb24gICAgICAgICAgIFZlcnNpb24s
CisgIG1vZHVsdXMgICAgICAgICAgIElOVEVHRVIsICAtLSBuCisgIHB1YmxpY0V4cG9uZW50ICAg
IElOVEVHRVIsICAtLSBlCisgIHByaXZhdGVFeHBvbmVudCAgIElOVEVHRVIsICAtLSBkCisgIHBy
aW1lMSAgICAgICAgICAgIElOVEVHRVIsICAtLSBwCisgIHByaW1lMiAgICAgICAgICAgIElOVEVH
RVIsICAtLSBxCisgIGV4cG9uZW50MSAgICAgICAgIElOVEVHRVIsICAtLSBkIG1vZCAocC0xKQor
ICBleHBvbmVudDIgICAgICAgICBJTlRFR0VSLCAgLS0gZCBtb2QgKHEtMSkKKyAgY29lZmZpY2ll
bnQgICAgICAgSU5URUdFUiwgIC0tIChpbnZlcnNlIG9mIHEpIG1vZCBwCisgIG90aGVyUHJpbWVJ
bmZvcyAgIE90aGVyUHJpbWVJbmZvcyBPUFRJT05BTAorfQorCitPdGhlclByaW1lSW5mb3MgOjo9
IFNFUVVFTkNFIFNJWkUoMS4uTUFYKSBPRiBPdGhlclByaW1lSW5mbworCitPdGhlclByaW1lSW5m
byA6Oj0gU0VRVUVOQ0UgeworICBwcmltZSBJTlRFR0VSLCAgLS0gcmkKKyAgZXhwb25lbnQgSU5U
RUdFUiwgLS0gZGkKKyAgY29lZmZpY2llbnQgSU5URUdFUiAtLSB0aQorfQorCitFTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOTBlMWZlMWFlZTAxYWUyYWYzMmJhZjE3MzMwZGJmMjAw
ZjU4NTI3Zi4uNDA4NjIyODc2NzgyNjFlMjgyYWQyNmI5Zjc4ODc2MjM4NjdhZTAxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIxOSw2ICsyMTksNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX0xJQlJBUklFUwogICAgICR7TElCR0NSWVBUX0xJQlJBUklFU30KICAgICAke0xJQlNFQ1JF
VF9MSUJSQVJJRVN9CiAgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KKyAgICAke0xJQlRBU04xX0xJ
QlJBUklFU30KICAgICAke0xJQlhNTDJfTElCUkFSSUVTfQogICAgICR7TElCWFNMVF9MSUJSQVJJ
RVN9CiAgICAgJHtIWVBIRU5fTElCUkFSSUVTfQpAQCAtMjQ1LDYgKzI0Niw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0xJQkdDUllQVF9J
TkNMVURFX0RJUlN9CiAgICAgJHtMSUJTRUNSRVRfSU5DTFVERV9ESVJTfQogICAgICR7TElCU09V
UF9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJUQVNOMV9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJY
TUwyX0lOQ0xVREVfRElSfQogICAgICR7TElCWFNMVF9JTkNMVURFX0RJUn0KICAgICAke1NRTElU
RV9JTkNMVURFX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNDE1NzI3NTAwZWEz
OWJlMjQ4ZTI2MmI5ZmY1Zjg4OTNlZjU3OGE1NS4uZGIxY2QzMjc3OGViYzdkNWFmMmE4MDQxMDhk
Y2VkNzkzZjI2ODJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTE3MSw2ICsxNzEs
NyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAgICR7SUNVX0xJQlJBUklFU30K
ICAgICAke0xJQkdDUllQVF9MSUJSQVJJRVN9CiAgICAgJHtMSUJTT1VQX0xJQlJBUklFU30KKyAg
ICAke0xJQlRBU04xX0xJQlJBUklFU30KICAgICAke0xJQlhNTDJfTElCUkFSSUVTfQogICAgICR7
TElCWFNMVF9MSUJSQVJJRVN9CiAgICAgJHtTUUxJVEVfTElCUkFSSUVTfQpAQCAtMTg1LDYgKzE4
Niw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SUNV
X0lOQ0xVREVfRElSU30KICAgICAke0xJQkdDUllQVF9JTkNMVURFX0RJUlN9CiAgICAgJHtMSUJT
T1VQX0lOQ0xVREVfRElSU30KKyAgICAke0xJQlRBU04xX0lOQ0xVREVfRElSU30KICAgICAke0xJ
QlhNTDJfSU5DTFVERV9ESVJ9CiAgICAgJHtMSUJYU0xUX0lOQ0xVREVfRElSfQogICAgICR7U1FM
SVRFX0lOQ0xVREVfRElSfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0tleUVDR0NyeXB0LmNwcAppbmRleCA1ZWZmZDZjNmEyMGE3NGE0MzhhNDkyZDA1NTg3NjFj
YjM4OTU0YWViLi5jMjJhOWRjMDkwZmI2ZDY3NjZmYTczZTQ4MjI4MWNjZjg1MTA1Yjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5
cHQvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTkzLDExICsxOTQsMTQ3IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRm
b3JtSW1wb3J0SldLUHJpdmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgcmV0dXJuIGNy
ZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgcGxhdGZvcm1L
ZXkucmVsZWFzZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKIH0KIAotUmVmUHRyPENyeXB0b0tl
eUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCkKK3N0YXRpYyBib29sIHN1cHBvcnRlZEFsZ29yaXRobUlkZW50aWZpZXIoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBrZXlJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGlkZW50aWZpZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdGF0aWMgY29uc3Qg
c3RkOjphcnJheTx1aW50OF90LCAxOD4gc19pZF9lY1B1YmxpY0tleSB7IHsgIjEuMi44NDAuMTAw
NDUuMi4xIiB9IH07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMTM+IHNf
aWRfZWNESCB7IHsgIjEuMy4xMzIuMS4xMiIgfSB9OworCisgICAgYXV0byBzaXplID0gaWRlbnRp
Zmllci5zaXplKCk7CisgICAgYXV0byogZGF0YSA9IGlkZW50aWZpZXIuZGF0YSgpOworCisgICAg
c3dpdGNoIChrZXlJZGVudGlmaWVyKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RTQToKKyAgICAgICAgLy8gRUNEU0Egb25seSBzdXBwb3J0cyBpZC1lY1B1YmxpY0tl
eSBhbGdvcml0aG1zIGZvciBpbXBvcnRlZCBrZXlzLgorICAgICAgICBpZiAoc2l6ZSA9PSBzX2lk
X2VjUHVibGljS2V5LnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19pZF9lY1B1YmxpY0tl
eS5kYXRhKCksIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6CisgICAg
ICAgIC8vIEVDREggc3VwcG9ydHMgYm90aCBpZC1lY1B1YmxpY0tleSBhbmQgaWMtZWNESCBhbGdv
cml0aG1zIGZvciBpbXBvcnRlZCBrZXlzLgorICAgICAgICBpZiAoc2l6ZSA9PSBzX2lkX2VjUHVi
bGljS2V5LnNpemUoKSAmJiAhc3RkOjptZW1jbXAoZGF0YSwgc19pZF9lY1B1YmxpY0tleS5kYXRh
KCksIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzaXplID09
IHNfaWRfZWNESC5zaXplKCkgJiYgIXN0ZDo6bWVtY21wKGRhdGEsIHNfaWRfZWNESC5kYXRhKCks
IHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVGb3JJ
ZGVudGlmaWVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaWRlbnRpZmllcikKK3sKKyAgICBzdGF0
aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyMD4gc19zZWNwMjU2cjEgeyB7ICIxLjIuODQw
LjEwMDQ1LjMuMS43IiB9IH07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwg
MTM+IHNfc2VjcDM4NHIxIHsgeyAiMS4zLjEzMi4wLjM0IiB9IH07CisgICAgc3RhdGljIGNvbnN0
IHN0ZDo6YXJyYXk8dWludDhfdCwgMTM+IHNfc2VjcDUyMXIxIHsgeyAiMS4zLjEzMi4wLjM1IiB9
IH07CisKKyAgICBhdXRvIHNpemUgPSBpZGVudGlmaWVyLnNpemUoKTsKKyAgICBhdXRvKiBkYXRh
ID0gaWRlbnRpZmllci5kYXRhKCk7CisKKyAgICBpZiAoc2l6ZSA9PSBzX3NlY3AyNTZyMS5zaXpl
KCkgJiYgIXN0ZDo6bWVtY21wKGRhdGEsIHNfc2VjcDI1NnIxLmRhdGEoKSwgc2l6ZSkpCisgICAg
ICAgIHJldHVybiBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDI1NjsKKyAgICBpZiAoc2l6ZSA9
PSBzX3NlY3AzODRyMS5zaXplKCkgJiYgIXN0ZDo6bWVtY21wKGRhdGEsIHNfc2VjcDM4NHIxLmRh
dGEoKSwgc2l6ZSkpCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDM4
NDsKKyAgICBpZiAoc2l6ZSA9PSBzX3NlY3A1MjFyMS5zaXplKCkgJiYgIXN0ZDo6bWVtY21wKGRh
dGEsIHNfc2VjcDUyMXIxLmRhdGEoKSwgc2l6ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7IC8vIE5vdCB5ZXQgc3VwcG9ydGVkLgorCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30K
KworUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRTcGtpKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgVmVj
dG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzKQoreworICAgIC8vIERlY29kZSB0aGUgYFN1YmplY3RQdWJsaWNLZXlJbmZv
YCBzdHJ1Y3R1cmUgdXNpbmcgdGhlIHByb3ZpZGVkIGtleSBkYXRhLgorICAgIFBBTDo6VEFTTjE6
OlN0cnVjdHVyZSBzcGtpOworICAgIGlmICghUEFMOjpUQVNOMTo6ZGVjb2RlU3RydWN0dXJlKCZz
cGtpLCAiV2ViQ3J5cHRvLlN1YmplY3RQdWJsaWNLZXlJbmZvIiwga2V5RGF0YSkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgLy8gVmFsaWRhdGUgYGFsZ29yaXRobS5hbGdvcml0aG1g
LgorICAgIHsKKyAgICAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OlRBU04xOjplbGVtZW50RGF0
YShzcGtpLCAiYWxnb3JpdGhtLmFsZ29yaXRobSIpOworICAgICAgICBpZiAoIWFsZ29yaXRobSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICghc3VwcG9ydGVkQWxn
b3JpdGhtSWRlbnRpZmllcihpZGVudGlmaWVyLCAqYWxnb3JpdGhtKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFZhbGlkYXRlIGBhbGdvcml0aG0ucGFyYW1l
dGVyc2AgYW5kIHRoZXJlaW4gZW1iZWRkZWQgYEVDUGFyYW1ldGVyc2AuCisgICAgeworICAgICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBQQUw6OlRBU04xOjplbGVtZW50RGF0YShzcGtpLCAiYWxnb3Jp
dGhtLnBhcmFtZXRlcnMiKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBgRUNQYXJhbWV0ZXJzYCBz
dHJ1Y3R1cmUgdXNpbmcgdGhlIGBhbGdvcml0aG0ucGFyYW1ldGVyc2AgZGF0YS4KKyAgICAgICAg
UEFMOjpUQVNOMTo6U3RydWN0dXJlIGVjUGFyYW1ldGVyczsKKyAgICAgICAgaWYgKCFQQUw6OlRB
U04xOjpkZWNvZGVTdHJ1Y3R1cmUoJmVjUGFyYW1ldGVycywgIldlYkNyeXB0by5FQ1BhcmFtZXRl
cnMiLCAqcGFyYW1ldGVycykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBhdXRvIG5hbWVkQ3VydmUgPSBQQUw6OlRBU04xOjplbGVtZW50RGF0YShlY1BhcmFtZXRlcnMs
ICJuYW1lZEN1cnZlIik7CisgICAgICAgIGlmICghbmFtZWRDdXJ2ZSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gcGFyYW1ldGVyQ3VydmUgPSBjdXJ2ZUZvcklk
ZW50aWZpZXIoKm5hbWVkQ3VydmUpOworICAgICAgICBpZiAoIXBhcmFtZXRlckN1cnZlIHx8ICpw
YXJhbWV0ZXJDdXJ2ZSAhPSBjdXJ2ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIC8vIFJldHJpZXZlIHRoZSBgc3ViamVjdFB1YmxpY0tleWAgZGF0YSBhbmQgZW1i
ZWQgaXQgaW50byB0aGUgYHB1YmxpYy1rZXlgIHMtZXhwcmVzc2lvbi4KKyAgICBQQUw6OkdDcnlw
dDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwbGF0Zm9ybUtleTsKKyAgICB7CisgICAgICAgIGF1dG8g
c3ViamVjdFB1YmxpY0tleSA9IFBBTDo6VEFTTjE6OmVsZW1lbnREYXRhKHNwa2ksICJzdWJqZWN0
UHVibGljS2V5Iik7CisgICAgICAgIGlmICghc3ViamVjdFB1YmxpY0tleSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIEJhaWwgaWYgdGhlIGBzdWJqZWN0UHVibGlj
S2V5YCBkYXRhIHNpemUgZG9lc24ndCBtYXRjaCB0aGUgc2l6ZSBvZiBhbiB1bmNvbXByZXNzZWQg
cG9pbnQKKyAgICAgICAgLy8gZm9yIHRoaXMgY3VydmUsIG9yIGlmIHRoZSBmaXJzdCBieXRlIGlu
IHRoZSBgc3ViamVjdFB1YmxpY0tleWAgZGF0YSBpc24ndCAweDA0LCBhcyByZXF1aXJlZAorICAg
ICAgICAvLyBmb3IgYW4gdW5jb21wcmVzc2VkIEVDIHBvaW50IGVuY29kZWQgaW4gYW4gb2N0ZXQg
c3RyaW5nLgorICAgICAgICBpZiAoc3ViamVjdFB1YmxpY0tleS0+c2l6ZSgpICE9IHVuY29tcHJl
c3NlZFBvaW50U2l6ZUZvckN1cnZlKGN1cnZlKSB8fCBzdWJqZWN0UHVibGljS2V5LT5hdCgwKSAh
PSAweDA0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gQ29udmVy
dCBYIGFuZCBZIGNvb3JkaW5hdGUgZGF0YSBpbnRvIE1QSXMuCisgICAgICAgIHVuc2lnbmVkIGNv
b3JkaW5hdGVTaXplID0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZUZvckN1cnZlKGN1cnZl
KTsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiB4TVBJLCB5TVBJOwor
ICAgICAgICB7CisgICAgICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9zY2Fu
KCZ4TVBJLCBHQ1JZTVBJX0ZNVF9VU0csICZzdWJqZWN0UHVibGljS2V5LT5hdCgxKSwgY29vcmRp
bmF0ZVNpemUsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKKyAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBlcnJvciA9IGdjcnlfbXBpX3NjYW4oJnlNUEksIEdDUllNUElfRk1UX1VTRywgJnN1Ympl
Y3RQdWJsaWNLZXktPmF0KDEgKyBjb29yZGluYXRlU2l6ZSksIGNvb3JkaW5hdGVTaXplLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAg
ICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8v
IENvbnN0cnVjdCBhbiBNUEkgcG9pbnQgZnJvbSB0aGUgWCBhbmQgWSBjb29yZGluYXRlcyBhbmQg
dXNpbmcgMSBhcyB0aGUgWiBjb29yZGluYXRlLgorICAgICAgICAvLyBUaGlzIGFsd2F5cyBhbGxv
Y2F0ZXMgdGhlIGdjcnlfbXBpX3BvaW50X3Qgb2JqZWN0LgorICAgICAgICBQQUw6OkdDcnlwdDo6
SGFuZGxlPGdjcnlfbXBpX3BvaW50X3Q+IHBvaW50KGdjcnlfbXBpX3BvaW50X3NldChudWxscHRy
LCB4TVBJLCB5TVBJLCBHQ1JZTVBJX0NPTlNUX09ORSkpOworCisgICAgICAgIC8vIENyZWF0ZSBh
biBFQyBjb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIGN1cnZlLgorICAgICAgICBQQUw6OkdDcnlw
dDo6SGFuZGxlPGdjcnlfY3R4X3Q+IGNvbnRleHQ7CisgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJv
ciA9IGdjcnlfbXBpX2VjX25ldygmY29udGV4dCwgbnVsbHB0ciwgY3VydmVOYW1lKGN1cnZlKSk7
CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKworICAgICAgICAvLyBCYWlsIGlmIHRoZSBjb25zdHJ1Y3RlZCBNUEkgcG9p
bnQgaXMgbm90IG9uIHRoZSBzcGVjaWZpZWQgRUMgY3VydmUuCisgICAgICAgIGlmICghZ2NyeV9t
cGlfZWNfY3VydmVfcG9pbnQocG9pbnQsIGNvbnRleHQpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJnBsYXRmb3JtS2V5LCBu
dWxscHRyLCAiKHB1YmxpYy1rZXkoZWNjKGN1cnZlICVzKShxICViKSkpIiwKKyAgICAgICAgICAg
IGN1cnZlTmFtZShjdXJ2ZSksIHN1YmplY3RQdWJsaWNLZXktPnNpemUoKSwgc3ViamVjdFB1Ymxp
Y0tleS0+ZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
KyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZpbmFsbHkgY3JlYXRl
IGEgbmV3IENyeXB0b0tleUVDIG9iamVjdCwgdHJhbnNmZXJyaW5nIHRvIGl0IG93bmVyc2hpcCBv
ZiB0aGUgYHB1YmxpYy1rZXlgIHMtZXhwcmVzc2lvbi4KKyAgICByZXR1cm4gY3JlYXRlKGlkZW50
aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2Uo
KSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAKIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRv
S2V5RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFt
ZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRMaWJ0YXNuMS5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9GaW5kTGlidGFzbjEuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDllNmRmMzdjOTI4NTFiZDU4MTc0ZmMz
OTdiZjllZDQwZjY0OThkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kTGli
dGFzbjEuY21ha2UKQEAgLTAsMCArMSw0NyBAQAorIyAtIFRyeSB0byBmaW5kIGxpYnRhc24xLgor
IyBPbmNlIGRvbmUsIHRoaXMgd2lsbCBkZWZpbmUKKyMKKyMgIExJQlRBU04xX0lOQ0xVREVfRElS
UyAtIHRoZSBsaWJ0YXNuMSBpbmNsdWRlIGRpcmVjdG9yaWVzCisjICBMSUJUQVNOMV9MSUJSQVJJ
RVMgLSB0aGUgbGlidGFzbjEgbGlicmFyaWVzLgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTcgTWV0
cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyMgQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmaW5kX3BhY2thZ2UoUGtn
Q29uZmlnKQorcGtnX2NoZWNrX21vZHVsZXMoUENfTElCVEFTTjEgbGlidGFzbjEpCisKK2ZpbmRf
cGF0aChMSUJUQVNOMV9JTkNMVURFX0RJUlMKKyAgICBOQU1FUyBsaWJ0YXNuMS5oCisgICAgUEFU
SFMgJHtQQ19MSUJUQVNOMV9JTkNMVURFRElSfSAke1BDX0xJQlRBU04xX0lOQ0xVREVfRElSU30K
KykKKworZmluZF9saWJyYXJ5KExJQlRBU04xX0xJQlJBUklFUworICAgIE5BTUVTIHRhc24xCisg
ICAgUEFUSFMgJHtQQ19MSUJUQVNOMV9MSUJESVJ9ICR7UENfTElCVEFTTjFfTElCUkFSWV9ESVJT
fQorKQorCitpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQorRklORF9QQUNL
QUdFX0hBTkRMRV9TVEFOREFSRF9BUkdTKExJQlRBU04xIERFRkFVTFRfTVNHIExJQlRBU04xX0xJ
QlJBUklFUykKKworbWFya19hc19hZHZhbmNlZChMSUJUQVNOMV9JTkNMVURFX0RJUlMgTElCVEFT
TjFfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBlOGE5ZGI2YTE2YzJmODMwOTE5
ZDg5ZTU5ZWUyMTMyZjRjNDk1OTAzLi4wMmQ4M2ZkNjYxNjk1ZjVlOWU3ZGJlNTRkOWRlOTFkOTlm
YTYzMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMjcxLDYgKzI3MSwxMCBAQCBpZiAoRU5B
QkxFX01FRElBX1NUUkVBTSBPUiBFTkFCTEVfV0VCX1JUQykKIGVuZGlmICgpCiAKIGlmIChFTkFC
TEVfU1VCVExFX0NSWVBUTykKKyAgICBmaW5kX3BhY2thZ2UoTGlidGFzbjEgUkVRVUlSRUQpCisg
ICAgaWYgKE5PVCBMSUJUQVNOMV9GT1VORCkKKyAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAi
bGlidGFzbjEgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFdlYiBDcnlwdG8gQVBJIHN1cHBvcnQuIikK
KyAgICBlbmRpZiAoKQogICAgIGlmIChMSUJHQ1JZUFRfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMS43
LjApCiAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYmdjcnlwdCAxLjcuMCBpcyByZXF1
aXJlZCB0byBlbmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9ydC4iKQogICAgIGVuZGlmICgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV1BFLmNtYWtlCmluZGV4IGIwNDQzOTRhN2E0ZDNkMzkyN2IwYWM1ZjVlMzZmMTZhNmQ2
MzM1ZTEuLjYzMmExZDA4YTkxZTEzNmJkOWQ0ZGFjYmNmYzhiYWY5MDdlOWFlMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zV1BFLmNtYWtlCkBAIC0xMTksNiArMTE5LDEwIEBAIGlmIChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQorICAgIGZp
bmRfcGFja2FnZShMaWJ0YXNuMSBSRVFVSVJFRCkKKyAgICBpZiAoTk9UIExJQlRBU04xX0ZPVU5E
KQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJ0YXNuMSBpcyByZXF1aXJlZCB0byBl
bmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9ydC4iKQorICAgIGVuZGlmICgpCiAgICAgaWYgKExJ
QkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcuMCkKICAgICAgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBXZWIgQ3J5cHRv
IEFQSSBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4N2E1ZmQyODBiYzM4YTQyNDZm
OWY4ODhiMmNiYjIzOGJjZjVkZTQ2Li5lZjBlYTVjNGViNGZmMjJiZTU0YTY2ZmVlZDc3OTI1MmU2
Y2JjOGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMjAgIFphbiBEb2JlcnNlayAg
PHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlw
dG9LZXlFQyBTUEtJIGltcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjkyNworCisgICAgICAgIFJldmlld2VkIGJ5IEppZXdlbiBUYW4sIE1p
Y2hhZWwgQ2F0YW56YXJvIGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAqIHBs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBVbnNraXAgb3IgZW5hYmxlIHRo
ZSBFQy1iYXNlZCBTUEtJIGltcG9ydCB0ZXN0cyB0aGF0IGFyZSBub3cgcGFzc2luZy4KKwogMjAx
Ny0wNi0yMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIERpc2FibGUgZm9udCB2YXJpYXRpb25zIG9uIG1hY09TIFNpZXJyYSBhbmQgaU9TIDEwCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA0MTg4NDUzODY2
MDYxMDliZWY3Y2E5ODcxMGI1ZGIzYWVjYmY5NTQuLjBlYzcyMjFlOTZkZDkwY2ZmY2IzMDFiY2Zh
NWI3YmVjY2ZkM2U2ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCkBAIC03NTgsMjAgKzc1OCwxNSBAQCB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvZWNkaC1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2ktcDI1Ni5odG1sIFsgU2tpcAogd2Via2l0
Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjZGgtZ2VuZXJhdGUtZXhwb3J0LWtleS1zcGtp
LXAzODQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2Vj
ZGgtaW1wb3J0LXBrY3M4LWtleS1wMjU2Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMx
MjIgY3J5cHRvL3N1YnRsZS9lY2RoLWltcG9ydC1wa2NzOC1rZXktcDM4NC5odG1sIFsgU2tpcCBd
Ci13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkaC1pbXBvcnQtc3BraS1rZXkt
cDI1Ni5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNk
aC1pbXBvcnQtc3BraS1rZXktcDM4NC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIy
IGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUtZXhwb3J0LWtleS1wa2NzOC5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWNkc2EtZ2VuZXJhdGUtZXhw
b3J0LWtleS1zcGtpLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1
YnRsZS9lY2RzYS1pbXBvcnQtcGtjczgta2V5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3N1YnRsZS9lY2RzYS1pbXBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1qd2sta2V5LWV4cG9y
dC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3Vi
dGxlL2VjLWltcG9ydC1qd2sta2V5LWV4cG9ydC1zcGtpLWtleS5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvZWMtaW1wb3J0LXJhdy1rZXktZXhwb3J0LXNw
a2kta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9l
Yy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1qd2sta2V5Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtcGtjczgta2V5LWV4cG9ydC1wa2Nz
OC1rZXktcDI1Ni5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvZWMtaW1wb3J0LXBrY3M4LWtleS1leHBvcnQtcGtjczgta2V5LXAzODQuaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS1l
eHBvcnQtandrLWtleS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9z
dWJ0bGUvZWMtaW1wb3J0LXNwa2kta2V5LWV4cG9ydC1yYXcta2V5Lmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXktZXhwb3J0
LXNwa2kta2V5LXAyNTYuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8v
c3VidGxlL2VjLWltcG9ydC1zcGtpLWtleS1leHBvcnQtc3BraS1rZXktcDM4NC5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhLWV4cG9ydC1rZXktbWFs
Zm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFNraXAgXQpAQCAtODExLDcgKzgwNiw2IEBAIHdlYmtp
dC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2Flcy1wb3N0TWVzc2FnZS13b3Jr
ZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0
bGUvZWMtZ2VuZXJhdGUtZXhwb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1nZW5lcmF0ZS1leHBvcnQtc3BraS1r
ZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0
bGUvZWMtaW1wb3J0LXBrY3M4LWtleS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIy
IGNyeXB0by93b3JrZXJzL3N1YnRsZS9lYy1pbXBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvZWMtcG9zdE1lc3NhZ2Ut
d29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMv
c3VidGxlL2htYWMtcG9zdE1lc3NhZ2Utd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xMzMxMjIgY3J5cHRvL3dvcmtlcnMvc3VidGxlL2hyc2EtcG9zdE1lc3NhZ2Utd29ya2VyLmh0
bWwgWyBTa2lwIF0KQEAgLTg0NCw2ICs4MzgsOSBAQCBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1w
b3J0LWtleS12ZXJpZnkuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3dvcmtlcnMvc3VidGxlL3JzYS1w
c3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBQYXNzIF0KIGNyeXB0by93b3JrZXJzL3N1YnRsZS9y
c2EtcHNzLWltcG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KIAorIyBsaWJnY3J5cHQtYmFz
ZWQgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgZWNESCBhbGdvcml0aG0gaWRlbnRpZmllciBmb3Ig
RUNESCBTUEtJIGltcG9ydHMuCitjcnlwdG8vc3VidGxlL2VjZGgtaW1wb3J0LXNwa2kta2V5LWVj
ZGgtaWRlbnRpZmllci5odG1sIFsgUGFzcyBdCisKICMgVGhlc2UgYXJlIGxlZ2FjeSBBUElzIHRo
YXQgd2UgZG9uJ3Qgc3VwcG9ydCwgYXBhcnQgZnJvbSBhIGZldyBkaWdlc3QgYWxnb3JpdGhtcy4K
IHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3dlYmtpdFN1YnRsZSBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEzMzMxOSBjcnlwdG8vd2Via2l0U3VidGxlL3NoYS0xLmh0bWwgWyBQYXNzIF0KZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlMjMwNzVlZmUyNzIxYWI2Mzlm
NGU5NWVhYzM1N2I5NWUyZTlhNmU4Li4wODg2Yjg5ZTcwZGQ2ODkzYzMwZTNiZThhYjQ3MjUxZjA2
MTk5MDg2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTctMDYtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlFQyBTUEtJIGltcG9ydHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjkyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IEppZXdlbiBUYW4sIE1pY2hhZWwgQ2F0YW56YXJvIGFuZCBDYXJs
b3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kTGlidGFzbjEu
Y21ha2U6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBS
ZXF1aXJlIGxpYnRhc24xIHdoZW4gU1VCVExFX0NSWVBUTyBpcyBlbmFibGVkLgorICAgICAgICAq
IFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOiBEaXR0by4KKwogMjAxNy0wNi0yMCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0g
QWRkIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgZ2xpYiBBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>