<?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>205902</bug_id>
          
          <creation_ts>2020-01-07 19:51:26 -0800</creation_ts>
          <short_desc>KeyedDecoderGeneric crashes when it accesses data with non-existing key</short_desc>
          <delta_ts>2020-01-20 00:07:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=186410</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Komori">takashi.komori</reporter>
          <assigned_to name="Takashi Komori">takashi.komori</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>basuke</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1603921</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-07 19:51:26 -0800</bug_when>
    <thetext>When we try to decode encoded data with non-existing key, the decoder crashes.
This is because when KeyedDecoderGeneric decodes with non-existing key, it accesses nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603957</commentid>
    <comment_count>1</comment_count>
      <attachid>387076</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-07 22:16:18 -0800</bug_when>
    <thetext>Created attachment 387076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603960</commentid>
    <comment_count>2</comment_count>
      <attachid>387078</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-07 22:24:33 -0800</bug_when>
    <thetext>Created attachment 387078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603988</commentid>
    <comment_count>3</comment_count>
      <attachid>387078</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 00:19:51 -0800</bug_when>
    <thetext>Comment on attachment 387078
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        KeyedDecoderGeneric craches when it acesses data with non-existing key.

acesses → accesses

&gt; Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp:46
&gt; +    bool exists(const String&amp; key) { return !!m_map.get(key); }

It&apos;s inefficient to call &apos;m_map.get(key)&apos; twice.
Make &apos;get&apos; method return Node*.

Node* get(const String&amp; key) { return m_map.get(key); }

&gt; Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp:193
&gt; +    return WTF::get_if&lt;T&gt;(dictionary-&gt;get(key));

auto node = dictionary-&gt;get(key)
if (!node)
  return nullptr;
return WTF::get_if&lt;T&gt;(node);

&gt; Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp:197
&gt; +bool KeyedDecoderGeneric::getValueFromDictionaryStack(const String&amp; key, T&amp; result)

I think decodeSimpleValue is a better name. KeyedDecoderGlib is using the name.

&gt; Tools/TestWebKitAPI/PlatformWin.cmake:65
&gt; +        Tests/WebCore/KeyedCodingGeneric.cpp

I think this tests should be run on all ports.
Rename KeyedCodingGeneric.cpp KeyedCoding.cpp.
Add KeyedCoding.cpp for all ports.

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:42
&gt; +            return false;

Let&apos;s use std::memcmp.

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:48
&gt; +TEST(KeyedCodingGeneric, SetAndGetBytes)

KeyedCodingGeneric → KeyedCoding

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:51
&gt; +    const size_t dataLength = sizeof(data) / sizeof(uint8_t);

Use WTF_ARRAY_LENGTH.

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:67
&gt; +    result = decoder-&gt;decodeBytes(&quot;data&quot;, buffer, size);

Rename &apos;result&apos; to &apos;ok&apos; or &apos;success&apos;.

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:133
&gt; +    EXPECT_EQ(INT32_MAX, value);

I think you should add one more test case checking unavailable to decode int32 as other type, for example, bool.
    ok = decoder-&gt;decodeBool(&quot;zero&quot;, value);
    EXPECT_FALSE(ok);

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:263
&gt; +    encoder-&gt;encodeDouble(&quot;double-max&quot;, DBL_MAX);

I think std::numeric_limits&lt;double&gt;::min() and std::numeric_limits&lt;double&gt;::max() are better in C++ code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603992</commentid>
    <comment_count>4</comment_count>
      <attachid>387078</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 00:25:03 -0800</bug_when>
    <thetext>Comment on attachment 387078
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:108
&gt; +    encoder-&gt;encodeInt32(&quot;int32-max&quot;, INT32_MAX);

I think you can simplify these tests by add a template function.

testSimpleValue(&amp;WebCore::KeyedEncoder::encodeInt64, &amp;WebCore::KeyedDecoder::decodeInt64, -2);
testSimpleValue(&amp;WebCore::KeyedEncoder::encodeFloat, &amp;WebCore::KeyedDecoder::decodeFloat, -1.5);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603993</commentid>
    <comment_count>5</comment_count>
      <attachid>387078</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 00:32:11 -0800</bug_when>
    <thetext>Comment on attachment 387078
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:432
&gt; +    EXPECT_EQ(users.size(), decodedUsers.size());

EXPECT_EQ(users, decodedUsers);

Is this possible?
If so, EXPECT_EQ(users.size(), decodedUsers.size()) is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604080</commentid>
    <comment_count>6</comment_count>
      <attachid>387078</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-08 07:06:35 -0800</bug_when>
    <thetext>Comment on attachment 387078
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:108
&gt;&gt; +    encoder-&gt;encodeInt32(&quot;int32-max&quot;, INT32_MAX);
&gt; 
&gt; I think you can simplify these tests by add a template function.
&gt; 
&gt; testSimpleValue(&amp;WebCore::KeyedEncoder::encodeInt64, &amp;WebCore::KeyedDecoder::decodeInt64, -2);
&gt; testSimpleValue(&amp;WebCore::KeyedEncoder::encodeFloat, &amp;WebCore::KeyedDecoder::decodeFloat, -1.5);

But, I am wondering round trip tests are really needed because it transfers the encoding and decoding tasks to PersistentEncoder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606181</commentid>
    <comment_count>7</comment_count>
      <attachid>387603</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-13 18:33:01 -0800</bug_when>
    <thetext>Created attachment 387603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606190</commentid>
    <comment_count>8</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-13 18:41:15 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #3)
&gt; Comment on attachment 387078 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387078&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        KeyedDecoderGeneric craches when it acesses data with non-existing key.
&gt; 
&gt; acesses → accesses

Fixed.

&gt; &gt; Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp:46
&gt; &gt; +    bool exists(const String&amp; key) { return !!m_map.get(key); }
&gt; 
&gt; It&apos;s inefficient to call &apos;m_map.get(key)&apos; twice.
&gt; Make &apos;get&apos; method return Node*.
&gt; 
&gt; Node* get(const String&amp; key) { return m_map.get(key); }
&gt; 
&gt; &gt; Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp:193
&gt; &gt; +    return WTF::get_if&lt;T&gt;(dictionary-&gt;get(key));
&gt; 
&gt; auto node = dictionary-&gt;get(key)
&gt; if (!node)
&gt;   return nullptr;
&gt; return WTF::get_if&lt;T&gt;(node);

Fixed.

&gt; &gt; Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp:197
&gt; &gt; +bool KeyedDecoderGeneric::getValueFromDictionaryStack(const String&amp; key, T&amp; result)
&gt; 
&gt; I think decodeSimpleValue is a better name. KeyedDecoderGlib is using the
&gt; name.

Changed.

&gt; &gt; Tools/TestWebKitAPI/PlatformWin.cmake:65
&gt; &gt; +        Tests/WebCore/KeyedCodingGeneric.cpp
&gt; 
&gt; I think this tests should be run on all ports.
&gt; Rename KeyedCodingGeneric.cpp KeyedCoding.cpp.
&gt; Add KeyedCoding.cpp for all ports.

Moved to Tools/TestWebKitAPI/CMakeLists.txt but I can&apos;t test other ports...

&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:42
&gt; &gt; +            return false;
&gt; 
&gt; Let&apos;s use std::memcmp.

Fixed.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:48
&gt; &gt; +TEST(KeyedCodingGeneric, SetAndGetBytes)
&gt; 
&gt; KeyedCodingGeneric → KeyedCoding

Moved.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:51
&gt; &gt; +    const size_t dataLength = sizeof(data) / sizeof(uint8_t);
&gt; 
&gt; Use WTF_ARRAY_LENGTH.

Fixed.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:67
&gt; &gt; +    result = decoder-&gt;decodeBytes(&quot;data&quot;, buffer, size);
&gt; 
&gt; Rename &apos;result&apos; to &apos;ok&apos; or &apos;success&apos;.

Changed to &apos;success&apos;.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:133
&gt; &gt; +    EXPECT_EQ(INT32_MAX, value);
&gt; 
&gt; I think you should add one more test case checking unavailable to decode
&gt; int32 as other type, for example, bool.
&gt;     ok = decoder-&gt;decodeBool(&quot;zero&quot;, value);
&gt;     EXPECT_FALSE(ok);

Added tests which try to decode invalid type. 

&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:263
&gt; &gt; +    encoder-&gt;encodeDouble(&quot;double-max&quot;, DBL_MAX);
&gt; 
&gt; I think std::numeric_limits&lt;double&gt;::min() and
&gt; std::numeric_limits&lt;double&gt;::max() are better in C++ code.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606192</commentid>
    <comment_count>9</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-13 18:43:16 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #4)
&gt; Comment on attachment 387078 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387078&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:108
&gt; &gt; +    encoder-&gt;encodeInt32(&quot;int32-max&quot;, INT32_MAX);
&gt; 
&gt; I think you can simplify these tests by add a template function.
&gt; 
&gt; testSimpleValue(&amp;WebCore::KeyedEncoder::encodeInt64,
&gt; &amp;WebCore::KeyedDecoder::decodeInt64, -2);
&gt; testSimpleValue(&amp;WebCore::KeyedEncoder::encodeFloat,
&gt; &amp;WebCore::KeyedDecoder::decodeFloat, -1.5);

Added template function testSimpleValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606194</commentid>
    <comment_count>10</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-13 18:47:23 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #5)
&gt; Comment on attachment 387078 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387078&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCodingGeneric.cpp:432
&gt; &gt; +    EXPECT_EQ(users.size(), decodedUsers.size());
&gt; 
&gt; EXPECT_EQ(users, decodedUsers);
&gt; 
&gt; Is this possible?
&gt; If so, EXPECT_EQ(users.size(), decodedUsers.size()) is not needed.

Changed to compare users and decodedUsers directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606218</commentid>
    <comment_count>11</comment_count>
      <attachid>387603</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-13 19:58:58 -0800</bug_when>
    <thetext>Comment on attachment 387603
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:80
&gt; +template &lt;typename EncodeValueType, typename DecodeValueType&gt; typename std::enable_if&lt;std::is_same&lt;EncodeValueType, DecodeValueType&gt;::value, bool&gt;::type testSimpleValueDecode(bool decodeSuccess, EncodeValueType expected, DecodeValueType decoded)

Use is_same_v instead of is_same.
Use constexpr if instead of SFINAE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606254</commentid>
    <comment_count>12</comment_count>
      <attachid>387617</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-13 22:38:39 -0800</bug_when>
    <thetext>Created attachment 387617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606886</commentid>
    <comment_count>13</comment_count>
      <attachid>387780</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-15 05:32:21 -0800</bug_when>
    <thetext>Created attachment 387780
Patch

This patch removes decoding number tests by different type number decoder.
Because on mac port KeyedDecoderCF could decode numbers which is encoded by another number type encoder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607307</commentid>
    <comment_count>14</comment_count>
      <attachid>387885</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-15 18:40:06 -0800</bug_when>
    <thetext>Created attachment 387885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607451</commentid>
    <comment_count>15</comment_count>
      <attachid>387885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-16 07:01:57 -0800</bug_when>
    <thetext>Comment on attachment 387885
Patch

Clearing flags on attachment: 387885

Committed r254678: &lt;https://trac.webkit.org/changeset/254678&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607452</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-16 07:01:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607453</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-16 07:02:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/58643165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607631</commentid>
    <comment_count>18</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-01-16 13:32:06 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/254678/webkit has broken 11 API tests

Log:
https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/1735/steps/run-api-tests/logs/stdio

Build:
https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/1735

Crash example:
    TestWebKitAPI.KeyedCoding.SetAndGetFloat
        ASSERTION FAILED: CFGetTypeID(object) == CFTypeTrait&lt;T&gt;::typeID()
        /Volumes/Data/slave/catalina-debug/build/WebKitBuild/Debug/usr/local/include/wtf/cf/TypeCastsCF.h(70) : T WTF::dynamic_cf_cast(CFTypeRef) [T = const __CFBoolean *]
        1   0x115b15d39 WTFCrash
        2   0x115b15d59 WTFCrashWithSecurityImplication
        3   0x12a72a107 __CFBoolean const* WTF::dynamic_cf_cast&lt;__CFBoolean const*&gt;(void const*)
        4   0x12a72a048 WebCore::KeyedDecoderCF::decodeBool(WTF::String const&amp;, bool&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607720</commentid>
    <comment_count>19</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-16 15:52:55 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #18)
&gt; It looks like the changes in https://trac.webkit.org/changeset/254678/webkit
&gt; has broken 11 API tests
&gt; 
&gt; Log:
&gt; https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/1735/
&gt; steps/run-api-tests/logs/stdio
&gt; 
&gt; Build:
&gt; https://build.webkit.org/builders/Apple-Catalina-Debug-WK2-Tests/builds/1735
&gt; 
&gt; Crash example:
&gt;     TestWebKitAPI.KeyedCoding.SetAndGetFloat
&gt;         ASSERTION FAILED: CFGetTypeID(object) == CFTypeTrait&lt;T&gt;::typeID()
&gt;        
&gt; /Volumes/Data/slave/catalina-debug/build/WebKitBuild/Debug/usr/local/include/
&gt; wtf/cf/TypeCastsCF.h(70) : T WTF::dynamic_cf_cast(CFTypeRef) [T = const
&gt; __CFBoolean *]
&gt;         1   0x115b15d39 WTFCrash
&gt;         2   0x115b15d59 WTFCrashWithSecurityImplication
&gt;         3   0x12a72a107 __CFBoolean const* WTF::dynamic_cf_cast&lt;__CFBoolean
&gt; const*&gt;(void const*)
&gt;         4   0x12a72a048 WebCore::KeyedDecoderCF::decodeBool(WTF::String
&gt; const&amp;, bool&amp;)

Those look like the API tests added in this patch:

https://results.webkit.org/?suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;suite=api-tests&amp;test=TestWebKitAPI.KeyedCoding.SetAndGetUInt32&amp;test=TestWebKitAPI.KeyedCoding.SetAndGetUInt64&amp;test=TestWebKitAPI.ProcessSwap.QuickLookRequestsPasswordAfterSwap&amp;test=TestWebKitAPI.UIPasteboardTests.DataTransferGetDataWhenPastingURL&amp;test=TestWebKitAPI.UIPasteboardTests.PasteWithCompletionHandler&amp;test=TestWebKitAPI.WKWebView.IsOpaqueNoDecodedFromArchive&amp;test=TestWebKitAPI.WKWebView.PrintFormatterHangsIfWebProcessCrashesBeforeWaiting

I think we should roll this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607762</commentid>
    <comment_count>20</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-16 16:39:58 -0800</bug_when>
    <thetext>Committed r254720: &lt;https://trac.webkit.org/changeset/254720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607767</commentid>
    <comment_count>21</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-16 16:41:23 -0800</bug_when>
    <thetext>Reverted. Thank you, Truitt and Jonathan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608612</commentid>
    <comment_count>22</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-19 17:19:07 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608613</commentid>
    <comment_count>23</comment_count>
      <attachid>388199</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-19 17:19:09 -0800</bug_when>
    <thetext>Created attachment 388199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608614</commentid>
    <comment_count>24</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-19 17:20:52 -0800</bug_when>
    <thetext>Remove all invalid type decoding tests not to crash on mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608617</commentid>
    <comment_count>25</comment_count>
      <attachid>388199</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-01-19 19:38:12 -0800</bug_when>
    <thetext>Comment on attachment 388199
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:89
&gt; +    if constexpr (std::is_same_v&lt;EncodeValueType, String&gt; &amp;&amp; std::is_same_v&lt;DecodeValueType, String&gt;) {

Then, remove this &quot;if constexpr&quot; part

&gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:160
&gt; +    EXPECT_TRUE(testSimpleValue(&amp;WebCore::KeyedEncoder::encodeString, &amp;WebCore::KeyedDecoder::decodeString, String()));

I think this test also should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608629</commentid>
    <comment_count>26</comment_count>
      <attachid>388206</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-19 23:06:41 -0800</bug_when>
    <thetext>Created attachment 388206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608631</commentid>
    <comment_count>27</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2020-01-19 23:09:37 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #25)
&gt; Comment on attachment 388199 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388199&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:89
&gt; &gt; +    if constexpr (std::is_same_v&lt;EncodeValueType, String&gt; &amp;&amp; std::is_same_v&lt;DecodeValueType, String&gt;) {
&gt; 
&gt; Then, remove this &quot;if constexpr&quot; part

Removed.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:160
&gt; &gt; +    EXPECT_TRUE(testSimpleValue(&amp;WebCore::KeyedEncoder::encodeString, &amp;WebCore::KeyedDecoder::decodeString, String()));
&gt; 
&gt; I think this test also should be removed.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608637</commentid>
    <comment_count>28</comment_count>
      <attachid>388206</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 00:07:20 -0800</bug_when>
    <thetext>Comment on attachment 388206
Patch

Clearing flags on attachment: 388206

Committed r254811: &lt;https://trac.webkit.org/changeset/254811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608638</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 00:07:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387076</attachid>
            <date>2020-01-07 22:16:18 -0800</date>
            <delta_ts>2020-01-07 22:24:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205902-20200108151300.patch</filename>
            <type>text/plain</type>
            <size>24360</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlYzJjMzE1MzYwZDRm
MTY2YzcyMmZiMjZjY2ZkNWY5MzkyNThmYi4uMjBlY2UyMTIyMzk5MGJhYWQ0NzQ4M2Q4ZDFlMGZk
NGFmYjhhYzE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTAxLTA3ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVj
b2RlckdlbmVyaWMgY3JhY2hlcyB3aGVuIGl0IGFjZXNzZXMgZGF0YSB3aXRoIG5vbi1leGlzdGlu
ZyBrZXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbnVsbCBjaGVjayBmdW5jdGlvbiBmb3IgS2V5ZWREZWNvZGVyR2VuZXJpYy4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNw
cAorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVk
RGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRWYWx1ZUZyb21EaWN0aW9uYXJ5
U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQm9vbCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVVSW50MzIpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDY0KToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDMyKToKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDY0KToKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUZsb2F0KToKKyAgICAgICAgKFdl
YkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5BcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmg6CisKIDIwMjAtMDEtMDcgIE1lZ2FuIEdhcmRuZXIg
IDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgc3RhcnQvZW5kUG9z
aXRpb24gdG8gc3RhcnQvZW5kT2Zmc2V0IGluIFNlbGVjdGlvblJhbmdlRGF0YSBmb3IgY2xhcml0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29k
ZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNv
ZGVyR2VuZXJpYy5jcHAKaW5kZXggMGU1OTcyMzIxYjVmNzNmNTcyYmQ3OTY1ODgxMWYwMDNhOTVl
ZDQ5Mi4uOWU5ZTM3NDgzYjI4ZjFmNjZjYzVhZmQyNDJiZjJkMzcyM2RkZThjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVy
aWMuY3BwCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFk
ZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAg
Tm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0K
KyAgICBib29sIGV4aXN0cyhjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gISFtX21hcC5nZXQo
a2V5KTsgfQogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
Tm9kZT4+IG1fbWFwOwpAQCAtMTgxLDExICsxODIsMzQgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6
S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAg
ICAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK2NvbnN0IFQqIEtleWVkRGVjb2RlckdlbmVyaWM6OmdldFBvaW50ZXJGcm9tRGljdGlvbmFy
eVN0YWNrKGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIGF1dG8mIGRpY3Rpb25hcnkgPSBtX2Rp
Y3Rpb25hcnlTdGFjay5sYXN0KCk7CisKKyAgICBpZiAoIWRpY3Rpb25hcnktPmV4aXN0cyhrZXkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBXVEY6OmdldF9pZjxUPihk
aWN0aW9uYXJ5LT5nZXQoa2V5KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIEtl
eWVkRGVjb2RlckdlbmVyaWM6OmdldFZhbHVlRnJvbURpY3Rpb25hcnlTdGFjayhjb25zdCBTdHJp
bmcmIGtleSwgVCYgcmVzdWx0KQoreworICAgIGF1dG8gdmFsdWUgPSBnZXRQb2ludGVyRnJvbURp
Y3Rpb25hcnlTdGFjazxUPihrZXkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6ZSkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdU
Rjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQo
a2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPFZl
Y3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBkYXRhID0gdmFsdWUtPmRhdGEoKTsKICAgICBzaXplID0gdmFsdWUtPnNpemUo
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Myw4MSArMjE3LDUwIEBAIGJvb2wgS2V5ZWREZWNv
ZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
JiBkYXRhLCBzCiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQm9vbChjb25zdCBT
dHJpbmcmIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRf
aWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwg
cmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVVSW50MzIoY29u
c3QgU3RyaW5nJiBrZXksIHVpbnQzMl90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBX
VEY6OmdldF9pZjx1aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2
YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFy
eVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNv
ZGVVSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0
byogdmFsdWUgPSBXVEY6OmdldF9pZjx1aW50NjRfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgp
LT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVG
cm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJH
ZW5lcmljOjpkZWNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgcmVzdWx0KQog
ewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8aW50MzJfdD4obV9kaWN0aW9uYXJ5U3Rh
Y2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
Z2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXll
ZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCYg
cmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8aW50NjRfdD4obV9kaWN0
aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwg
ZmxvYXQmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGZsb2F0Piht
X2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBnZXRWYWx1ZUZyb21EaWN0aW9uYXJ5U3RhY2soa2V5LCByZXN1bHQpOwog
fQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxk
b3VibGU+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGdldFZhbHVlRnJvbURpY3Rpb25hcnlTdGFjayhrZXksIHJl
c3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlU3RyaW5nKGNvbnN0
IFN0cmluZyYga2V5LCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6
Z2V0X2lmPFN0cmluZz4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAg
aWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNr
KGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVj
dChjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHN0
ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQo
a2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0
ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQodmFsdWUtPmdl
dCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI3OSw5ICsyNzIsMTAgQEAgdm9pZCBLZXll
ZERlY29kZXJHZW5lcmljOjplbmRPYmplY3QoKQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6
OmJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6
OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkt
PmdldChrZXkpKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3Rh
Y2s8c3RkOjp1bmlxdWVfcHRyPEFycmF5Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBtX2FycmF5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7
CiAgICAgbV9hcnJheUluZGV4U3RhY2suYXBwZW5kKDApOwogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5l
cmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVy
aWMuaAppbmRleCA1NmEyZjkzOGEwNTRiNDc3Y2FkZGRlMDM3OTcxZTUzMTJmNGUyZGNiLi45MWY1
ZTM2ZTM3OTNiNjljNmViYjgwOGRhODIzOTVkNDMwYjhjODM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaApAQCAtNTUs
NiArNTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZW5kQXJyYXkoKSBvdmVycmlkZTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgY29uc3QgVCogZ2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2soY29uc3QgU3Ry
aW5nJiBrZXkpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIGdldFZhbHVl
RnJvbURpY3Rpb25hcnlTdGFjayhjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0KTsKKwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5PiBtX3Jvb3REaWN0aW9uYXJ5OwogICAgIFZlY3Rv
cjxEaWN0aW9uYXJ5KiwgMTY+IG1fZGljdGlvbmFyeVN0YWNrOwogICAgIFZlY3RvcjxBcnJheSos
IDE2PiBtX2FycmF5U3RhY2s7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggM2EyNTJmNmVlZTRmZGY2NGUwNDE3YmExNDM1NjlkNmE0ZGE2ZDUxYy4u
OGUwMjkyM2NhOTMxNTNlOWU1NzE4NmE3YTEwOWRhZDYzNGFkYzkzMCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIw
LTAxLTA3ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAg
ICAgIEtleWVkRGVjb2RlckdlbmVyaWMgY3JhY2hlcyB3aGVuIGl0IGFjZXNzZXMgZGF0YSB3aXRo
IG5vbi1leGlzdGluZyBrZXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nR2VuZXJpYy5jcHA6IEFkZGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tEZWNvZGVkQnl0ZXMpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGlu
Z0dlbmVyaWNUZXN0T2JqZWN0OjplbmNvZGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6S2V5
ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZGVjb2RlKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OktleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3Q6OktleWVkQ29kaW5nR2VuZXJpY1Rlc3RP
YmplY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6S2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9i
amVjdDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om9wZXJhdG9yPT0p
OgorCiAyMDIwLTAxLTA3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbRVdTXSBMaW1pdCBwcmUtZXhpc3RpbmcgSlNDIHRlc3RzIGZhaWx1cmVzIHRvIGRp
c3BsYXkgaW4gYnVpbGRib3Qgc3VtbWFyeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21h
a2UKaW5kZXggMzQ5MzM0ODI2ZmEzNGRiMjhhZTJkODI2MGZjNWFlNGQ1MjRkYzBlZi4uODgxNWM1
MDQ2NGM2OWMxMTdlOGQzMGI1NjkwZjIxZTc5OTNjNjViOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtV2luLmNtYWtlCkBAIC02Miw5ICs2Miw4IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5f
Q0FJUk99KQogICAgICkKICAgICBsaXN0KEFQUEVORCBUZXN0V2ViQ29yZV9TT1VSQ0VTCiAgICAg
ICAgIFRlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0LmNwcAotCisgICAgICAgIFRlc3RzL1dlYkNv
cmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL2N1cmwvQ29v
a2llcy5jcHAKLQogICAgICAgICBUZXN0cy9XZWJDb3JlL3dpbi9CaXRtYXBJbWFnZS5jcHAKICAg
ICApCiBlbHNlICgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9LZXllZENvZGluZ0dlbmVyaWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDljNTFmMGJlMzUzNjNh
ZTQyYjRjMTRiNzk3NzU4ZTIzNjRlZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNwcApAQCAtMCwwICsxLDQz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0tleWVkQ29kaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
KyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGNoZWNrRGVjb2RlZEJ5dGVz
KGNvbnN0IHVpbnQ4X3QqIG9yaWdpbmFsLCBzaXplX3Qgb3JpZ2luYWxTaXplLCBjb25zdCB1aW50
OF90KiBkZWNvZGVkLCBzaXplX3QgZGVjb2RlZFNpemUpCit7CisgICAgaWYgKG9yaWdpbmFsU2l6
ZSAhPSBkZWNvZGVkU2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBvcmlnaW5hbFNpemU7IGkrKykgeworICAgICAgICBpZiAob3JpZ2luYWxbaV0g
IT0gZGVjb2RlZFtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldEJ5dGVz
KQoreworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YVtdID0geyAweDAwLCAweDAxLCAweDAyLCAweDAz
LCAweGRlLCAweGFkLCAweGJlLCAweGVmIH07CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGgg
PSBzaXplb2YoZGF0YSkgLyBzaXplb2YodWludDhfdCk7CisgICAgY29uc3Qgc2l6ZV90IGRhdGFM
ZW5ndGhPbmUgPSAxOworICAgIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoWmVybyA9IDA7CisKKyAg
ICBhdXRvIGVuY29kZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YSIsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGVuY29k
ZXItPmVuY29kZUJ5dGVzKCJkYXRhLXNpemUwIiwgZGF0YSwgZGF0YUxlbmd0aFplcm8pOworICAg
IGVuY29kZXItPmVuY29kZUJ5dGVzKCJkYXRhLXNpemUxIiwgZGF0YSwgZGF0YUxlbmd0aE9uZSk7
CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKwor
ICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVk
QnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCByZXN1bHQ7CisgICAgY29uc3QgdWludDhfdCog
YnVmZmVyOworICAgIHNpemVfdCBzaXplOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2Rl
Qnl0ZXMoImRhdGEiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7Cisg
ICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgsIHNpemUpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrRGVj
b2RlZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgsIGJ1ZmZlciwgc2l6ZSkpOworCisgICAgcmVzdWx0
ID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEtc2l6ZTAiLCBidWZmZXIsIHNpemUpOworICAg
IEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGhaZXJvLCBzaXpl
KTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUJ5dGVzKCJkYXRhLXNpemUxIiwgYnVm
ZmVyLCBzaXplKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUShkYXRh
TGVuZ3RoT25lLCBzaXplKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja0RlY29kZWRCeXRlcyhkYXRh
LCBkYXRhTGVuZ3RoT25lLCBidWZmZXIsIHNpemUpKTsKK30KKworVEVTVChLZXllZENvZGluZ0dl
bmVyaWMsIFNldEFuZEdldEJvb2wpCit7CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQm9vbCgiYm9vbC10cnVl
IiwgdHJ1ZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQm9vbCgiYm9vbC1mYWxzZSIsIGZhbHNlKTsK
KworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7Cisg
ICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRC
dWZmZXItPnNpemUoKSk7CisKKyAgICBib29sIHJlc3VsdCwgdmFsdWU7CisgICAgcmVzdWx0ID0g
ZGVjb2Rlci0+ZGVjb2RlQm9vbCgiYm9vbC10cnVlIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVF
KHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKHRydWUsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRl
Y29kZXItPmRlY29kZUJvb2woImJvb2wtZmFsc2UiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
cmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoZmFsc2UsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENv
ZGluZ0dlbmVyaWMsIFNldEFuZEdldEludDMyKQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUludDMyKCJ6
ZXJvIiwgMCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIoIm1pbnVzLW9uZSIsIC0xKTsKKyAg
ICBlbmNvZGVyLT5lbmNvZGVJbnQzMigicGx1cy1vbmUiLCAxKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGVJbnQzMigiaW50MzItbWluIiwgSU5UMzJfTUlOKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQz
MigiaW50MzItbWF4IiwgSU5UMzJfTUFYKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVu
Y29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29k
ZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBib29sIHJl
c3VsdDsKKyAgICBpbnQzMl90IHZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUlu
dDMyKCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNU
X0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDMyKCJtaW51
cy1vbmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEo
LTEsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDMyKCJwbHVzLW9u
ZSIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgxLCB2
YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVJbnQzMigiaW50MzItbWluIiwg
dmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKElOVDMyX01J
TiwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlSW50MzIoImludDMyLW1h
eCIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUShJTlQz
Ml9NQVgsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldFVJ
bnQzMikKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29k
ZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoInplcm8iLCAwKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVVSW50MzIoInBsdXMtb25lIiwgMSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMy
KCJ1aW50MzItbWF4IiwgVUlOVDMyX01BWCk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBl
bmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6Oktl
eWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNv
ZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCBy
ZXN1bHQ7CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2Rl
VUludDMyKCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQ
RUNUX0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZVVJbnQzMigi
cGx1cy1vbmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1Rf
RVEoMSwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlVUludDMyKCJ1aW50
MzItbWF4IiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VR
KFVJTlQzMl9NQVgsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFu
ZEdldEludDY0KQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUludDY0KCJ6ZXJvIiwgMCk7CisgICAgZW5j
b2Rlci0+ZW5jb2RlSW50NjQoIm1pbnVzLXR3byIsIC0yKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJ
bnQ2NCgicGx1cy10d28iLCAyKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2NCgiaW50NjQtbWlu
IiwgSU5UNjRfTUlOKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2NCgiaW50NjQtbWF4IiwgSU5U
NjRfTUFYKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29k
aW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRCdWZmZXItPmRhdGEoKSks
IGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBib29sIHJlc3VsdDsKKyAgICBpbnQ2NF90
IHZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDY0KCJ6ZXJvIiwgdmFsdWUp
OworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIHZhbHVlKTsKKwor
ICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDY0KCJtaW51cy10d28iLCB2YWx1ZSk7Cisg
ICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoLTIsIHZhbHVlKTsKKworICAg
IHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDY0KCJwbHVzLXR3byIsIHZhbHVlKTsKKyAgICBF
WFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgyLCB2YWx1ZSk7CisKKyAgICByZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVJbnQ2NCgiaW50NjQtbWluIiwgdmFsdWUpOworICAgIEVYUEVD
VF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKElOVDY0X01JTiwgdmFsdWUpOworCisgICAg
cmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlSW50NjQoImludDY0LW1heCIsIHZhbHVlKTsKKyAgICBF
WFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUShJTlQ2NF9NQVgsIHZhbHVlKTsKK30K
KworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldFVJbnQ2NCkKK3sKKyAgICBhdXRv
IGVuY29kZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVVSW50NjQoInplcm8iLCAwKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQoInBs
dXMtb25lIiwgMSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDY0KCJ1aW50NjQtbWF4IiwgVUlO
VDY0X01BWCk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNv
ZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
cihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkp
LCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCByZXN1bHQ7CisgICAgdWludDY0
X3QgdmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlVUludDY0KCJ6ZXJvIiwgdmFs
dWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIHZhbHVlKTsK
KworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZVVJbnQ2NCgicGx1cy1vbmUiLCB2YWx1ZSk7
CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoMSwgdmFsdWUpOworCisg
ICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlVUludDY0KCJ1aW50NjQtbWF4IiwgdmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKFVJTlQ2NF9NQVgsIHZhbHVl
KTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldEZsb2F0KQoreworICAg
IGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVu
Y29kZXItPmVuY29kZUZsb2F0KCJ6ZXJvIiwgMCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlRmxvYXQo
Im1pbnVzLW9uZS1wb2ludC1maXZlIiwgLTEuNSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlRmxvYXQo
Im9uZS1wb2ludC1maXZlIiwgMS41KTsKKyAgICBlbmNvZGVyLT5lbmNvZGVGbG9hdCgiZmxvYXQt
bWluIiwgRkxUX01JTik7CisgICAgZW5jb2Rlci0+ZW5jb2RlRmxvYXQoImZsb2F0LW1heCIsIEZM
VF9NQVgpOworCisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2Rp
bmcoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwg
ZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJvb2wgcmVzdWx0OworICAgIGZsb2F0IHZh
bHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUZsb2F0KCJ6ZXJvIiwgdmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIHZhbHVlKTsKKworICAg
IHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUZsb2F0KCJtaW51cy1vbmUtcG9pbnQtZml2ZSIsIHZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgtMS41LCB2YWx1
ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVGbG9hdCgib25lLXBvaW50LWZpdmUi
LCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoMS41LCB2
YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVGbG9hdCgiZmxvYXQtbWluIiwg
dmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKEZMVF9NSU4s
IHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUZsb2F0KCJmbG9hdC1tYXgi
LCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoRkxUX01B
WCwgdmFsdWUpOworfQorCitURVNUKEtleWVkQ29kaW5nR2VuZXJpYywgU2V0QW5kR2V0RG91Ymxl
KQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcigp
OworICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgiemVybyIsIDApOworICAgIGVuY29kZXItPmVu
Y29kZURvdWJsZSgibWludXMtb25lLXBvaW50LXR3by1maXZlIiwgLTEuMjUpOworICAgIGVuY29k
ZXItPmVuY29kZURvdWJsZSgib25lLXBvaW50LXR3by1maXZlIiwgMS4yNSk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlRG91YmxlKCJkb3VibGUtbWluIiwgREJMX01JTik7CisgICAgZW5jb2Rlci0+ZW5j
b2RlRG91YmxlKCJkb3VibGUtbWF4IiwgREJMX01BWCk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZm
ZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNv
cmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAg
Ym9vbCByZXN1bHQ7CisgICAgZG91YmxlIHZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRl
Y29kZURvdWJsZSgiemVybyIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAg
IEVYUEVDVF9FUSgwLCB2YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVEb3Vi
bGUoIm1pbnVzLW9uZS1wb2ludC10d28tZml2ZSIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShy
ZXN1bHQpOworICAgIEVYUEVDVF9FUSgtMS4yNSwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlRG91YmxlKCJvbmUtcG9pbnQtdHdvLWZpdmUiLCB2YWx1ZSk7CisgICAgRVhQ
RUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoMS4yNSwgdmFsdWUpOworCisgICAgcmVz
dWx0ID0gZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJkb3VibGUtbWF4IiwgdmFsdWUpOworICAgIEVY
UEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKERCTF9NQVgsIHZhbHVlKTsKKworICAg
IHJlc3VsdCA9IGRlY29kZXItPmRlY29kZURvdWJsZSgiZG91YmxlLW1pbiIsIHZhbHVlKTsKKyAg
ICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUShEQkxfTUlOLCB2YWx1ZSk7Cit9
CisKK1RFU1QoS2V5ZWRDb2RpbmdHZW5lcmljLCBTZXRBbmRHZXRTdHJpbmcpCit7CisgICAgYXV0
byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlU3RyaW5nKCJzdHJpbmctbGVuZ3RoLXplcm8iLCAiIik7CisgICAgZW5jb2Rlci0+
ZW5jb2RlU3RyaW5nKCJzdHJpbmctd2Via2l0IiwgIldlYktpdCIpOworCisgICAgYXV0byBlbmNv
ZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKyAgICBhdXRvIGRlY29kZXIg
PSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsK
KworICAgIGJvb2wgcmVzdWx0OworICAgIFN0cmluZyB2YWx1ZTsKKyAgICByZXN1bHQgPSBkZWNv
ZGVyLT5kZWNvZGVTdHJpbmcoInN0cmluZy1sZW5ndGgtemVybyIsIHZhbHVlKTsKKyAgICBFWFBF
Q1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgwLCB2YWx1ZS5sZW5ndGgoKSk7CisKKyAg
ICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVTdHJpbmcoInN0cmluZy13ZWJraXQiLCB2YWx1ZSk7
CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoIldlYktpdCIsIHZhbHVl
KTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIEdldE5vbkV4aXN0aW5nUmVjb3JkKQor
eworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwor
ICAgIGVuY29kZXItPmVuY29kZUJvb2woImJvb2wtdHJ1ZSIsIHRydWUpOworCisgICAgYXV0byBl
bmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKyAgICBhdXRvIGRlY29k
ZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgp
KTsKKworICAgIGJvb2wgcmVzdWx0LCBib29sVmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlQm9vbCgiYm9vbC10cnVlIiwgYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1
bHQpOworICAgIEVYUEVDVF9FUSh0cnVlLCBib29sVmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQm9vbCgibm8tZXhpc3Qta2V5IiwgYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1Rf
RkFMU0UocmVzdWx0KTsKKworICAgIGludDMyX3QgaW50MzJWYWx1ZTsKKyAgICByZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVJbnQzMigibm8tZXhpc3Qta2V5IiwgaW50MzJWYWx1ZSk7CisgICAgRVhQ
RUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICB1aW50MzJfdCB1aW50MzJWYWx1ZTsKKyAgICByZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVVSW50MzIoIm5vLWV4aXN0LWtleSIsIHVpbnQzMlZhbHVlKTsK
KyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIGludDY0X3QgaW50NjRWYWx1ZTsKKyAg
ICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVJbnQ2NCgibm8tZXhpc3Qta2V5IiwgaW50NjRWYWx1
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICB1aW50NjRfdCB1aW50NjRWYWx1
ZTsKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVVSW50NjQoIm5vLWV4aXN0LWtleSIsIHVp
bnQ2NFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIGZsb2F0IGZsb2F0
VmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlRmxvYXQoIm5vLWV4aXN0LWtleSIs
IGZsb2F0VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgZG91YmxlIGRv
dWJsZVZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZURvdWJsZSgibm8tZXhpc3Qt
a2V5IiwgZG91YmxlVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworCisgICAgY29u
c3QgdWludDhfdCogYnVmZmVyOworICAgIHNpemVfdCBzaXplOworICAgIHJlc3VsdCA9IGRlY29k
ZXItPmRlY29kZUJ5dGVzKCJuby1leGlzdC1rZXkiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVD
VF9GQUxTRShyZXN1bHQpOworfQorCitzdHJ1Y3QgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVj
dCB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKFdlYkNvcmU6OktleWVkRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAg
ICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoIm5hbWUiLCBvYmplY3QubV9uYW1lKTsKKyAgICAg
ICAgZW5jb2Rlci5lbmNvZGVJbnQzMigiYWdlIiwgb2JqZWN0Lm1fYWdlKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBLZXll
ZENvZGluZ0dlbmVyaWNUZXN0T2JqZWN0JiBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlU3RyaW5nKCJuYW1lIiwgb2JqZWN0Lm1fbmFtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVJbnQzMigiYWdlIiwgb2Jq
ZWN0Lm1fYWdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdCgpIHsgfTsKKyAg
ICBLZXllZENvZGluZ0dlbmVyaWNUZXN0T2JqZWN0KFN0cmluZyBuYW1lLCBpbnQgYWdlKQorICAg
ICAgICA6IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1fYWdlKGFnZSkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBlcXVhbHMoY29uc3QgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdCYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG1fbmFtZSA9PSBvdGhlci5tX25hbWUp
ICYmIChtX25hbWUgPT0gb3RoZXIubV9uYW1lKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbV9uYW1l
OworICAgIGludDMyX3QgbV9hZ2U7Cit9OworCitzdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QmIGxPYmplY3QsIGNvbnN0IEtleWVkQ29kaW5n
R2VuZXJpY1Rlc3RPYmplY3QmIHJPYmplY3QpCit7CisgICAgcmV0dXJuIGxPYmplY3QuZXF1YWxz
KHJPYmplY3QpOworfQorCitURVNUKEtleWVkQ29kaW5nR2VuZXJpYywgU2V0QW5kR2V0T2JqZWN0
KQoreworICAgIGNvbnN0IEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QgdXNlcjAoIk5vYWgi
LCAyOCk7CisgICAgY29uc3QgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdCB1c2VyMSgiRW1t
YSIsIDMxKTsKKworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlcigpOworICAgIGVuY29kZXItPmVuY29kZU9iamVjdCgidXNlcjAiLCB1c2VyMCwgS2V5ZWRD
b2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZW5jb2RlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmpl
Y3QoInVzZXIxIiwgdXNlcjEsIEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3Q6OmVuY29kZSk7
CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKwor
ICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVk
QnVmZmVyLT5zaXplKCkpOworICAgIGJvb2wgcmVzdWx0OworICAgIEtleWVkQ29kaW5nR2VuZXJp
Y1Rlc3RPYmplY3QgZGVjb2RlZFVzZXIwLCBkZWNvZGVkVXNlcjE7CisKKyAgICByZXN1bHQgPSBk
ZWNvZGVyLT5kZWNvZGVPYmplY3QoInVzZXIwIiwgZGVjb2RlZFVzZXIwLCBLZXllZENvZGluZ0dl
bmVyaWNUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAg
RVhQRUNUX0VRKGRlY29kZWRVc2VyMCwgdXNlcjApOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlT2JqZWN0KCJ1c2VyMSIsIGRlY29kZWRVc2VyMSwgS2V5ZWRDb2RpbmdHZW5lcmljVGVz
dE9iamVjdDo6ZGVjb2RlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9F
UShkZWNvZGVkVXNlcjEsIHVzZXIxKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNl
dEFuZEdldE9iamVjdHMpCit7CisgICAgVmVjdG9yPEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmpl
Y3Q+IHVzZXJzOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgdXNl
cnMuYXBwZW5kKEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QoInVzZXJuYW1lIiwgaSkpOwor
CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygidXNlcnMiLCB1c2Vycy5iZWdpbigpLCB1c2Vycy5l
bmQoKSwgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZW5jb2RlKTsKKyAgICBhdXRvIGVu
Y29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworCisgICAgYXV0byBkZWNv
ZGVyID0gV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGVuY29kZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUo
KSk7CisgICAgVmVjdG9yPEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3Q+IGRlY29kZWRVc2Vy
czsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0cygidXNlcnMiLCBk
ZWNvZGVkVXNlcnMsIEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3Q6OmRlY29kZSk7CisgICAg
RVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEodXNlcnMuc2l6ZSgpLCBkZWNvZGVk
VXNlcnMuc2l6ZSgpKTsKK30KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387078</attachid>
            <date>2020-01-07 22:24:33 -0800</date>
            <delta_ts>2020-01-13 18:32:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205902-20200108152114.patch</filename>
            <type>text/plain</type>
            <size>24327</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlYzJjMzE1MzYwZDRm
MTY2YzcyMmZiMjZjY2ZkNWY5MzkyNThmYi4uNDJiOWFkZDc3ODZkNTFjNzA5ZDU1NzlhYzUxMTUy
OWFkODE4YjcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAxLTA3ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVj
b2RlckdlbmVyaWMgY3JhY2hlcyB3aGVuIGl0IGFjZXNzZXMgZGF0YSB3aXRoIG5vbi1leGlzdGlu
ZyBrZXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbnVsbCBjaGVjayBmdW5jdGlvbiBmb3IgS2V5ZWREZWNvZGVyR2VuZXJpYy4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNw
cAorCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmV4aXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJv
bURpY3Rpb25hcnlTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmlj
OjpnZXRWYWx1ZUZyb21EaWN0aW9uYXJ5U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNv
ZGVyR2VuZXJpYzo6ZGVjb2RlQm9vbCk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJH
ZW5lcmljOjpkZWNvZGVVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6ZGVjb2RlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVy
aWM6OmRlY29kZUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6
OmRlY29kZUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRl
Y29kZUZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZURvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5BcnJheSk6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmg6CisKIDIw
MjAtMDEtMDcgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgc3RhcnQvZW5kUG9zaXRpb24gdG8gc3RhcnQvZW5kT2Zmc2V0IGluIFNlbGVj
dGlvblJhbmdlRGF0YSBmb3IgY2xhcml0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXggMGU1OTcyMzIxYjVm
NzNmNTcyYmQ3OTY1ODgxMWYwMDNhOTVlZDQ5Mi4uOWU5ZTM3NDgzYjI4ZjFmNjZjYzVhZmQyNDJi
ZjJkMzcyM2RkZThjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtl
eSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJl
dHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KKyAgICBib29sIGV4aXN0cyhjb25zdCBTdHJpbmcmIGtl
eSkgeyByZXR1cm4gISFtX21hcC5nZXQoa2V5KTsgfQogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZT4+IG1fbWFwOwpAQCAtMTgxLDExICsxODIsMzQg
QEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0IFQqIEtleWVkRGVjb2RlckdlbmVyaWM6
OmdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKGNvbnN0IFN0cmluZyYga2V5KQoreworICAg
IGF1dG8mIGRpY3Rpb25hcnkgPSBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCk7CisKKyAgICBpZiAo
IWRpY3Rpb25hcnktPmV4aXN0cyhrZXkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBXVEY6OmdldF9pZjxUPihkaWN0aW9uYXJ5LT5nZXQoa2V5KSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Citib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmdldFZhbHVlRnJvbURp
Y3Rpb25hcnlTdGFjayhjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0KQoreworICAgIGF1dG8g
dmFsdWUgPSBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxUPihrZXkpOworICAgIGlmICgh
dmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRl
cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6ZSkK
IHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0
aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50
ZXJGcm9tRGljdGlvbmFyeVN0YWNrPFZlY3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBkYXRhID0gdmFsdWUtPmRhdGEoKTsK
ICAgICBzaXplID0gdmFsdWUtPnNpemUoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Myw4MSAr
MjE3LDUwIEBAIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBzCiAKIGJvb2wgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6ZGVjb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAg
IGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgp
LT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVG
cm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJH
ZW5lcmljOjpkZWNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90JiByZXN1bHQp
CiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjx1aW50MzJfdD4obV9kaWN0aW9uYXJ5
U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBL
ZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVVSW50NjQoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQ2
NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjx1aW50NjRfdD4o
bV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsK
IH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQzMihjb25zdCBTdHJpbmcm
IGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8
aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwg
cmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQ2NChjb25z
dCBTdHJpbmcmIGtleSwgaW50NjRfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RG
OjpnZXRfaWY8aW50NjRfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1
ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0VmFsdWVGcm9tRGljdGlvbmFyeVN0
YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVG
bG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1
ZSA9IFdURjo6Z2V0X2lmPGZsb2F0PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkp
KTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0g
KnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBnZXRWYWx1ZUZyb21EaWN0aW9u
YXJ5U3RhY2soa2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRl
Y29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgYXV0
byogdmFsdWUgPSBXVEY6OmdldF9pZjxkb3VibGU+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+
Z2V0KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGdldFZhbHVlRnJv
bURpY3Rpb25hcnlTdGFjayhrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6ZGVjb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHJlc3VsdCkKIHsK
LSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPFN0cmluZz4obV9kaWN0aW9uYXJ5U3RhY2su
bGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZ2V0
VmFsdWVGcm9tRGljdGlvbmFyeVN0YWNrKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERl
Y29kZXJHZW5lcmljOjpiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBhdXRv
KiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Pj4obV9kaWN0
aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50
ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Pj4oa2V5KTsK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBtX2RpY3Rpb25h
cnlTdGFjay5hcHBlbmQodmFsdWUtPmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI3
OSw5ICsyNzIsMTAgQEAgdm9pZCBLZXllZERlY29kZXJHZW5lcmljOjplbmRPYmplY3QoKQogCiBi
b29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmJlZ2luQXJyYXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7
Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+Piht
X2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0
UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2s8c3RkOjp1bmlxdWVfcHRyPEFycmF5Pj4oa2V5KTsK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBtX2FycmF5U3Rh
Y2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CiAgICAgbV9hcnJheUluZGV4U3RhY2suYXBwZW5kKDAp
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaAppbmRleCA1NmEyZjkzOGEwNTRiNDc3Y2FkZGRl
MDM3OTcxZTUzMTJmNGUyZGNiLi45MWY1ZTM2ZTM3OTNiNjljNmViYjgwOGRhODIzOTVkNDMwYjhj
ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVj
b2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RGVjb2RlckdlbmVyaWMuaApAQCAtNTUsNiArNTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVu
ZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5kQXJyYXkoKSBvdmVycmlkZTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY29uc3QgVCogZ2V0UG9pbnRlckZyb21E
aWN0aW9uYXJ5U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBib29sIGdldFZhbHVlRnJvbURpY3Rpb25hcnlTdGFjayhjb25zdCBTdHJpbmcm
IGtleSwgVCYgcmVzdWx0KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5PiBtX3Jv
b3REaWN0aW9uYXJ5OwogICAgIFZlY3RvcjxEaWN0aW9uYXJ5KiwgMTY+IG1fZGljdGlvbmFyeVN0
YWNrOwogICAgIFZlY3RvcjxBcnJheSosIDE2PiBtX2FycmF5U3RhY2s7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2EyNTJmNmVlZTRmZGY2NGUw
NDE3YmExNDM1NjlkNmE0ZGE2ZDUxYy4uOGUwMjkyM2NhOTMxNTNlOWU1NzE4NmE3YTEwOWRhZDYz
NGFkYzkzMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAxLTA3ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGku
S29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVjb2RlckdlbmVyaWMgY3JhY2hlcyB3
aGVuIGl0IGFjZXNzZXMgZGF0YSB3aXRoIG5vbi1leGlzdGluZyBrZXkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1XaW4uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVk
Q29kaW5nR2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tE
ZWNvZGVkQnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ0dlbmVyaWNUZXN0T2JqZWN0OjplbmNvZGUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6S2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZGVjb2Rl
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OktleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3Q6
OktleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
S2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Om9wZXJhdG9yPT0pOgorCiAyMDIwLTAxLTA3ICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBMaW1pdCBwcmUtZXhpc3Rpbmcg
SlNDIHRlc3RzIGZhaWx1cmVzIHRvIGRpc3BsYXkgaW4gYnVpbGRib3Qgc3VtbWFyeQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMzQ5MzM0ODI2ZmEzNGRiMjhhZTJkODI2
MGZjNWFlNGQ1MjRkYzBlZi4uODgxNWM1MDQ2NGM2OWMxMTdlOGQzMGI1NjkwZjIxZTc5OTNjNjVi
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCkBAIC02Miw5ICs2Miw4IEBA
IGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgICkKICAgICBsaXN0KEFQUEVORCBU
ZXN0V2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0LmNw
cAotCisgICAgICAgIFRlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNwcAogICAgICAg
ICBUZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKLQogICAgICAgICBUZXN0cy9XZWJDb3Jl
L3dpbi9CaXRtYXBJbWFnZS5jcHAKICAgICApCiBlbHNlICgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZ0dlbmVyaWMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2ZDljNTFmMGJlMzUzNjNhZTQyYjRjMTRiNzk3NzU4ZTIzNjRlZGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdH
ZW5lcmljLmNwcApAQCAtMCwwICsxLDQzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRp
YyBib29sIGNoZWNrRGVjb2RlZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIG9yaWdpbmFsLCBzaXplX3Qg
b3JpZ2luYWxTaXplLCBjb25zdCB1aW50OF90KiBkZWNvZGVkLCBzaXplX3QgZGVjb2RlZFNpemUp
Cit7CisgICAgaWYgKG9yaWdpbmFsU2l6ZSAhPSBkZWNvZGVkU2l6ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcmlnaW5hbFNpemU7IGkrKykgewor
ICAgICAgICBpZiAob3JpZ2luYWxbaV0gIT0gZGVjb2RlZFtpXSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVChLZXllZENvZGlu
Z0dlbmVyaWMsIFNldEFuZEdldEJ5dGVzKQoreworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YVtdID0g
eyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweGRlLCAweGFkLCAweGJlLCAweGVmIH07CisgICAg
Y29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBzaXplb2YoZGF0YSkgLyBzaXplb2YodWludDhfdCk7
CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGhPbmUgPSAxOworICAgIGNvbnN0IHNpemVfdCBk
YXRhTGVuZ3RoWmVybyA9IDA7CisKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YSIsIGRhdGEs
IGRhdGFMZW5ndGgpOworICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKCJkYXRhLXNpemUwIiwgZGF0
YSwgZGF0YUxlbmd0aFplcm8pOworICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKCJkYXRhLXNpemUx
IiwgZGF0YSwgZGF0YUxlbmd0aE9uZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rl
ci0+ZmluaXNoRW5jb2RpbmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVk
QnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCByZXN1
bHQ7CisgICAgY29uc3QgdWludDhfdCogYnVmZmVyOworICAgIHNpemVfdCBzaXplOworCisgICAg
cmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEiLCBidWZmZXIsIHNpemUpOworICAg
IEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgsIHNpemUpOwor
ICAgIEVYUEVDVF9UUlVFKGNoZWNrRGVjb2RlZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgsIGJ1ZmZl
ciwgc2l6ZSkpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEtc2l6
ZTAiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNU
X0VRKGRhdGFMZW5ndGhaZXJvLCBzaXplKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29k
ZUJ5dGVzKCJkYXRhLXNpemUxIiwgYnVmZmVyLCBzaXplKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1
bHQpOworICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoT25lLCBzaXplKTsKKyAgICBFWFBFQ1RfVFJV
RShjaGVja0RlY29kZWRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoT25lLCBidWZmZXIsIHNpemUpKTsK
K30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldEJvb2wpCit7CisgICAgYXV0
byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlQm9vbCgiYm9vbC10cnVlIiwgdHJ1ZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQm9v
bCgiYm9vbC1mYWxzZSIsIGZhbHNlKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29k
ZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRC
dWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBib29sIHJlc3Vs
dCwgdmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQm9vbCgiYm9vbC10cnVlIiwg
dmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKHRydWUsIHZh
bHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUJvb2woImJvb2wtZmFsc2UiLCB2
YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoZmFsc2UsIHZh
bHVlKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldEludDMyKQorewor
ICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAg
IGVuY29kZXItPmVuY29kZUludDMyKCJ6ZXJvIiwgMCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlSW50
MzIoIm1pbnVzLW9uZSIsIC0xKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMigicGx1cy1vbmUi
LCAxKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMigiaW50MzItbWluIiwgSU5UMzJfTUlOKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMigiaW50MzItbWF4IiwgSU5UMzJfTUFYKTsKKworICAg
IGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgYXV0
byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXIt
PnNpemUoKSk7CisKKyAgICBib29sIHJlc3VsdDsKKyAgICBpbnQzMl90IHZhbHVlOworICAgIHJl
c3VsdCA9IGRlY29kZXItPmRlY29kZUludDMyKCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRl
Y29kZXItPmRlY29kZUludDMyKCJtaW51cy1vbmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
cmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoLTEsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29k
ZXItPmRlY29kZUludDMyKCJwbHVzLW9uZSIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1
bHQpOworICAgIEVYUEVDVF9FUSgxLCB2YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5k
ZWNvZGVJbnQzMigiaW50MzItbWluIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7
CisgICAgRVhQRUNUX0VRKElOVDMyX01JTiwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rl
ci0+ZGVjb2RlSW50MzIoImludDMyLW1heCIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1
bHQpOworICAgIEVYUEVDVF9FUShJTlQzMl9NQVgsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENv
ZGluZ0dlbmVyaWMsIFNldEFuZEdldFVJbnQzMikKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIo
Inplcm8iLCAwKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoInBsdXMtb25lIiwgMSk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKCJ1aW50MzItbWF4IiwgVUlOVDMyX01BWCk7CisKKyAg
ICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworICAgIGF1
dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVy
LT5zaXplKCkpOworCisgICAgYm9vbCByZXN1bHQ7CisgICAgdWludDMyX3QgdmFsdWU7CisgICAg
cmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlVUludDMyKCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVD
VF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9
IGRlY29kZXItPmRlY29kZVVJbnQzMigicGx1cy1vbmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoMSwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlVUludDMyKCJ1aW50MzItbWF4IiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVF
KHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKFVJTlQzMl9NQVgsIHZhbHVlKTsKK30KKworVEVTVChL
ZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldEludDY0KQoreworICAgIGF1dG8gZW5jb2RlciA9
IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUlu
dDY0KCJ6ZXJvIiwgMCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlSW50NjQoIm1pbnVzLXR3byIsIC0y
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGVJbnQ2NCgicGx1cy10d28iLCAyKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVJbnQ2NCgiaW50NjQtbWluIiwgSU5UNjRfTUlOKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGVJbnQ2NCgiaW50NjQtbWF4IiwgSU5UNjRfTUFYKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZl
ciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGVuY29kZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBi
b29sIHJlc3VsdDsKKyAgICBpbnQ2NF90IHZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRl
Y29kZUludDY0KCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAg
RVhQRUNUX0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDY0
KCJtaW51cy10d28iLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBF
Q1RfRVEoLTIsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUludDY0KCJw
bHVzLXR3byIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9F
USgyLCB2YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVJbnQ2NCgiaW50NjQt
bWluIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKElO
VDY0X01JTiwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlSW50NjQoImlu
dDY0LW1heCIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9F
UShJTlQ2NF9NQVgsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFu
ZEdldFVJbnQ2NCkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6
OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQoInplcm8iLCAwKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGVVSW50NjQoInBsdXMtb25lIiwgMSk7CisgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDY0KCJ1aW50NjQtbWF4IiwgVUlOVDY0X01BWCk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZm
ZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNv
cmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAg
Ym9vbCByZXN1bHQ7CisgICAgdWludDY0X3QgdmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlVUludDY0KCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7Cisg
ICAgRVhQRUNUX0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZVVJ
bnQ2NCgicGx1cy1vbmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBF
WFBFQ1RfRVEoMSwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlVUludDY0
KCJ1aW50NjQtbWF4IiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQ
RUNUX0VRKFVJTlQ2NF9NQVgsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMs
IFNldEFuZEdldEZsb2F0KQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUZsb2F0KCJ6ZXJvIiwgMCk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlRmxvYXQoIm1pbnVzLW9uZS1wb2ludC1maXZlIiwgLTEuNSk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlRmxvYXQoIm9uZS1wb2ludC1maXZlIiwgMS41KTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGVGbG9hdCgiZmxvYXQtbWluIiwgRkxUX01JTik7CisgICAgZW5jb2Rlci0+ZW5j
b2RlRmxvYXQoImZsb2F0LW1heCIsIEZMVF9NQVgpOworCisgICAgYXV0byBlbmNvZGVkQnVmZmVy
ID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJv
b2wgcmVzdWx0OworICAgIGZsb2F0IHZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29k
ZUZsb2F0KCJ6ZXJvIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQ
RUNUX0VRKDAsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUZsb2F0KCJt
aW51cy1vbmUtcG9pbnQtZml2ZSIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOwor
ICAgIEVYUEVDVF9FUSgtMS41LCB2YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNv
ZGVGbG9hdCgib25lLXBvaW50LWZpdmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0
KTsKKyAgICBFWFBFQ1RfRVEoMS41LCB2YWx1ZSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5k
ZWNvZGVGbG9hdCgiZmxvYXQtbWluIiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7
CisgICAgRVhQRUNUX0VRKEZMVF9NSU4sIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXIt
PmRlY29kZUZsb2F0KCJmbG9hdC1tYXgiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0
KTsKKyAgICBFWFBFQ1RfRVEoRkxUX01BWCwgdmFsdWUpOworfQorCitURVNUKEtleWVkQ29kaW5n
R2VuZXJpYywgU2V0QW5kR2V0RG91YmxlKQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgiemVy
byIsIDApOworICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgibWludXMtb25lLXBvaW50LXR3by1m
aXZlIiwgLTEuMjUpOworICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgib25lLXBvaW50LXR3by1m
aXZlIiwgMS4yNSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKCJkb3VibGUtbWluIiwgREJM
X01JTik7CisgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKCJkb3VibGUtbWF4IiwgREJMX01BWCk7
CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOwor
ICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVk
QnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCByZXN1bHQ7CisgICAgZG91YmxlIHZhbHVlOwor
ICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZURvdWJsZSgiemVybyIsIHZhbHVlKTsKKyAgICBF
WFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgwLCB2YWx1ZSk7CisKKyAgICByZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVEb3VibGUoIm1pbnVzLW9uZS1wb2ludC10d28tZml2ZSIsIHZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgtMS4yNSwgdmFs
dWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJvbmUtcG9pbnQtdHdv
LWZpdmUiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEo
MS4yNSwgdmFsdWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJkb3Vi
bGUtbWF4IiwgdmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VR
KERCTF9NQVgsIHZhbHVlKTsKKworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZURvdWJsZSgi
ZG91YmxlLW1pbiIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVD
VF9FUShEQkxfTUlOLCB2YWx1ZSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmdHZW5lcmljLCBTZXRB
bmRHZXRTdHJpbmcpCit7CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
OjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJzdHJpbmctbGVuZ3RoLXpl
cm8iLCAiIik7CisgICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKCJzdHJpbmctd2Via2l0IiwgIldl
YktpdCIpOworCisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2Rp
bmcoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwg
ZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJvb2wgcmVzdWx0OworICAgIFN0cmluZyB2
YWx1ZTsKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVTdHJpbmcoInN0cmluZy1sZW5ndGgt
emVybyIsIHZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSgw
LCB2YWx1ZS5sZW5ndGgoKSk7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVTdHJpbmco
InN0cmluZy13ZWJraXQiLCB2YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBF
WFBFQ1RfRVEoIldlYktpdCIsIHZhbHVlKTsKK30KKworVEVTVChLZXllZENvZGluZ0dlbmVyaWMs
IEdldE5vbkV4aXN0aW5nUmVjb3JkKQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUJvb2woImJvb2wtdHJ1
ZSIsIHRydWUpOworCisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5j
b2RpbmcoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgp
KSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJvb2wgcmVzdWx0LCBib29sVmFsdWU7
CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQm9vbCgiYm9vbC10cnVlIiwgYm9vbFZhbHVl
KTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHQpOworICAgIEVYUEVDVF9FUSh0cnVlLCBib29sVmFs
dWUpOworCisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQm9vbCgibm8tZXhpc3Qta2V5Iiwg
Ym9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAgIGludDMyX3QgaW50
MzJWYWx1ZTsKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVJbnQzMigibm8tZXhpc3Qta2V5
IiwgaW50MzJWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICB1aW50MzJf
dCB1aW50MzJWYWx1ZTsKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVVSW50MzIoIm5vLWV4
aXN0LWtleSIsIHVpbnQzMlZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0KTsKKworICAg
IGludDY0X3QgaW50NjRWYWx1ZTsKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVJbnQ2NCgi
bm8tZXhpc3Qta2V5IiwgaW50NjRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CisK
KyAgICB1aW50NjRfdCB1aW50NjRWYWx1ZTsKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVV
SW50NjQoIm5vLWV4aXN0LWtleSIsIHVpbnQ2NFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVz
dWx0KTsKKworICAgIGZsb2F0IGZsb2F0VmFsdWU7CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVj
b2RlRmxvYXQoIm5vLWV4aXN0LWtleSIsIGZsb2F0VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShy
ZXN1bHQpOworCisgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIHJlc3VsdCA9IGRlY29kZXIt
PmRlY29kZURvdWJsZSgibm8tZXhpc3Qta2V5IiwgZG91YmxlVmFsdWUpOworICAgIEVYUEVDVF9G
QUxTRShyZXN1bHQpOworCisgICAgY29uc3QgdWludDhfdCogYnVmZmVyOworICAgIHNpemVfdCBz
aXplOworICAgIHJlc3VsdCA9IGRlY29kZXItPmRlY29kZUJ5dGVzKCJuby1leGlzdC1rZXkiLCBi
dWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOworfQorCitzdHJ1Y3QgS2V5
ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdCB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKFdlYkNv
cmU6OktleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9i
amVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoIm5hbWUi
LCBvYmplY3QubV9uYW1lKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVJbnQzMigiYWdlIiwgb2Jq
ZWN0Lm1fYWdlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoV2ViQ29yZTo6S2V5
ZWREZWNvZGVyJiBkZWNvZGVyLCBLZXllZENvZGluZ0dlbmVyaWNUZXN0T2JqZWN0JiBvYmplY3Qp
CisgICAgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJuYW1lIiwgb2JqZWN0
Lm1fbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVJbnQzMigiYWdlIiwgb2JqZWN0Lm1fYWdlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgS2V5ZWRDb2RpbmdHZW5l
cmljVGVzdE9iamVjdCgpIHsgfTsKKyAgICBLZXllZENvZGluZ0dlbmVyaWNUZXN0T2JqZWN0KFN0
cmluZyBuYW1lLCBpbnQgYWdlKQorICAgICAgICA6IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1f
YWdlKGFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgS2V5ZWRDb2Rp
bmdHZW5lcmljVGVzdE9iamVjdCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
KG1fbmFtZSA9PSBvdGhlci5tX25hbWUpICYmIChtX25hbWUgPT0gb3RoZXIubV9uYW1lKTsKKyAg
ICB9CisKKyAgICBTdHJpbmcgbV9uYW1lOworICAgIGludDMyX3QgbV9hZ2U7Cit9OworCitzdGF0
aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QmIGxP
YmplY3QsIGNvbnN0IEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QmIHJPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGxPYmplY3QuZXF1YWxzKHJPYmplY3QpOworfQorCitURVNUKEtleWVkQ29kaW5n
R2VuZXJpYywgU2V0QW5kR2V0T2JqZWN0KQoreworICAgIGNvbnN0IEtleWVkQ29kaW5nR2VuZXJp
Y1Rlc3RPYmplY3QgdXNlcjAoIk5vYWgiLCAyOCk7CisgICAgY29uc3QgS2V5ZWRDb2RpbmdHZW5l
cmljVGVzdE9iamVjdCB1c2VyMSgiRW1tYSIsIDMxKTsKKworICAgIGF1dG8gZW5jb2RlciA9IFdl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZU9iamVj
dCgidXNlcjAiLCB1c2VyMCwgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZW5jb2RlKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3QoInVzZXIxIiwgdXNlcjEsIEtleWVkQ29kaW5nR2Vu
ZXJpY1Rlc3RPYmplY3Q6OmVuY29kZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rl
ci0+ZmluaXNoRW5jb2RpbmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVk
QnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworICAgIGJvb2wgcmVzdWx0
OworICAgIEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3QgZGVjb2RlZFVzZXIwLCBkZWNvZGVk
VXNlcjE7CisKKyAgICByZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVPYmplY3QoInVzZXIwIiwgZGVj
b2RlZFVzZXIwLCBLZXllZENvZGluZ0dlbmVyaWNUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVY
UEVDVF9UUlVFKHJlc3VsdCk7CisgICAgRVhQRUNUX0VRKGRlY29kZWRVc2VyMCwgdXNlcjApOwor
CisgICAgcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0KCJ1c2VyMSIsIGRlY29kZWRVc2Vy
MSwgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVjdDo6ZGVjb2RlKTsKKyAgICBFWFBFQ1RfVFJV
RShyZXN1bHQpOworICAgIEVYUEVDVF9FUShkZWNvZGVkVXNlcjEsIHVzZXIxKTsKK30KKworVEVT
VChLZXllZENvZGluZ0dlbmVyaWMsIFNldEFuZEdldE9iamVjdHMpCit7CisgICAgVmVjdG9yPEtl
eWVkQ29kaW5nR2VuZXJpY1Rlc3RPYmplY3Q+IHVzZXJzOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMTA7IGkrKykKKyAgICAgICAgdXNlcnMuYXBwZW5kKEtleWVkQ29kaW5nR2VuZXJpY1Rlc3RP
YmplY3QoInVzZXJuYW1lIiwgaSkpOworCisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygidXNlcnMi
LCB1c2Vycy5iZWdpbigpLCB1c2Vycy5lbmQoKSwgS2V5ZWRDb2RpbmdHZW5lcmljVGVzdE9iamVj
dDo6ZW5jb2RlKTsKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNv
ZGluZygpOworCisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRCdWZmZXItPmRhdGEo
KSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisgICAgVmVjdG9yPEtleWVkQ29kaW5nR2VuZXJp
Y1Rlc3RPYmplY3Q+IGRlY29kZWRVc2VyczsKKworICAgIGJvb2wgcmVzdWx0ID0gZGVjb2Rlci0+
ZGVjb2RlT2JqZWN0cygidXNlcnMiLCBkZWNvZGVkVXNlcnMsIEtleWVkQ29kaW5nR2VuZXJpY1Rl
c3RPYmplY3Q6OmRlY29kZSk7CisgICAgRVhQRUNUX1RSVUUocmVzdWx0KTsKKyAgICBFWFBFQ1Rf
RVEodXNlcnMuc2l6ZSgpLCBkZWNvZGVkVXNlcnMuc2l6ZSgpKTsKK30KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387603</attachid>
            <date>2020-01-13 18:33:01 -0800</date>
            <delta_ts>2020-01-13 22:38:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205902-20200114112945.patch</filename>
            <type>text/plain</type>
            <size>29571</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1MWQ3NGM4ZGRhNmM2
ODdjMjY2MzdmMDM0ZTAyMzhhYjQyZDMwMS4uMDVjOGVhNTg4ZDM2ZTFhZGI3MTYyYTllOTM2YmNl
ZjI0Y2YxNmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAxLTEzICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVj
b2RlckdlbmVyaWMgY3Jhc2hlcyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rp
bmcga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbnVsbCBjaGVjayBmdW5jdGlvbiBmb3IgS2V5ZWREZWNvZGVyR2VuZXJpYy4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNw
cAorCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURp
Y3Rpb25hcnlTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVTaW1wbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmlj
OjpkZWNvZGVCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVCb29sKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZVVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVV
SW50NjQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50NjQp
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRG91YmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaDoKKwogMjAyMC0wMS0xMCAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIFRhYmxlRm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQ2VsbEJveCBzaG91bGQgdGFrZSBIb3Jpem9udGFsQ29u
c3RyYWludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IDBlNTk3MjMyMWI1ZjczZjU3MmJkNzk2NTg4MTFm
MDAzYTk1ZWQ0OTIuLmJjNTdjYjdlN2I5MDZkNmM4NGVmY2EwOTc3NWQwN2FkY2RjZjNjMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29k
ZXJHZW5lcmljLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7
IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkp
OyB9Ci0gICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0
KGtleSk7IH0KKyAgICBOb2RlKiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIG1fbWFw
LmdldChrZXkpOyB9CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxOb2RlPj4gbV9tYXA7CkBAIC0xODEsMTEgKzE4MSwzNSBAQCBLZXllZERlY29kZXJHZW5l
cmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQogICAgICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0UG9pbnRlckZyb21EaWN0
aW9uYXJ5U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0byYgZGljdGlvbmFyeSA9
IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKKworICAgIGF1dG8gbm9kZSA9IGRpY3Rpb25hcnkt
PmdldChrZXkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gV1RGOjpnZXRfaWY8VD4oKm5vZGUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTaW1wbGVWYWx1ZShjb25zdCBTdHJp
bmcmIGtleSwgVCYgcmVzdWx0KQoreworICAgIGF1dG8gdmFsdWUgPSBnZXRQb2ludGVyRnJvbURp
Y3Rpb25hcnlTdGFjazxUPihrZXkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6ZSkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdU
Rjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQo
a2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPFZl
Y3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBkYXRhID0gdmFsdWUtPmRhdGEoKTsKICAgICBzaXplID0gdmFsdWUtPnNpemUo
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Myw4MSArMjE3LDUwIEBAIGJvb2wgS2V5ZWREZWNv
ZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3Qq
JiBkYXRhLCBzCiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQm9vbChjb25zdCBT
dHJpbmcmIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRf
aWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwog
fQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVVJbnQzMihjb25zdCBTdHJpbmcm
IGtleSwgdWludDMyX3QmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lm
PHVpbnQzMl90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAo
IXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7
CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDY0KGNvbnN0IFN0cmlu
ZyYga2V5LCB1aW50NjRfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRf
aWY8dWludDY0X3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0
KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQzMihjb25zdCBTdHJp
bmcmIGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRf
aWY8aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQp
OwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDY0KGNvbnN0IFN0cmlu
ZyYga2V5LCBpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
ZjxpbnQ2NF90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAo
IXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7
CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxvYXQoY29uc3QgU3RyaW5n
JiBrZXksIGZsb2F0JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxm
bG9hdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwogfQog
CiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtl
eSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxkb3Vi
bGU+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFsdWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXks
IFN0cmluZyYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8U3RyaW5n
PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZhbHVlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJv
b2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkpCiB7
Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFy
eT4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGF1dG8gdmFsdWUg
PSBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFy
eT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
bV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yNzksOSArMjcyLDEwIEBAIHZvaWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5kT2Jq
ZWN0KCkKIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KGNvbnN0IFN0cmlu
ZyYga2V5KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8c3RkOjp1bmlxdWVfcHRy
PEFycmF5Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0byB2
YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
bV9hcnJheVN0YWNrLmFwcGVuZCh2YWx1ZS0+Z2V0KCkpOwogICAgIG1fYXJyYXlJbmRleFN0YWNr
LmFwcGVuZCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKaW5kZXggNTZhMmY5MzhhMDU0
YjQ3N2NhZGRkZTAzNzk3MWU1MzEyZjRlMmRjYi4uMTlhMjk5YmRkOTIyOTlkMjI0MDk4YWI0NDhj
ZjJlMzVjOTYwM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZERlY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKQEAgLTU1LDYgKzU1LDEyIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFycmF5KCkg
b3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGNvbnN0IFQqIGdldFBv
aW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKGNvbnN0IFN0cmluZyYga2V5KTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBkZWNvZGVTaW1wbGVWYWx1ZShjb25zdCBTdHJpbmcm
IGtleSwgVCYgcmVzdWx0KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5PiBtX3Jv
b3REaWN0aW9uYXJ5OwogICAgIFZlY3RvcjxEaWN0aW9uYXJ5KiwgMTY+IG1fZGljdGlvbmFyeVN0
YWNrOwogICAgIFZlY3RvcjxBcnJheSosIDE2PiBtX2FycmF5U3RhY2s7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTUyNjQyNmRkNjIyODAzNjk3
NzNhODA1YWM3NGJjZjQwMmRmMDE3Ny4uNTc4ODg2Y2FhYTllN2U0NjdlZTQ2YzYzZDk1ZGUwNzNm
Y2FiY2QxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAxLTEzICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGku
S29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVjb2RlckdlbmVyaWMgY3Jhc2hlcyB3
aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rpbmcga2V5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrRGVjb2RlZEJ5dGVzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFNpbXBs
ZVZhbHVlRGVjb2RlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RTaW1wbGVWYWx1ZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29kZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29kZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OktleWVkQ29k
aW5nVGVzdE9iamVjdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RP
YmplY3Q6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcGVyYXRvcj09
KToKKwogMjAyMC0wMS0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE4NTgxNik6IEluIHRoZSBIb25nIEtvbmcgbG9jYWxl
LCBuYXZpZ2F0b3IubGFuZ3VhZ2UgcmVwb3J0cyBpdCdzIGluIHRoZSBUYWl3YW4gbG9jYWxlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdjNzNkODdlMzcwOWI0ODA1OTBjZDUy
NTZmMTJmZDA4OWYzMDNhLi45N2RhMDYwYmFkZWQ1OGZhY2FhY2M4Yzc3Nzc1MGE1YzAyYWVjYTM2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTEzOCw2ICsxMzgsNyBAQCBpZiAo
RU5BQkxFX1dFQkNPUkUpCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3BwCiAgICAg
ICAgIFRlc3RzL1dlYkNvcmUvSW50UmVjdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRT
aXplLmNwcAorICAgICAgICBUZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcAogICAgICAgICBU
ZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvTUlNRVR5
cGVSZWdpc3RyeS5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2Uu
Y3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzNDkzMzQ4MjZmYTM0
ZGIyOGFlMmQ4MjYwZmM1YWU0ZDUyNGRjMGVmLi41YzQwNzU0NTg0ODE0NmY0ZDQ1NzBlNTVhMWU4
NTg2MzY5OGM4ZTVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2lu
LmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTYy
LDkgKzYyLDcgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgKQogICAgIGxp
c3QoQVBQRU5EIFRlc3RXZWJDb3JlX1NPVVJDRVMKICAgICAgICAgVGVzdHMvV2ViQ29yZS9Dcnlw
dG9EaWdlc3QuY3BwCi0KICAgICAgICAgVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCi0K
ICAgICAgICAgVGVzdHMvV2ViQ29yZS93aW4vQml0bWFwSW1hZ2UuY3BwCiAgICAgKQogZWxzZSAo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29k
aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2RhOWI1OWYxZDgyZGI3MzU1YmYzNTRmMWMwY2YxNzQzMDlmNTFjYQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXll
ZENvZGluZy5jcHAKQEAgLTAsMCArMSwzNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0
aWMgYm9vbCBjaGVja0RlY29kZWRCeXRlcyhjb25zdCB1aW50OF90KiBvcmlnaW5hbCwgc2l6ZV90
IG9yaWdpbmFsU2l6ZSwgY29uc3QgdWludDhfdCogZGVjb2RlZCwgc2l6ZV90IGRlY29kZWRTaXpl
KQoreworICAgIGlmIChvcmlnaW5hbFNpemUgIT0gZGVjb2RlZFNpemUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChzdGQ6Om1lbWNtcChvcmlnaW5hbCwgZGVjb2RlZCwgb3JpZ2lu
YWxTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEJ5dGVzKQoreworICAgIGNvbnN0IHVpbnQ4X3Qg
ZGF0YVtdID0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweGRlLCAweGFkLCAweGJlLCAweGVm
IH07CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGRhdGEp
OworICAgIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoT25lID0gMTsKKyAgICBjb25zdCBzaXplX3Qg
ZGF0YUxlbmd0aFplcm8gPSAwOworCisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoImRhdGEiLCBkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YS1zaXplMCIsIGRh
dGEsIGRhdGFMZW5ndGhaZXJvKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YS1zaXpl
MSIsIGRhdGEsIGRhdGFMZW5ndGhPbmUpOworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29k
ZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2Rl
ZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJvb2wgc3Vj
Y2VzczsKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXI7CisgICAgc2l6ZV90IHNpemU7CisKKyAg
ICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEiLCBidWZmZXIsIHNpemUpOwor
ICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXpl
KTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja0RlY29kZWRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoLCBi
dWZmZXIsIHNpemUpKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVCeXRlcygiZGF0
YS1zaXplMCIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAg
RVhQRUNUX0VRKGRhdGFMZW5ndGhaZXJvLCBzaXplKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVy
LT5kZWNvZGVCeXRlcygiZGF0YS1zaXplMSIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGhPbmUsIHNpemUpOworICAgIEVY
UEVDVF9UUlVFKGNoZWNrRGVjb2RlZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGhPbmUsIGJ1ZmZlciwg
c2l6ZSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RlVmFsdWVUeXBlLCB0eXBlbmFt
ZSBEZWNvZGVWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxF
bmNvZGVWYWx1ZVR5cGUsIERlY29kZVZhbHVlVHlwZT46OnZhbHVlLCBib29sPjo6dHlwZSB0ZXN0
U2ltcGxlVmFsdWVEZWNvZGUoYm9vbCBkZWNvZGVTdWNjZXNzLCBFbmNvZGVWYWx1ZVR5cGUgZXhw
ZWN0ZWQsIERlY29kZVZhbHVlVHlwZSBkZWNvZGVkKQoreworICAgIHJldHVybiBkZWNvZGVTdWNj
ZXNzICYmIChleHBlY3RlZCA9PSBkZWNvZGVkKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVu
Y29kZVZhbHVlVHlwZSwgdHlwZW5hbWUgRGVjb2RlVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhc3RkOjppc19zYW1lPEVuY29kZVZhbHVlVHlwZSwgRGVjb2RlVmFsdWVUeXBlPjo6
dmFsdWUsIGJvb2w+Ojp0eXBlIHRlc3RTaW1wbGVWYWx1ZURlY29kZShib29sIGRlY29kZVN1Y2Nl
c3MsIEVuY29kZVZhbHVlVHlwZSBleHBlY3RlZCwgRGVjb2RlVmFsdWVUeXBlIGRlY29kZWQpCit7
CisgICAgcmV0dXJuIGRlY29kZVN1Y2Nlc3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNv
ZGVGdW5jdGlvblR5cGUsIHR5cGVuYW1lIERlY29kZVZhbHVlVHlwZSwgdHlwZW5hbWUgRW5jb2Rl
VmFsdWVUeXBlPgorYm9vbCB0ZXN0U2ltcGxlVmFsdWUoRW5jb2RlRnVuY3Rpb25UeXBlIGVuY29k
ZSwgYm9vbCAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjoqIGRlY29kZSkoY29uc3QgU3RyaW5nJiwg
RGVjb2RlVmFsdWVUeXBlJiksIEVuY29kZVZhbHVlVHlwZSB2YWx1ZSkKK3sKKyAgICBhdXRvIGVu
Y29kZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICAoZW5jb2Rlci5n
ZXQoKS0+KmVuY29kZSkoImtleSIsIHZhbHVlKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9
IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVu
Y29kZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBEZWNv
ZGVWYWx1ZVR5cGUgZGVjb2RlZFZhbHVlOworICAgIGJvb2wgZGVjb2RlU3VjY2VzcyA9IChkZWNv
ZGVyLmdldCgpLT4qZGVjb2RlKSgia2V5IiwgZGVjb2RlZFZhbHVlKTsKKworICAgIHJldHVybiB0
ZXN0U2ltcGxlVmFsdWVEZWNvZGUoZGVjb2RlU3VjY2VzcywgdmFsdWUsIGRlY29kZWRWYWx1ZSk7
Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEJvb2wpCit7CisgICAgRVhQRUNUX1RS
VUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2wsICZX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIHRydWUpKTsKKyAgICBFWFBFQ1RfVFJV
RSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldl
YkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgZmFsc2UpKTsKKworICAgIEVYUEVDVF9G
QUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50MzIsIHRydWUpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2ws
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgdHJ1ZSkpOworICAgIEVYUEVD
VF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9v
bCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIHRydWUpKTsKKyAgICBFWFBF
Q1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJv
b2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdHJ1ZSkpOworICAgIEVY
UEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
Qm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHRydWUpKTsKKyAgICBF
WFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29k
ZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwgdHJ1ZSkpOworICAg
IEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCB0cnVlKSk7Cit9
CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEludDMyKQoreworICAgIEVYUEVDVF9UUlVF
KHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldl
YkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50MzIsIDApKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCAxKSk7CisgICAgRVhQRUNUX1RSVUUodGVz
dFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwgLTEpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0
U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCBJTlRfTUlOKSk7CisgICAgRVhQRUNUX1RSVUUo
dGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwgSU5UX01BWCkpOworCisgICAgRVhQRUNU
X0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQz
MiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgMCkpOworICAgIEVYUEVDVF9G
QUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIs
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgMCkpOworICAgIEVYUEVDVF9G
QUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIs
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCAwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCAwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIDApKTsKKyAgICBFWFBFQ1RfRkFM
U0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAm
V2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIDApKTsKKyAgICBFWFBFQ1RfRkFM
U0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAm
V2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIDApKTsKK30KKworVEVTVChLZXll
ZENvZGluZywgU2V0QW5kR2V0VUludDMyKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQzMiwgdWludDMyX3QoMCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50MzIsIHVpbnQzMl90KDEpKSk7CisgICAgRVhQ
RUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJ
bnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDMyLCBVSU5UMzJfTUFYKSk7
CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgdWlu
dDMyX3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
SW50MzIsIHVpbnQzMl90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZUludDY0LCB1aW50MzJfdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2lt
cGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAmV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIHVpbnQzMl90KDApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIs
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCB1aW50MzJfdCgwKSkpOworICAg
IEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlVUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIHVpbnQzMl90
KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVN0cmlu
ZywgdWludDMyX3QoMCkpKTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0SW50NjQp
Cit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgaW50
NjRfdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50
NjQsIGludDY0X3QoLTIpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVJbnQ2NCwgaW50NjRfdCgyKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlSW50NjQsIElOVDY0X01JTikpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1w
bGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6Oktl
eWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIElOVDY0X01BWCkpOworCisgICAgRVhQRUNUX0ZBTFNF
KHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldl
YkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgaW50NjRfdCgwKSkpOworICAgIEVYUEVD
VF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50
NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCBpbnQ2NF90KDApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDMyLCBpbnQ2NF90
KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0
LCBpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlRmxvYXQsIGludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNv
ZGVyOjpkZWNvZGVEb3VibGUsIGludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNp
bXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIGludDY0X3QoMCkpKTsKK30KKworVEVTVChLZXll
ZENvZGluZywgU2V0QW5kR2V0VUludDY0KQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdWludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDY0LCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIHVpbnQ2NF90KDEpKSk7CisgICAgRVhQ
RUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJ
bnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCBVSU5UNjRfTUFYKSk7
CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgdWlu
dDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
SW50MzIsIHVpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZVVJbnQzMiwgdWludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNp
bXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIHVpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQs
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCB1aW50NjRfdCgwKSkpOworICAg
IEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlVUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIHVpbnQ2NF90
KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVN0cmlu
ZywgdWludDY0X3QoMCkpKTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0RmxvYXQp
Cit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVGbG9hdCwgZmxv
YXQoMCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0
LCBmbG9hdCgxLjUpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVGbG9hdCwgZmxvYXQoLTEuNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUo
JldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bG93ZXN0KCkpKTsK
KyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkp
KTsKKworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIGZs
b2F0KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50
MzIsIGZsb2F0KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlVUludDMyLCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUo
JldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZUludDY0LCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgZmxvYXQoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVz
dFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGZsb2F0KDApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCBmbG9hdCgwKSkpOworfQorCitU
RVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXREb3VibGUpCit7CisgICAgRVhQRUNUX1RSVUUodGVz
dFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNv
cmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBkb3VibGUoMCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91Ymxl
LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGRvdWJsZSgxLjI1KSkpOwor
ICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwgZG91Ymxl
KC0xLjI1KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURv
dWJsZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSkpOworICAgIEVYUEVD
VF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3Vi
bGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwgc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZURvdWJsZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkpOwor
CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
OjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIGRvdWJs
ZSgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQz
MiwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZVVJbnQzMiwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERl
Y29kZXI6OmRlY29kZUludDY0LCBkb3VibGUoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNp
bXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCBkb3VibGUoMCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIGRvdWJsZSgwKSkpOworICAgIEVY
UEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
RG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIGRvdWJsZSgwKSkp
OworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRTdHJpbmcpCit7CisgICAgRVhQRUNU
X1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0cmlu
ZywgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCBTdHJpbmcoKSkpOworICAg
IEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNv
ZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVN0cmluZywgU3RyaW5nKCJX
ZWJLaXQiKSkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZUJvb2wsIFN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZUludDMyLCBTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFs
dWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVVSW50MzIsIFN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCBTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxT
RSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAm
V2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIFN0cmluZygpKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVT
dHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBTdHJpbmcoKSkpOwor
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIFN0cmlu
ZygpKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIEdldE5vbkV4aXN0aW5nUmVjb3JkKQorewor
ICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAg
IGVuY29kZXItPmVuY29kZUJvb2woImJvb2wtdHJ1ZSIsIHRydWUpOworCisgICAgYXV0byBlbmNv
ZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKyAgICBhdXRvIGRlY29kZXIg
PSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsK
KworICAgIGJvb2wgc3VjY2VzcywgYm9vbFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5k
ZWNvZGVCb29sKCJib29sLXRydWUiLCBib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nl
c3MpOworICAgIEVYUEVDVF9FUSh0cnVlLCBib29sVmFsdWUpOworCisgICAgc3VjY2VzcyA9IGRl
Y29kZXItPmRlY29kZUJvb2woIm5vLWV4aXN0LWtleSIsIGJvb2xWYWx1ZSk7CisgICAgRVhQRUNU
X0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgaW50MzJfdCBpbnQzMlZhbHVlOworICAgIHN1Y2Nlc3Mg
PSBkZWNvZGVyLT5kZWNvZGVJbnQzMigibm8tZXhpc3Qta2V5IiwgaW50MzJWYWx1ZSk7CisgICAg
RVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgdWludDMyX3QgdWludDMyVmFsdWU7CisgICAg
c3VjY2VzcyA9IGRlY29kZXItPmRlY29kZVVJbnQzMigibm8tZXhpc3Qta2V5IiwgdWludDMyVmFs
dWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGludDY0X3QgaW50NjRWYWx1
ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlSW50NjQoIm5vLWV4aXN0LWtleSIsIGlu
dDY0VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIHVpbnQ2NF90IHVp
bnQ2NFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVVSW50NjQoIm5vLWV4aXN0
LWtleSIsIHVpbnQ2NFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAgICBm
bG9hdCBmbG9hdFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVGbG9hdCgibm8t
ZXhpc3Qta2V5IiwgZmxvYXRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisg
ICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVEb3Vi
bGUoIm5vLWV4aXN0LWtleSIsIGRvdWJsZVZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vz
cyk7CisKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXI7CisgICAgc2l6ZV90IHNpemU7CisgICAg
c3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJ5dGVzKCJuby1leGlzdC1rZXkiLCBidWZmZXIsIHNp
emUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKK30KKworc3RydWN0IEtleWVkQ29kaW5n
VGVzdE9iamVjdCB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKFdlYkNvcmU6OktleWVkRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0JiBvYmplY3QpCisgICAgewor
ICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZygibmFtZSIsIG9iamVjdC5tX25hbWUpOworICAg
ICAgICBlbmNvZGVyLmVuY29kZUludDMyKCJhZ2UiLCBvYmplY3QubV9hZ2UpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGRlY29kZShXZWJDb3JlOjpLZXllZERlY29kZXImIGRlY29kZXIsIEtl
eWVkQ29kaW5nVGVzdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZVN0cmluZygibmFtZSIsIG9iamVjdC5tX25hbWUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlSW50MzIoImFnZSIsIG9iamVjdC5t
X2FnZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIEtleWVkQ29kaW5nVGVzdE9iamVjdCgpIHsgfTsKKyAgICBLZXllZENvZGlu
Z1Rlc3RPYmplY3QoU3RyaW5nIG5hbWUsIGludCBhZ2UpCisgICAgICAgIDogbV9uYW1lKG5hbWUp
CisgICAgICAgICwgbV9hZ2UoYWdlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGVxdWFscyhj
b25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIChtX25hbWUgPT0gb3RoZXIubV9uYW1lKSAmJiAobV9hZ2UgPT0gb3RoZXIubV9hZ2Up
OworICAgIH0KKworICAgIFN0cmluZyBtX25hbWU7CisgICAgaW50MzJfdCBtX2FnZTsKK307CisK
K3N0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0JiBsT2Jq
ZWN0LCBjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIHJPYmplY3QpCit7CisgICAgcmV0dXJu
IGxPYmplY3QuZXF1YWxzKHJPYmplY3QpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRH
ZXRPYmplY3QpCit7CisgICAgY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IHVzZXIwKCJOb2Fo
IiwgMjgpOworICAgIGNvbnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCB1c2VyMSgiRW1tYSIsIDMx
KTsKKworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcigp
OworICAgIGVuY29kZXItPmVuY29kZU9iamVjdCgidXNlcjAiLCB1c2VyMCwgS2V5ZWRDb2RpbmdU
ZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGVuY29kZXItPmVuY29kZU9iamVjdCgidXNlcjEiLCB1
c2VyMSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGF1dG8gZW5jb2RlZEJ1
ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRlY29kZXIgPSBX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBib29sIHN1Y2Nlc3M7CisgICAgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IGRlY29kZWRVc2VyMCwg
ZGVjb2RlZFVzZXIxOworCisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZU9iamVjdCgidXNl
cjAiLCBkZWNvZGVkVXNlcjAsIEtleWVkQ29kaW5nVGVzdE9iamVjdDo6ZGVjb2RlKTsKKyAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoZGVjb2RlZFVzZXIwLCB1c2VyMCk7
CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0KCJ1c2VyMSIsIGRlY29kZWRV
c2VyMSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkZWNvZGVkVXNlcjEsIHVzZXIxKTsKK30KKworVEVTVChL
ZXllZENvZGluZywgU2V0QW5kR2V0T2JqZWN0cykKK3sKKyAgICBWZWN0b3I8S2V5ZWRDb2RpbmdU
ZXN0T2JqZWN0PiB1c2VyczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCisgICAg
ICAgIHVzZXJzLmFwcGVuZChLZXllZENvZGluZ1Rlc3RPYmplY3QoInVzZXJuYW1lIiwgaSkpOwor
CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygidXNlcnMiLCB1c2Vycy5iZWdpbigpLCB1c2Vycy5l
bmQoKSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGF1dG8gZW5jb2RlZEJ1
ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRlY29kZXIgPSBX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBWZWN0b3I8S2V5ZWRDb2RpbmdUZXN0T2JqZWN0PiBkZWNvZGVkVXNlcnM7CisKKyAgICBib29s
IHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVPYmplY3RzKCJ1c2VycyIsIGRlY29kZWRVc2Vycywg
S2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3Mp
OworICAgIEVYUEVDVF9FUSh1c2VycywgZGVjb2RlZFVzZXJzKTsKK30KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387617</attachid>
            <date>2020-01-13 22:38:39 -0800</date>
            <delta_ts>2020-01-15 23:42:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205902-20200114153838.patch</filename>
            <type>text/plain</type>
            <size>32376</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1Y2QxZjI3OGY1YzRl
Y2YyNDBiOTVhNTBhYWEwMTgyNTU2YTcxMC4uZWUyYjI4YWJkNjUyMDAxMWI3ZGQwOTJjMzkyMDAw
Y2Y5ZjhjMjQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAxLTEzICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVj
b2RlckdlbmVyaWMgY3Jhc2hlcyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rp
bmcga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbnVsbCBjaGVjayBmdW5jdGlvbiBmb3IgS2V5ZWREZWNvZGVyR2VuZXJpYy4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNw
cAorCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURp
Y3Rpb25hcnlTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVTaW1wbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmlj
OjpkZWNvZGVCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVCb29sKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZVVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVV
SW50NjQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50NjQp
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRG91YmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaDoKKwogMjAyMC0wMS0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JvbGxiYXIg
aGlkaW5nIG9uIGlPUyB2aWEgOjotd2Via2l0LXNjcm9sbGJhciB7IGRpc3BsYXk6IG5vbmUgfSBk
b2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IDBlNTk3MjMyMWI1ZjczZjU3MmJkNzk2NTg4
MTFmMDAzYTk1ZWQ0OTIuLmJjNTdjYjdlN2I5MDZkNmM4NGVmY2EwOTc3NWQwN2FkY2RjZjNjMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVy
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVl
KSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVl
KSkpOyB9Ci0gICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAu
Z2V0KGtleSk7IH0KKyAgICBOb2RlKiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIG1f
bWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5p
cXVlX3B0cjxOb2RlPj4gbV9tYXA7CkBAIC0xODEsMTEgKzE4MSwzNSBAQCBLZXllZERlY29kZXJH
ZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQogICAgICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0UG9pbnRlckZyb21E
aWN0aW9uYXJ5U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0byYgZGljdGlvbmFy
eSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKKworICAgIGF1dG8gbm9kZSA9IGRpY3Rpb25h
cnktPmdldChrZXkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gV1RGOjpnZXRfaWY8VD4oKm5vZGUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTaW1wbGVWYWx1ZShjb25zdCBT
dHJpbmcmIGtleSwgVCYgcmVzdWx0KQoreworICAgIGF1dG8gdmFsdWUgPSBnZXRQb2ludGVyRnJv
bURpY3Rpb25hcnlTdGFjazxUPihrZXkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
Ym9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6ZSkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9
IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5n
ZXQoa2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNr
PFZlY3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBkYXRhID0gdmFsdWUtPmRhdGEoKTsKICAgICBzaXplID0gdmFsdWUtPnNp
emUoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Myw4MSArMjE3LDUwIEBAIGJvb2wgS2V5ZWRE
ZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4
X3QqJiBkYXRhLCBzCiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQm9vbChjb25z
dCBTdHJpbmcmIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpn
ZXRfaWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQp
OwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVVJbnQzMihjb25zdCBTdHJp
bmcmIGtleSwgdWludDMyX3QmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0
X2lmPHVpbnQzMl90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBp
ZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDY0KGNvbnN0IFN0
cmluZyYga2V5LCB1aW50NjRfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpn
ZXRfaWY8dWludDY0X3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAg
IGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVz
dWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQzMihjb25zdCBT
dHJpbmcmIGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpn
ZXRfaWY8aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAg
aWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1
bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDY0KGNvbnN0IFN0
cmluZyYga2V5LCBpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6Omdl
dF9pZjxpbnQ2NF90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBp
ZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxvYXQoY29uc3QgU3Ry
aW5nJiBrZXksIGZsb2F0JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
ZjxmbG9hdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwog
fQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxk
b3VibGU+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsKIH0K
IAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIFN0cmluZyYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8U3Ry
aW5nPihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZhbHVl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7CiB9CiAK
IGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3QgU3RyaW5nJiBrZXkp
CiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8RGljdGlv
bmFyeT4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGF1dG8gdmFs
dWUgPSBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxzdGQ6OnVuaXF1ZV9wdHI8RGljdGlv
bmFyeT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0yNzksOSArMjcyLDEwIEBAIHZvaWQgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZW5k
T2JqZWN0KCkKIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KGNvbnN0IFN0
cmluZyYga2V5KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8c3RkOjp1bmlxdWVf
cHRyPEFycmF5Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0
byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0ZDo6dW5pcXVlX3B0cjxB
cnJheT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgbV9hcnJheVN0YWNrLmFwcGVuZCh2YWx1ZS0+Z2V0KCkpOwogICAgIG1fYXJyYXlJbmRleFN0
YWNrLmFwcGVuZCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKaW5kZXggNTZhMmY5Mzhh
MDU0YjQ3N2NhZGRkZTAzNzk3MWU1MzEyZjRlMmRjYi4uMTlhMjk5YmRkOTIyOTlkMjI0MDk4YWI0
NDhjZjJlMzVjOTYwM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKQEAgLTU1LDYgKzU1LDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuZEFycmF5
KCkgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGNvbnN0IFQqIGdl
dFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKGNvbnN0IFN0cmluZyYga2V5KTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBkZWNvZGVTaW1wbGVWYWx1ZShjb25zdCBTdHJp
bmcmIGtleSwgVCYgcmVzdWx0KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5PiBt
X3Jvb3REaWN0aW9uYXJ5OwogICAgIFZlY3RvcjxEaWN0aW9uYXJ5KiwgMTY+IG1fZGljdGlvbmFy
eVN0YWNrOwogICAgIFZlY3RvcjxBcnJheSosIDE2PiBtX2FycmF5U3RhY2s7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjI1MzU1NzJlNTIxNTlj
YWEzMjM0ZDUzYTAyY2VjYTM1ZTUwNWUxNS4uYTE4ZWIzODJkZTA1NmE5MDgxM2IxNmYyMmJhODAy
MmFmMDM0YmMzNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAxLTEzICBUYWthc2hpIEtvbW9yaSAgPFRha2Fz
aGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVjb2RlckdlbmVyaWMgY3Jhc2hl
cyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rpbmcga2V5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrRGVjb2RlZEJ5dGVzKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFNp
bXBsZVZhbHVlRGVjb2RlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RTaW1wbGVWYWx1
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29k
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29k
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OktleWVk
Q29kaW5nVGVzdE9iamVjdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rl
c3RPYmplY3Q6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcGVyYXRv
cj09KToKKwogMjAyMC0wMS0xMyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBhNTdjNzNkODdlMzcwOWI0ODA1OTBjZDUyNTZm
MTJmZDA4OWYzMDNhLi45N2RhMDYwYmFkZWQ1OGZhY2FhY2M4Yzc3Nzc1MGE1YzAyYWVjYTM2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTEzOCw2ICsxMzgsNyBAQCBpZiAoRU5B
QkxFX1dFQkNPUkUpCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3BwCiAgICAgICAg
IFRlc3RzL1dlYkNvcmUvSW50UmVjdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRTaXpl
LmNwcAorICAgICAgICBUZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcAogICAgICAgICBUZXN0
cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3Bw
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyZDQxZTZjM2ViYzJmZTliYjYwYzFhNDYyOTI4
MGQ3MjgxNTkxYjMuLmExMzRhYTBjODdiOTUwNmJlNGMzMDA3NGZkMDNjYTQ5MGI2NmQyZjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjAsNiArMTIwLDcgQEAKIAkJMjZGNTJFQjIxODI4
OEYyNDAwMjNENDEyIC8qIGdlb2xvY2F0aW9uV2F0Y2hQb3NpdGlvbi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjUyRUIwMTgyODhG
MEYwMDIzRDQxMiAvKiBnZW9sb2NhdGlvbldhdGNoUG9zaXRpb24uaHRtbCAqLzsgfTsKIAkJMjZG
NTJFQjMxODI4OEYyNDAwMjNENDEyIC8qIGdlb2xvY2F0aW9uV2F0Y2hQb3NpdGlvbldpdGhIaWdo
QWNjdXJhY3kuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNkY1MkVCMTE4Mjg4RjBGMDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBv
c2l0aW9uV2l0aEhpZ2hBY2N1cmFjeS5odG1sICovOyB9OwogCQkyNzJBNjkxMDIyRjAxMkRBMDAw
RkRBQkIgLyogUGFnZUxvYWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNzJBNjkwRjIyRjAxMkM3MDAwRkRBQkIgLyogUGFnZUxvYWRTdGF0
ZS5jcHAgKi87IH07CisJCTI3OEUzRTE5MjNDRDg0MkYwMDVBNkI4MCAvKiBLZXllZENvZGluZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNzhFM0Ux
ODIzQ0Q4MkZBMDA1QTZCODAgLyogS2V5ZWRDb2RpbmcuY3BwICovOyB9OwogCQkyOTBBOUJCOTE3
MzVGNjM4MDBENzFCQkMgLyogT3Blbk5ld1dpbmRvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEE5QkI4MTczNUY0MjMwMEQ3MUJC
QyAvKiBPcGVuTmV3V2luZG93Lmh0bWwgKi87IH07CiAJCTI5MEY0Mjc1MTcyQTIyMUMwMDkzOUZG
MCAvKiBjdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTBGNDI3NDE3MkExRkRFMDA5MzlGRjAg
LyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgKi87IH07CiAJCTI5NzIzNEI3MTczQUZB
QzcwMDk4MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTcyMzRCNTE3M0FG
QUM3MDA5ODM2MDEgLyogQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZV9CdW5kbGUuY3BwICov
OyB9OwpAQCAtMTYyNyw2ICsxNjI4LDcgQEAKIAkJMjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8q
IERGQU1pbmltaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
RkFNaW5pbWl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNzJBNjkwRjIy
RjAxMkM3MDAwRkRBQkIgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlTG9hZFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjc4REU2NEIyMkI4RDYxMTAwNEUwRTdBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzVGhyZWFkQ29waWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjc4RTNFMTgyM0NEODJGQTAwNUE2
QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEtleWVkQ29kaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkwQTlC
QjUxNzM1REU4QTAwRDcxQkJDIC8qIENsb3NlTmV3V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVs
ZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDbG9zZU5l
d1dpbmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTBBOUJCODE3MzVGNDIzMDBENzFCQkMgLyogT3Blbk5ld1dpbmRvdy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gT3Blbk5ld1dpbmRvdy5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBGNDI3NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9t
LXByb3RvY29sLXN5bmMteGhyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY3Vz
dG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzE0Nyw2ICszMTQ5LDcgQEAKIAkJCQk3QTkwOUE3NDFEODc3NDc1MDA3RTEwRjggLyogSW50
UmVjdC5jcHAgKi8sCiAJCQkJN0E5MDlBNzUxRDg3NzQ3NTAwN0UxMEY4IC8qIEludFNpemUuY3Bw
ICovLAogCQkJCUNENUZGNDk2MjE2MkUyN0UwMDRCRDg2RiAvKiBJU09Cb3guY3BwICovLAorCQkJ
CTI3OEUzRTE4MjNDRDgyRkEwMDVBNkI4MCAvKiBLZXllZENvZGluZy5jcHAgKi8sCiAJCQkJMTQ0
NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovLAogCQkJCTZCRjRBNjgy
MjM5RUQ0Q0QwMEUyRjQ1QiAvKiBMb2dnZWRJblN0YXR1cy5jcHAgKi8sCiAJCQkJMDc2RTUwN0Ux
RjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3BwICovLApAQCAtNDc1OSw2ICs0NzYyLDcgQEAK
IAkJCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2Nr
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzQxQTQxMUE3RTAwNDQ3QzRDIC8qIEpTV3Jh
cHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1RTE1NzMyMTEy
Q0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTI3OEUzRTE5MjNDRDg0MkYwMDVBNkI4MCAvKiBLZXllZENvZGluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0YwNjFBNDExQUU2MDA0NDdDNEMgLyogTGF5b3V0TWlsZXN0b25lc1dp
dGhBbGxDb250ZW50SW5GcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VERjFBNDEx
QTkyMDA0NDdDNEMgLyogTGF5b3V0VW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNEJGQTY4
RTFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJhZ0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVk
Q29kaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGlu
Zy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWU1ODE3YjNmMWJjYjUwYTAwYTQ0ZTM5ZmE4ZmY3NGQ2NmNlNjRk
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9L
ZXllZENvZGluZy5jcHAKQEAgLTAsMCArMSwzNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitz
dGF0aWMgYm9vbCBjaGVja0RlY29kZWRCeXRlcyhjb25zdCB1aW50OF90KiBvcmlnaW5hbCwgc2l6
ZV90IG9yaWdpbmFsU2l6ZSwgY29uc3QgdWludDhfdCogZGVjb2RlZCwgc2l6ZV90IGRlY29kZWRT
aXplKQoreworICAgIGlmIChvcmlnaW5hbFNpemUgIT0gZGVjb2RlZFNpemUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3RkOjptZW1jbXAob3JpZ2luYWwsIGRlY29kZWQs
IG9yaWdpbmFsU2l6ZSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEJ5dGVzKQor
eworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YVtdID0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAw
eGRlLCAweGFkLCAweGJlLCAweGVmIH07CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBX
VEZfQVJSQVlfTEVOR1RIKGRhdGEpOworICAgIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoT25lID0g
MTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aFplcm8gPSAwOworCisgICAgYXV0byBlbmNv
ZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5j
b2RlQnl0ZXMoImRhdGEiLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVC
eXRlcygiZGF0YS1zaXplMCIsIGRhdGEsIGRhdGFMZW5ndGhaZXJvKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGVCeXRlcygiZGF0YS1zaXplMSIsIGRhdGEsIGRhdGFMZW5ndGhPbmUpOworICAgIGF1dG8g
ZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRl
Y29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6
ZSgpKTsKKworICAgIGJvb2wgc3VjY2VzczsKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXI7Cisg
ICAgc2l6ZV90IHNpemU7CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRh
dGEiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVD
VF9FUShkYXRhTGVuZ3RoLCBzaXplKTsKKyAgICBFWFBFQ1RfVFJVRShjaGVja0RlY29kZWRCeXRl
cyhkYXRhLCBkYXRhTGVuZ3RoLCBidWZmZXIsIHNpemUpKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNv
ZGVyLT5kZWNvZGVCeXRlcygiZGF0YS1zaXplMCIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNU
X1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGhaZXJvLCBzaXplKTsKKwor
ICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVCeXRlcygiZGF0YS1zaXplMSIsIGJ1ZmZlciwg
c2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5n
dGhPbmUsIHNpemUpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrRGVjb2RlZEJ5dGVzKGRhdGEsIGRh
dGFMZW5ndGhPbmUsIGJ1ZmZlciwgc2l6ZSkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5j
b2RlRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBEZWNvZGVWYWx1ZVR5cGUsIHR5cGVuYW1lIEVuY29k
ZVZhbHVlVHlwZT4KK2Jvb2wgdGVzdFNpbXBsZVZhbHVlKEVuY29kZUZ1bmN0aW9uVHlwZSBlbmNv
ZGUsIGJvb2wgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6KiBkZWNvZGUpKGNvbnN0IFN0cmluZyYs
IERlY29kZVZhbHVlVHlwZSYpLCBFbmNvZGVWYWx1ZVR5cGUgdmFsdWUpCit7CisgICAgYXV0byBl
bmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgKGVuY29kZXIu
Z2V0KCktPiplbmNvZGUpKCJrZXkiLCB2YWx1ZSk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIg
PSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihl
bmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgRGVj
b2RlVmFsdWVUeXBlIGRlY29kZWRWYWx1ZTsKKyAgICBib29sIHN1Y2Nlc3MgPSAoZGVjb2Rlci5n
ZXQoKS0+KmRlY29kZSkoImtleSIsIGRlY29kZWRWYWx1ZSk7CisKKyAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZV92PEVuY29kZVZhbHVlVHlwZSwgRGVjb2RlVmFsdWVUeXBlPikKKyAgICAg
ICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgZGVjb2RlZFZhbHVlID09IHZhbHVlOworCisgICAgcmV0
dXJuIHN1Y2Nlc3M7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEJvb2wpCit7Cisg
ICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVu
Y29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIHRydWUpKTsKKyAg
ICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgZmFsc2UpKTsKKwor
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50MzIsIHRydWUpKTsK
KyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6
OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgdHJ1ZSkp
OworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIHRydWUp
KTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdHJ1
ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHRy
dWUpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwg
dHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5n
LCB0cnVlKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEludDMyKQoreworICAg
IEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNv
ZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50MzIsIDApKTsKKyAgICBF
WFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
SW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCAxKSk7CisgICAgRVhQ
RUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUlu
dDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwgLTEpKTsKKyAgICBFWFBF
Q1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50
MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCBJTlRfTUlOKSk7CisgICAg
RVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29k
ZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwgSU5UX01BWCkpOwor
CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
OjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgMCkpOwor
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgMCkpOwor
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCAwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCAwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIDApKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVu
Y29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIDApKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVu
Y29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIDApKTsKK30K
KworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0VUludDMyKQoreworICAgIEVYUEVDVF9UUlVF
KHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgdWludDMyX3QoMCkpKTsKKyAgICBF
WFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
VUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50MzIsIHVpbnQzMl90KDEp
KSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDMyLCBV
SU5UMzJfTUFYKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlQm9vbCwgdWludDMyX3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlSW50MzIsIHVpbnQzMl90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCB1aW50MzJfdCgwKSkpOworICAgIEVYUEVDVF9G
QUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDMy
LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIHVpbnQzMl90KDApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCB1aW50MzJf
dCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3Vi
bGUsIHVpbnQzMl90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZVN0cmluZywgdWludDMyX3QoMCkpKTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0
QW5kR2V0SW50NjQpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVJbnQ2NCwgaW50NjRfdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlSW50NjQsIGludDY0X3QoLTIpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBs
ZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgaW50NjRfdCgyKSkpOworICAgIEVYUEVDVF9UUlVFKHRl
c3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNv
cmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIElOVDY0X01JTikpOworICAgIEVYUEVDVF9U
UlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIElOVDY0X01BWCkpOworCisgICAg
RVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNv
ZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgaW50NjRfdCgwKSkp
OworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCBpbnQ2
NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUlu
dDMyLCBpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlVUludDY0LCBpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIGludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVz
dFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0
LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIGludDY0X3QoMCkpKTsKK30K
KworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0VUludDY0KQoreworICAgIEVYUEVDVF9UUlVF
KHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdWludDY0X3QoMCkpKTsKKyAgICBF
WFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
VUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIHVpbnQ2NF90KDEp
KSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCBV
SU5UNjRfTUFYKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlQm9vbCwgdWludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlSW50MzIsIHVpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgdWludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2
NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIHVpbnQ2NF90KDApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCB1aW50NjRf
dCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlVUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3Vi
bGUsIHVpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZVN0cmluZywgdWludDY0X3QoMCkpKTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0
QW5kR2V0RmxvYXQpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVGbG9hdCwgZmxvYXQoMCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZUZsb2F0LCBmbG9hdCgxLjUpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVGbG9hdCwgZmxvYXQoLTEuNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0
U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bG93ZXN0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZs
b2F0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCkpKTsKKyAgICBFWFBFQ1RfVFJV
RSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6bWF4KCkpKTsKKworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZUJvb2wsIGZsb2F0KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlSW50MzIsIGZsb2F0KDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlVUludDMyLCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0
U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9GQUxT
RSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgZmxvYXQoMCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZs
b2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGZsb2F0KDApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCBmbG9hdCgw
KSkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXREb3VibGUpCit7CisgICAgRVhQ
RUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURv
dWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBkb3VibGUoMCkpKTsK
KyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGRvdWJs
ZSgxLjI1KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURv
dWJsZSwgZG91YmxlKC0xLjI1KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZURvdWJsZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSkp
OworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
OjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjptYXgoKSkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZUJvb2wsIGRvdWJsZSgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVy
OjpkZWNvZGVJbnQzMiwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQzMiwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRl
c3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCBkb3VibGUoMCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJs
ZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCBkb3VibGUoMCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVu
Y29kZURvdWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIGRvdWJsZSgw
KSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcs
IGRvdWJsZSgwKSkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRTdHJpbmcpCit7
CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6
OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCBTdHJp
bmcoKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVN0cmlu
ZywgU3RyaW5nKCJXZWJLaXQiKSkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERl
Y29kZXI6OmRlY29kZUJvb2wsIFN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1w
bGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpL
ZXllZERlY29kZXI6OmRlY29kZUludDMyLCBTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50MzIsIFN0cmluZygpKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJp
bmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCBTdHJpbmcoKSkpOworICAg
IEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIFN0cmluZygp
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBT
dHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVE
b3VibGUsIFN0cmluZygpKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIEdldE5vbkV4aXN0aW5n
UmVjb3JkKQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUJvb2woImJvb2wtdHJ1ZSIsIHRydWUpOworCisg
ICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKyAgICBh
dXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZl
ci0+c2l6ZSgpKTsKKworICAgIGJvb2wgc3VjY2VzcywgYm9vbFZhbHVlOworICAgIHN1Y2Nlc3Mg
PSBkZWNvZGVyLT5kZWNvZGVCb29sKCJib29sLXRydWUiLCBib29sVmFsdWUpOworICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUSh0cnVlLCBib29sVmFsdWUpOworCisgICAg
c3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJvb2woIm5vLWV4aXN0LWtleSIsIGJvb2xWYWx1ZSk7
CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgaW50MzJfdCBpbnQzMlZhbHVlOwor
ICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVJbnQzMigibm8tZXhpc3Qta2V5IiwgaW50MzJW
YWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgdWludDMyX3QgdWludDMy
VmFsdWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZVVJbnQzMigibm8tZXhpc3Qta2V5
IiwgdWludDMyVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGludDY0
X3QgaW50NjRWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlSW50NjQoIm5vLWV4
aXN0LWtleSIsIGludDY0VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAg
IHVpbnQ2NF90IHVpbnQ2NFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVVSW50
NjQoIm5vLWV4aXN0LWtleSIsIHVpbnQ2NFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vz
cyk7CisKKyAgICBmbG9hdCBmbG9hdFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNv
ZGVGbG9hdCgibm8tZXhpc3Qta2V5IiwgZmxvYXRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1
Y2Nlc3MpOworCisgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVy
LT5kZWNvZGVEb3VibGUoIm5vLWV4aXN0LWtleSIsIGRvdWJsZVZhbHVlKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc3VjY2Vzcyk7CisKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXI7CisgICAgc2l6ZV90
IHNpemU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJ5dGVzKCJuby1leGlzdC1rZXki
LCBidWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKK30KKworc3RydWN0
IEtleWVkQ29kaW5nVGVzdE9iamVjdCB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKFdlYkNvcmU6
OktleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0JiBvYmpl
Y3QpCisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZygibmFtZSIsIG9iamVjdC5t
X25hbWUpOworICAgICAgICBlbmNvZGVyLmVuY29kZUludDMyKCJhZ2UiLCBvYmplY3QubV9hZ2Up
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShXZWJDb3JlOjpLZXllZERlY29kZXIm
IGRlY29kZXIsIEtleWVkQ29kaW5nVGVzdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZygibmFtZSIsIG9iamVjdC5tX25hbWUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlSW50MzIoImFn
ZSIsIG9iamVjdC5tX2FnZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIEtleWVkQ29kaW5nVGVzdE9iamVjdCgpIHsgfTsKKyAg
ICBLZXllZENvZGluZ1Rlc3RPYmplY3QoU3RyaW5nIG5hbWUsIGludCBhZ2UpCisgICAgICAgIDog
bV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9hZ2UoYWdlKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIGVxdWFscyhjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIChtX25hbWUgPT0gb3RoZXIubV9uYW1lKSAmJiAobV9hZ2UgPT0g
b3RoZXIubV9hZ2UpOworICAgIH0KKworICAgIFN0cmluZyBtX25hbWU7CisgICAgaW50MzJfdCBt
X2FnZTsKK307CisKK3N0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5ZWRDb2RpbmdUZXN0
T2JqZWN0JiBsT2JqZWN0LCBjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIHJPYmplY3QpCit7
CisgICAgcmV0dXJuIGxPYmplY3QuZXF1YWxzKHJPYmplY3QpOworfQorCitURVNUKEtleWVkQ29k
aW5nLCBTZXRBbmRHZXRPYmplY3QpCit7CisgICAgY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0
IHVzZXIwKCJOb2FoIiwgMjgpOworICAgIGNvbnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCB1c2Vy
MSgiRW1tYSIsIDMxKTsKKworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZU9iamVjdCgidXNlcjAiLCB1c2VyMCwg
S2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGVuY29kZXItPmVuY29kZU9iamVj
dCgidXNlcjEiLCB1c2VyMSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGF1
dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRv
IGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IGRl
Y29kZWRVc2VyMCwgZGVjb2RlZFVzZXIxOworCisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29k
ZU9iamVjdCgidXNlcjAiLCBkZWNvZGVkVXNlcjAsIEtleWVkQ29kaW5nVGVzdE9iamVjdDo6ZGVj
b2RlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoZGVjb2RlZFVz
ZXIwLCB1c2VyMCk7CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0KCJ1c2Vy
MSIsIGRlY29kZWRVc2VyMSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkZWNvZGVkVXNlcjEsIHVzZXIxKTsK
K30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0T2JqZWN0cykKK3sKKyAgICBWZWN0b3I8
S2V5ZWRDb2RpbmdUZXN0T2JqZWN0PiB1c2VyczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEw
OyBpKyspCisgICAgICAgIHVzZXJzLmFwcGVuZChLZXllZENvZGluZ1Rlc3RPYmplY3QoInVzZXJu
YW1lIiwgaSkpOworCisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygidXNlcnMiLCB1c2Vycy5iZWdp
bigpLCB1c2Vycy5lbmQoKSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGF1
dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRv
IGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICBWZWN0b3I8S2V5ZWRDb2RpbmdUZXN0T2JqZWN0PiBkZWNvZGVkVXNlcnM7
CisKKyAgICBib29sIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVPYmplY3RzKCJ1c2VycyIsIGRl
Y29kZWRVc2VycywgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9U
UlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUSh1c2VycywgZGVjb2RlZFVzZXJzKTsKK30KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387780</attachid>
            <date>2020-01-15 05:32:21 -0800</date>
            <delta_ts>2020-01-15 18:40:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug205902-patch.diff</filename>
            <type>text/plain</type>
            <size>29087</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNzEzMWQ2Li40NzFlZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMjAtMDEtMTUgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+
CisKKyAgICAgICAgS2V5ZWREZWNvZGVyR2VuZXJpYyBjcmFzaGVzIHdoZW4gaXQgYWNjZXNzZXMg
ZGF0YSB3aXRoIG5vbi1leGlzdGluZyBrZXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTkwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBudWxsIGNoZWNrIGZ1bmN0aW9uIGZvciBLZXllZERlY29k
ZXJHZW5lcmljLgorCisgICAgICAgIFRlc3Q6IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9L
ZXllZENvZGluZ0dlbmVyaWMuY3BwCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJp
Yzo6RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVy
aWM6OmdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVNpbXBsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVj
b2RlckdlbmVyaWM6OmRlY29kZVVJbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29k
ZXJHZW5lcmljOjpkZWNvZGVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJH
ZW5lcmljOjpkZWNvZGVJbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpkZWNvZGVGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmlj
OjpkZWNvZGVEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6
ZGVjb2RlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmJl
Z2luT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmJlZ2lu
QXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5o
OgorCiAyMDIwLTAxLTE0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTCBzdHVi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29k
ZXJHZW5lcmljLmNwcAppbmRleCAwZTU5NzIzLi5iYzU3Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAg
dm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBt
YWtlVW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQotICAgIE5vZGUmIGdl
dChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1fbWFwLmdldChrZXkpOyB9CisgICAgTm9k
ZSogZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiBtX21hcC5nZXQoa2V5KTsgfQogCiBw
cml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZT4+IG1fbWFw
OwpAQCAtMTgxLDExICsxODEsMzUgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVy
R2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgbV9hcnJh
eVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0IFQq
IEtleWVkRGVjb2RlckdlbmVyaWM6OmdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKGNvbnN0
IFN0cmluZyYga2V5KQoreworICAgIGF1dG8mIGRpY3Rpb25hcnkgPSBtX2RpY3Rpb25hcnlTdGFj
ay5sYXN0KCk7CisKKyAgICBhdXRvIG5vZGUgPSBkaWN0aW9uYXJ5LT5nZXQoa2V5KTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdURjo6Z2V0
X2lmPFQ+KCpub2RlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Jvb2wgS2V5ZWREZWNv
ZGVyR2VuZXJpYzo6ZGVjb2RlU2ltcGxlVmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIFQmIHJlc3Vs
dCkKK3sKKyAgICBhdXRvIHZhbHVlID0gZ2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2s8VD4o
a2V5KTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXN1
bHQgPSAqdmFsdWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqJiBkYXRh
LCBzaXplX3QmIHNpemUpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxWZWN0b3I8
dWludDhfdD4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGF1dG8g
dmFsdWUgPSBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxWZWN0b3I8dWludDhfdD4+KGtl
eSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgZGF0YSA9
IHZhbHVlLT5kYXRhKCk7CiAgICAgc2l6ZSA9IHZhbHVlLT5zaXplKCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xOTMsODEgKzIxNyw1MCBAQCBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90KiYgZGF0YSwgcwogCiBib29s
IEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wm
IHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGJvb2w+KG1fZGljdGlv
bmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERl
Y29kZXJHZW5lcmljOjpkZWNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90JiBy
ZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjx1aW50MzJfdD4obV9kaWN0
aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVk
RGVjb2RlckdlbmVyaWM6OmRlY29kZVVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgdWludDY0X3Qm
IHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHVpbnQ2NF90PihtX2Rp
Y3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5
ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3Qm
IHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGludDMyX3Q+KG1fZGlj
dGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXll
ZERlY29kZXJHZW5lcmljOjpkZWNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCYg
cmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8aW50NjRfdD4obV9kaWN0
aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVk
RGVjb2RlckdlbmVyaWM6OmRlY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCYgcmVz
dWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8ZmxvYXQ+KG1fZGljdGlvbmFy
eVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29k
ZXJHZW5lcmljOjpkZWNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYgcmVzdWx0
KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8ZG91YmxlPihtX2RpY3Rpb25hcnlT
dGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVy
R2VuZXJpYzo6ZGVjb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmIHJlc3VsdCkK
IHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPFN0cmluZz4obV9kaWN0aW9uYXJ5U3Rh
Y2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
ZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2Rlckdl
bmVyaWM6OmJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIGF1dG8qIHZhbHVl
ID0gV1RGOjpnZXRfaWY8c3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+PihtX2RpY3Rpb25hcnlT
dGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0UG9pbnRlckZyb21E
aWN0aW9uYXJ5U3RhY2s8c3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+PihrZXkpOwogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIG1fZGljdGlvbmFyeVN0YWNr
LmFwcGVuZCh2YWx1ZS0+Z2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjc5LDkgKzI3
MiwxMCBAQCB2b2lkIEtleWVkRGVjb2RlckdlbmVyaWM6OmVuZE9iamVjdCgpCiAKIGJvb2wgS2V5
ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBh
dXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+KG1fZGljdGlv
bmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOworICAgIGF1dG8gdmFsdWUgPSBnZXRQb2ludGVy
RnJvbURpY3Rpb25hcnlTdGFjazxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PihrZXkpOwogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIG1fYXJyYXlTdGFjay5hcHBl
bmQodmFsdWUtPmdldCgpKTsKICAgICBtX2FycmF5SW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWREZWNvZGVyR2VuZXJpYy5oCmluZGV4IDU2YTJmOTMuLjE5YTI5OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5o
CkBAIC01NSw2ICs1NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBjb25zdCBUKiBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjayhj
b25zdCBTdHJpbmcmIGtleSk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGJvb2wg
ZGVjb2RlU2ltcGxlVmFsdWUoY29uc3QgU3RyaW5nJiBrZXksIFQmIHJlc3VsdCk7CisKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4gbV9yb290RGljdGlvbmFyeTsKICAgICBWZWN0b3I8
RGljdGlvbmFyeSosIDE2PiBtX2RpY3Rpb25hcnlTdGFjazsKICAgICBWZWN0b3I8QXJyYXkqLCAx
Nj4gbV9hcnJheVN0YWNrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGE4YmU4YTAuLjBlYzQ5MDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wMS0xNSAgVGFr
YXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBLZXllZERl
Y29kZXJHZW5lcmljIGNyYXNoZXMgd2hlbiBpdCBhY2Nlc3NlcyBkYXRhIHdpdGggbm9uLWV4aXN0
aW5nIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZy5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y2hlY2tEZWNvZGVkQnl0ZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0U2ltcGxlVmFsdWUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6S2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6S2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6S2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpLZXllZENvZGluZ1Rl
c3RPYmplY3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6S2V5ZWRDb2RpbmdUZXN0T2JqZWN0
OjplcXVhbHMgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3BlcmF0b3I9PSk6CisK
IDIwMjAtMDEtMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0ludGVncmF0aW9uXSBTdXBwb3J0IHRoZSBmZWF0dXJlIGZsYWcgaW4gRHVtcFJlbmRl
clRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGE1N2M3M2QuLjk3ZGEwNjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTM4LDYgKzEzOCw3IEBAIGlmIChF
TkFCTEVfV0VCQ09SRSkKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRQb2ludC5jcHAKICAgICAg
ICAgVGVzdHMvV2ViQ29yZS9JbnRSZWN0LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFNp
emUuY3BwCisgICAgICAgIFRlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwCiAgICAgICAgIFRl
c3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRlbnRSYW5nZS5j
cHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTJkNDFlNi4uYTEzNGFhMCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMCw2ICsxMjAsNyBAQAogCQkyNkY1MkVCMjE4Mjg4RjI0MDAy
M0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNTJFQjAxODI4OEYwRjAwMjNE
NDEyIC8qIGdlb2xvY2F0aW9uV2F0Y2hQb3NpdGlvbi5odG1sICovOyB9OwogCQkyNkY1MkVCMzE4
Mjg4RjI0MDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uV2l0aEhpZ2hBY2N1cmFj
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI2RjUyRUIxMTgyODhGMEYwMDIzRDQxMiAvKiBnZW9sb2NhdGlvbldhdGNoUG9zaXRpb25X
aXRoSGlnaEFjY3VyYWN5Lmh0bWwgKi87IH07CiAJCTI3MkE2OTEwMjJGMDEyREEwMDBGREFCQiAv
KiBQYWdlTG9hZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI3MkE2OTBGMjJGMDEyQzcwMDBGREFCQiAvKiBQYWdlTG9hZFN0YXRlLmNwcCAq
LzsgfTsKKwkJMjc4RTNFMTkyM0NEODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI3OEUzRTE4MjNDRDgy
RkEwMDVBNkI4MCAvKiBLZXllZENvZGluZy5jcHAgKi87IH07CiAJCTI5MEE5QkI5MTczNUY2Mzgw
MEQ3MUJCQyAvKiBPcGVuTmV3V2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwQTlCQjgxNzM1RjQyMzAwRDcxQkJDIC8qIE9w
ZW5OZXdXaW5kb3cuaHRtbCAqLzsgfTsKIAkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8qIGN1
c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0
b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCAqLzsgfTsKIAkJMjk3MjM0QjcxNzNBRkFDNzAwOTgz
NjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NzIzNEI1MTczQUZBQzcwMDk4
MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgKi87IH07CkBA
IC0xNjI3LDYgKzE2MjgsNyBAQAogCQkyNkY2RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWlu
aW1pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGQU1pbmlt
aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI3MkE2OTBGMjJGMDEyQzcw
MDBGREFCQiAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyNzhERTY0QjIyQjhENjExMDA0RTBFN0EgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNzhFM0UxODIzQ0Q4MkZBMDA1QTZCODAgLyog
S2V5ZWRDb2RpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2V5
ZWRDb2RpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBBOUJCNTE3MzVE
RThBMDBENzFCQkMgLyogQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsb3NlTmV3V2luZG93
SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5MEE5QkI4MTczNUY0MjMwMEQ3MUJCQyAvKiBPcGVuTmV3V2luZG93Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBPcGVuTmV3V2luZG93Lmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0b20tcHJvdG9j
b2wtc3luYy14aHIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tcHJv
dG9jb2wtc3luYy14aHIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTQ3
LDYgKzMxNDksNyBAQAogCQkJCTdBOTA5QTc0MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRSZWN0LmNw
cCAqLywKIAkJCQk3QTkwOUE3NTFEODc3NDc1MDA3RTEwRjggLyogSW50U2l6ZS5jcHAgKi8sCiAJ
CQkJQ0Q1RkY0OTYyMTYyRTI3RTAwNEJEODZGIC8qIElTT0JveC5jcHAgKi8sCisJCQkJMjc4RTNF
MTgyM0NEODJGQTAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLywKIAkJCQkxNDQ2NDAxMjE2
N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkJNkJGNEE2ODIyMzlFRDRD
RDAwRTJGNDVCIC8qIExvZ2dlZEluU3RhdHVzLmNwcCAqLywKIAkJCQkwNzZFNTA3RTFGNDUwMzFF
MDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgKi8sCkBAIC00NzU5LDYgKzQ3NjIsNyBAQAogCQkJCUUz
NUZDN0IyMjJCODJBNzMwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVyRm9y
Tm9kZUluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3MzIxMTJDRTI5MDAz
MDdFODIgLyogS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjc4
RTNFMTkyM0NEODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjA2MUE0MTFBRTYwMDQ0N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENv
bnRlbnRJbkZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0
N0M0QyAvKiBMYXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0QkZBNjhFMUU0QUQw
ODAwMDE1NDI5OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2Rpbmcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWJjMzAzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcApA
QCAtMCwwICsxLDMyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGNoZWNr
RGVjb2RlZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIG9yaWdpbmFsLCBzaXplX3Qgb3JpZ2luYWxTaXpl
LCBjb25zdCB1aW50OF90KiBkZWNvZGVkLCBzaXplX3QgZGVjb2RlZFNpemUpCit7CisgICAgaWYg
KG9yaWdpbmFsU2l6ZSAhPSBkZWNvZGVkU2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuICFzdGQ6Om1lbWNtcChvcmlnaW5hbCwgZGVjb2RlZCwgb3JpZ2luYWxTaXplKTsK
K30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0Qnl0ZXMpCit7CisgICAgY29uc3QgdWlu
dDhfdCBkYXRhW10gPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4ZGUsIDB4YWQsIDB4YmUs
IDB4ZWYgfTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgo
ZGF0YSk7CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGhPbmUgPSAxOworICAgIGNvbnN0IHNp
emVfdCBkYXRhTGVuZ3RoWmVybyA9IDA7CisKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YSIs
IGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKCJkYXRhLXNpemUw
IiwgZGF0YSwgZGF0YUxlbmd0aFplcm8pOworICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKCJkYXRh
LXNpemUxIiwgZGF0YSwgZGF0YUxlbmd0aE9uZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0g
ZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihl
bmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgYm9v
bCBzdWNjZXNzOworICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcjsKKyAgICBzaXplX3Qgc2l6ZTsK
KworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVCeXRlcygiZGF0YSIsIGJ1ZmZlciwgc2l6
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGgs
IHNpemUpOworICAgIEVYUEVDVF9UUlVFKGNoZWNrRGVjb2RlZEJ5dGVzKGRhdGEsIGRhdGFMZW5n
dGgsIGJ1ZmZlciwgc2l6ZSkpOworCisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJ5dGVz
KCJkYXRhLXNpemUwIiwgYnVmZmVyLCBzaXplKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
KyAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aFplcm8sIHNpemUpOworCisgICAgc3VjY2VzcyA9IGRl
Y29kZXItPmRlY29kZUJ5dGVzKCJkYXRhLXNpemUxIiwgYnVmZmVyLCBzaXplKTsKKyAgICBFWFBF
Q1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aE9uZSwgc2l6ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoY2hlY2tEZWNvZGVkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aE9uZSwgYnVm
ZmVyLCBzaXplKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGVGdW5jdGlvblR5cGUs
IHR5cGVuYW1lIERlY29kZVZhbHVlVHlwZSwgdHlwZW5hbWUgRW5jb2RlVmFsdWVUeXBlPgorYm9v
bCB0ZXN0U2ltcGxlVmFsdWUoRW5jb2RlRnVuY3Rpb25UeXBlIGVuY29kZSwgYm9vbCAoV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjoqIGRlY29kZSkoY29uc3QgU3RyaW5nJiwgRGVjb2RlVmFsdWVUeXBl
JiksIEVuY29kZVZhbHVlVHlwZSB2YWx1ZSkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICAoZW5jb2Rlci5nZXQoKS0+KmVuY29kZSko
ImtleSIsIHZhbHVlKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlz
aEVuY29kaW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRCdWZmZXItPmRh
dGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBEZWNvZGVWYWx1ZVR5cGUgZGVj
b2RlZFZhbHVlOworICAgIGJvb2wgc3VjY2VzcyA9IChkZWNvZGVyLmdldCgpLT4qZGVjb2RlKSgi
a2V5IiwgZGVjb2RlZFZhbHVlKTsKKworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8
RW5jb2RlVmFsdWVUeXBlLCBTdHJpbmc+ICYmIHN0ZDo6aXNfc2FtZV92PERlY29kZVZhbHVlVHlw
ZSwgU3RyaW5nPikgeworICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpICYmIGRlY29kZWRWYWx1
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgZGVjb2RlZFZhbHVlID09IHZhbHVlOwor
ICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEVuY29kZVZhbHVlVHlwZSwg
RGVjb2RlVmFsdWVUeXBlPikKKyAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgZGVjb2RlZFZh
bHVlID09IHZhbHVlOworCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK1RFU1QoS2V5ZWRDb2Rp
bmcsIFNldEFuZEdldEJvb2wpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZUJvb2wsIHRydWUpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlQm9vbCwgZmFsc2UpKTsKKworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUo
JldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlSW50MzIsIHRydWUpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZVVJbnQzMiwgdHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFs
dWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlSW50NjQsIHRydWUpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERl
Y29kZXI6OmRlY29kZVVJbnQ2NCwgdHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHRydWUpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBs
ZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZURvdWJsZSwgdHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2lt
cGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6Oktl
eWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCB0cnVlKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2Rpbmcs
IFNldEFuZEdldEludDMyKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlSW50MzIsIDApKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZUludDMyLCAxKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVJbnQzMiwgLTEpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZUludDMyLCBJTlRfTUlOKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVJbnQzMiwgSU5UX01BWCkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlQm9vbCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUo
JldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZVN0cmluZywgMCkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRV
SW50MzIpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXll
ZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUlu
dDMyLCB1aW50MzJfdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZVVJbnQzMiwgdWludDMyX3QoMSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAmV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVVSW50MzIsIFVJTlQzMl9NQVgpKTsKKworICAgIEVYUEVDVF9GQUxT
RSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAm
V2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVCb29sLCB1aW50MzJfdCgwKSkpOworICAgIEVY
UEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
VUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIHVpbnQzMl90KDAp
KSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEludDY0KQoreworICAgIEVYUEVD
VF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2
NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIGludDY0X3QoMCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCBpbnQ2NF90KC0y
KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIGlu
dDY0X3QoMikpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2RlSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUlu
dDY0LCBJTlQ2NF9NSU4pKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZUludDY0LCBJTlQ2NF9NQVgpKTsKKworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFs
dWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50NjQsICZXZWJDb3JlOjpLZXllZERl
Y29kZXI6OmRlY29kZUJvb2wsIGludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNp
bXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIGludDY0X3QoMCkpKTsKK30KKworVEVTVChLZXll
ZENvZGluZywgU2V0QW5kR2V0VUludDY0KQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdWludDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDY0LCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIHVpbnQ2NF90KDEpKSk7CisgICAgRVhQ
RUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJ
bnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCBVSU5UNjRfTUFYKSk7
CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgdWlu
dDY0X3QoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
U3RyaW5nLCB1aW50NjRfdCgwKSkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRG
bG9hdCkKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0
LCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
RmxvYXQsIGZsb2F0KDEuNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZUZsb2F0LCBmbG9hdCgtMS41KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpsb3dlc3Qo
KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpt
YXgoKSkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9v
bCwgZmxvYXQoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVTdHJpbmcsIGZsb2F0KDApKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldERv
dWJsZSkKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3Vi
bGUsIGRvdWJsZSgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZURvdWJsZSwgZG91YmxlKDEuMjUpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBkb3VibGUoLTEuMjUpKSk7CisgICAgRVhQRUNUX1RSVUUo
dGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldl
YkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Omxvd2VzdCgpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlRG91YmxlLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbigpKSk7CisgICAg
RVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29k
ZURvdWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCgpKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBs
ZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNvcmU6Oktl
eWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRl
c3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCBkb3VibGUoMCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJs
ZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDMyLCBkb3VibGUoMCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVu
Y29kZURvdWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIGRvdWJsZSgw
KSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQs
IGRvdWJsZSgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVGbG9hdCwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZVN0cmluZywgZG91YmxlKDApKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNl
dEFuZEdldFN0cmluZykKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVTdHJpbmcsIFN0cmluZygpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlU3RyaW5nLCBTdHJpbmcoIldlYktpdCIpKSk7CisKKyAgICBFWFBFQ1RfRkFM
U0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0cmluZywg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgU3RyaW5nKCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0
cmluZywgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50MzIsIFN0cmluZygpKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgU3RyaW5n
KCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQs
IFN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZVVJbnQ2NCwgU3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlRmxvYXQsIFN0cmluZygpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZURvdWJsZSwgU3RyaW5nKCkpKTsKK30KKworVEVTVChLZXllZENvZGlu
ZywgR2V0Tm9uRXhpc3RpbmdSZWNvcmQpCit7CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQm9vbCgiYm9vbC10
cnVlIiwgdHJ1ZSk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hF
bmNvZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRh
KCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCBzdWNjZXNzLCBib29sVmFs
dWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJvb2woImJvb2wtdHJ1ZSIsIGJvb2xW
YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHRydWUsIGJv
b2xWYWx1ZSk7CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQm9vbCgibm8tZXhpc3Qt
a2V5IiwgYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAgICBpbnQz
Ml90IGludDMyVmFsdWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUludDMyKCJuby1l
eGlzdC1rZXkiLCBpbnQzMlZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAg
ICB1aW50MzJfdCB1aW50MzJWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlVUlu
dDMyKCJuby1leGlzdC1rZXkiLCB1aW50MzJWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nl
c3MpOworCisgICAgaW50NjRfdCBpbnQ2NFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5k
ZWNvZGVJbnQ2NCgibm8tZXhpc3Qta2V5IiwgaW50NjRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNF
KHN1Y2Nlc3MpOworCisgICAgdWludDY0X3QgdWludDY0VmFsdWU7CisgICAgc3VjY2VzcyA9IGRl
Y29kZXItPmRlY29kZVVJbnQ2NCgibm8tZXhpc3Qta2V5IiwgdWludDY0VmFsdWUpOworICAgIEVY
UEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGZsb2F0IGZsb2F0VmFsdWU7CisgICAgc3VjY2Vz
cyA9IGRlY29kZXItPmRlY29kZUZsb2F0KCJuby1leGlzdC1rZXkiLCBmbG9hdFZhbHVlKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAg
c3VjY2VzcyA9IGRlY29kZXItPmRlY29kZURvdWJsZSgibm8tZXhpc3Qta2V5IiwgZG91YmxlVmFs
dWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlcjsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQnl0
ZXMoIm5vLWV4aXN0LWtleSIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nl
c3MpOworfQorCitzdHJ1Y3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBLZXllZENvZGlu
Z1Rlc3RPYmplY3QmIG9iamVjdCkKKyAgICB7CisgICAgICAgIGVuY29kZXIuZW5jb2RlU3RyaW5n
KCJuYW1lIiwgb2JqZWN0Lm1fbmFtZSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlSW50MzIoImFn
ZSIsIG9iamVjdC5tX2FnZSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKFdlYkNv
cmU6OktleWVkRGVjb2RlciYgZGVjb2RlciwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0JiBvYmplY3Qp
CisgICAgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJuYW1lIiwgb2JqZWN0
Lm1fbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVJbnQzMigiYWdlIiwgb2JqZWN0Lm1fYWdlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgS2V5ZWRDb2RpbmdUZXN0
T2JqZWN0KCkgeyB9OworICAgIEtleWVkQ29kaW5nVGVzdE9iamVjdChTdHJpbmcgbmFtZSwgaW50
IGFnZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX2FnZShhZ2UpCisgICAg
eworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG1fbmFtZSA9PSBvdGhlci5tX25h
bWUpICYmIChtX2FnZSA9PSBvdGhlci5tX2FnZSk7CisgICAgfQorCisgICAgU3RyaW5nIG1fbmFt
ZTsKKyAgICBpbnQzMl90IG1fYWdlOworfTsKKworc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIGxPYmplY3QsIGNvbnN0IEtleWVkQ29kaW5nVGVzdE9i
amVjdCYgck9iamVjdCkKK3sKKyAgICByZXR1cm4gbE9iamVjdC5lcXVhbHMock9iamVjdCk7Cit9
CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldE9iamVjdCkKK3sKKyAgICBjb25zdCBLZXll
ZENvZGluZ1Rlc3RPYmplY3QgdXNlcjAoIk5vYWgiLCAyOCk7CisgICAgY29uc3QgS2V5ZWRDb2Rp
bmdUZXN0T2JqZWN0IHVzZXIxKCJFbW1hIiwgMzEpOworCisgICAgYXV0byBlbmNvZGVyID0gV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0
KCJ1c2VyMCIsIHVzZXIwLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29kZSk7CisgICAgZW5j
b2Rlci0+ZW5jb2RlT2JqZWN0KCJ1c2VyMSIsIHVzZXIxLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6
OmVuY29kZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2Rp
bmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
cihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkp
LCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworICAgIGJvb2wgc3VjY2VzczsKKyAgICBLZXllZENv
ZGluZ1Rlc3RPYmplY3QgZGVjb2RlZFVzZXIwLCBkZWNvZGVkVXNlcjE7CisKKyAgICBzdWNjZXNz
ID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0KCJ1c2VyMCIsIGRlY29kZWRVc2VyMCwgS2V5ZWRDb2Rp
bmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVY
UEVDVF9FUShkZWNvZGVkVXNlcjAsIHVzZXIwKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5k
ZWNvZGVPYmplY3QoInVzZXIxIiwgZGVjb2RlZFVzZXIxLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6
OmRlY29kZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGRlY29k
ZWRVc2VyMSwgdXNlcjEpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRPYmplY3Rz
KQoreworICAgIFZlY3RvcjxLZXllZENvZGluZ1Rlc3RPYmplY3Q+IHVzZXJzOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgdXNlcnMuYXBwZW5kKEtleWVkQ29kaW5n
VGVzdE9iamVjdCgidXNlcm5hbWUiLCBpKSk7CisKKyAgICBhdXRvIGVuY29kZXIgPSBXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJ1
c2VycyIsIHVzZXJzLmJlZ2luKCksIHVzZXJzLmVuZCgpLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6
OmVuY29kZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2Rp
bmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
cihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkp
LCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworICAgIFZlY3RvcjxLZXllZENvZGluZ1Rlc3RPYmpl
Y3Q+IGRlY29kZWRVc2VyczsKKworICAgIGJvb2wgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZU9i
amVjdHMoInVzZXJzIiwgZGVjb2RlZFVzZXJzLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29k
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKHVzZXJzLCBkZWNv
ZGVkVXNlcnMpOworfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387885</attachid>
            <date>2020-01-15 18:40:06 -0800</date>
            <delta_ts>2020-01-19 17:19:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch-205902-0116.diff</filename>
            <type>text/plain</type>
            <size>28531</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNzEzMWQ2NjVjZi4uOTJlODlhMGI0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0wMS0xNiAgVGFrYXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9yaUBz
b255LmNvbT4KKworICAgICAgICBLZXllZERlY29kZXJHZW5lcmljIGNyYXNoZXMgd2hlbiBpdCBh
Y2Nlc3NlcyBkYXRhIHdpdGggbm9uLWV4aXN0aW5nIGtleQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG51bGwgY2hlY2sgZnVuY3Rpb24gZm9yIEtl
eWVkRGVjb2RlckdlbmVyaWMuCisKKyAgICAgICAgVGVzdDogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0tleWVkQ29kaW5nR2VuZXJpYy5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29k
ZXJHZW5lcmljOjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNv
ZGVyR2VuZXJpYzo6Z2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlU2ltcGxlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQm9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVk
RGVjb2RlckdlbmVyaWM6OmRlY29kZUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVj
b2RlckdlbmVyaWM6OmRlY29kZUZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rl
ckdlbmVyaWM6OmRlY29kZURvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJH
ZW5lcmljOjpkZWNvZGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6YmVnaW5PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJp
Yzo6YmVnaW5BcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJH
ZW5lcmljLmg6CisKIDIwMjAtMDEtMTQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gQWRkIHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMIHN0dWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IDBlNTk3MjMyMWI1Li5iYzU3Y2I3ZTdiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsg
bV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7
IH0KLSAgICBOb2RlJiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuICptX21hcC5nZXQo
a2V5KTsgfQorICAgIE5vZGUqIGdldChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gbV9tYXAu
Z2V0KGtleSk7IH0KIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPE5vZGU+PiBtX21hcDsKQEAgLTE4MSwxMSArMTgxLDM1IEBAIEtleWVkRGVjb2RlckdlbmVy
aWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiAgICAgICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+Citjb25zdCBUKiBLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURpY3Rp
b25hcnlTdGFjayhjb25zdCBTdHJpbmcmIGtleSkKK3sKKyAgICBhdXRvJiBkaWN0aW9uYXJ5ID0g
bV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpOworCisgICAgYXV0byBub2RlID0gZGljdGlvbmFyeS0+
Z2V0KGtleSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBXVEY6OmdldF9pZjxUPigqbm9kZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Citib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVNpbXBsZVZhbHVlKGNvbnN0IFN0cmlu
ZyYga2V5LCBUJiByZXN1bHQpCit7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGlj
dGlvbmFyeVN0YWNrPFQ+KGtleSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmVzdWx0ID0gKnZhbHVlOworICAgIHJldHVybiB0cnVlOworfQorCiBib29s
IEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCB1aW50OF90KiYgZGF0YSwgc2l6ZV90JiBzaXplKQogewotICAgIGF1dG8qIHZhbHVlID0gV1RG
OjpnZXRfaWY8VmVjdG9yPHVpbnQ4X3Q+PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChr
ZXkpKTsKKyAgICBhdXRvIHZhbHVlID0gZ2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2s8VmVj
dG9yPHVpbnQ4X3Q+PihrZXkpOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIGRhdGEgPSB2YWx1ZS0+ZGF0YSgpOwogICAgIHNpemUgPSB2YWx1ZS0+c2l6ZSgp
OwogICAgIHJldHVybiB0cnVlOwpAQCAtMTkzLDgxICsyMTcsNTAgQEAgYm9vbCBLZXllZERlY29k
ZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCom
IGRhdGEsIHMKIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCb29sKGNvbnN0IFN0
cmluZyYga2V5LCBib29sJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
Zjxib29sPihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZh
bHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7CiB9
CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUludDMyKGNvbnN0IFN0cmluZyYg
a2V5LCB1aW50MzJfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8
dWludDMyX3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsK
IH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVVSW50NjQoY29uc3QgU3RyaW5n
JiBrZXksIHVpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
Zjx1aW50NjRfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQp
OwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUludDMyKGNvbnN0IFN0cmlu
ZyYga2V5LCBpbnQzMl90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9p
ZjxpbnQzMl90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAo
IXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7
CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50NjQoY29uc3QgU3RyaW5n
JiBrZXksIGludDY0X3QmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lm
PGludDY0X3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsK
IH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVGbG9hdChjb25zdCBTdHJpbmcm
IGtleSwgZmxvYXQmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGZs
b2F0PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAgICBpZiAoIXZhbHVl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVlOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJlc3VsdCk7CiB9CiAK
IGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5
LCBkb3VibGUmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPGRvdWJs
ZT4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2YWx1ZTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5LCByZXN1bHQpOwogfQogCiBi
b29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwg
U3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxTdHJpbmc+
KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwgcmVzdWx0KTsKIH0KIAogYm9v
bCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkKIHsK
LSAgICBhdXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5
Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0byB2YWx1ZSA9
IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5
Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBt
X2RpY3Rpb25hcnlTdGFjay5hcHBlbmQodmFsdWUtPmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTI3OSw5ICsyNzIsMTAgQEAgdm9pZCBLZXllZERlY29kZXJHZW5lcmljOjplbmRPYmpl
Y3QoKQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmJlZ2luQXJyYXkoY29uc3QgU3RyaW5n
JiBrZXkpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxzdGQ6OnVuaXF1ZV9wdHI8
QXJyYXk+PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKKyAgICBhdXRvIHZh
bHVlID0gZ2V0UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2s8c3RkOjp1bmlxdWVfcHRyPEFycmF5
Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBt
X2FycmF5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CiAgICAgbV9hcnJheUluZGV4U3RhY2su
YXBwZW5kKDApOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaAppbmRleCA1NmEyZjkzOGEwNS4u
MTlhMjk5YmRkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWREZWNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oCkBAIC01NSw2ICs1NSwxMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmRBcnJheSgpIG92
ZXJyaWRlOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBjb25zdCBUKiBnZXRQb2lu
dGVyRnJvbURpY3Rpb25hcnlTdGFjayhjb25zdCBTdHJpbmcmIGtleSk7CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIGJvb2wgZGVjb2RlU2ltcGxlVmFsdWUoY29uc3QgU3RyaW5nJiBr
ZXksIFQmIHJlc3VsdCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4gbV9yb290
RGljdGlvbmFyeTsKICAgICBWZWN0b3I8RGljdGlvbmFyeSosIDE2PiBtX2RpY3Rpb25hcnlTdGFj
azsKICAgICBWZWN0b3I8QXJyYXkqLCAxNj4gbV9hcnJheVN0YWNrOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4YmU4YTA4NjRiLi4xOTFmMTQ0
ZjU5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTE2ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29t
b3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVjb2RlckdlbmVyaWMgY3Jhc2hlcyB3aGVu
IGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rpbmcga2V5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5MDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tl
eWVkQ29kaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja0RlY29k
ZWRCeXRlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnRlc3RTaW1wbGVWYWx1ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXll
ZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29kZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXll
ZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29kZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXll
ZENvZGluZ1Rlc3RPYmplY3Q6OktleWVkQ29kaW5nVGVzdE9iamVjdCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVxdWFscyBjb25zdCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpvcGVyYXRvcj09KToKKwogMjAyMC0wMS0xNCAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFN1cHBv
cnQgdGhlIGZlYXR1cmUgZmxhZyBpbiBEdW1wUmVuZGVyVHJlZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQKaW5kZXggYTU3YzczZDg3ZTMuLjk3ZGEwNjBiYWRlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQKQEAgLTEzOCw2ICsxMzgsNyBAQCBpZiAoRU5BQkxFX1dFQkNPUkUpCiAg
ICAgICAgIFRlc3RzL1dlYkNvcmUvSW50UG9pbnQuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUv
SW50UmVjdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRTaXplLmNwcAorICAgICAgICBU
ZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0xheW91
dFVuaXQuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5jcHAKICAg
ICAgICAgVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGEyZDQxZTZjM2ViLi5hMTM0YWEwYzg3YiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyMCw2ICsxMjAsNyBAQAogCQkyNkY1MkVCMjE4Mjg4RjI0MDAyM0Q0MTIgLyog
Z2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNTJFQjAxODI4OEYwRjAwMjNENDEyIC8qIGdl
b2xvY2F0aW9uV2F0Y2hQb3NpdGlvbi5odG1sICovOyB9OwogCQkyNkY1MkVCMzE4Mjg4RjI0MDAy
M0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uV2l0aEhpZ2hBY2N1cmFjeS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjUy
RUIxMTgyODhGMEYwMDIzRDQxMiAvKiBnZW9sb2NhdGlvbldhdGNoUG9zaXRpb25XaXRoSGlnaEFj
Y3VyYWN5Lmh0bWwgKi87IH07CiAJCTI3MkE2OTEwMjJGMDEyREEwMDBGREFCQiAvKiBQYWdlTG9h
ZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI3MkE2OTBGMjJGMDEyQzcwMDBGREFCQiAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLzsgfTsKKwkJ
Mjc4RTNFMTkyM0NEODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI3OEUzRTE4MjNDRDgyRkEwMDVBNkI4
MCAvKiBLZXllZENvZGluZy5jcHAgKi87IH07CiAJCTI5MEE5QkI5MTczNUY2MzgwMEQ3MUJCQyAv
KiBPcGVuTmV3V2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjkwQTlCQjgxNzM1RjQyMzAwRDcxQkJDIC8qIE9wZW5OZXdXaW5k
b3cuaHRtbCAqLzsgfTsKIAkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8qIGN1c3RvbS1wcm90
b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0b20tcHJvdG9j
b2wtc3luYy14aHIuaHRtbCAqLzsgfTsKIAkJMjk3MjM0QjcxNzNBRkFDNzAwOTgzNjAxIC8qIEN1
c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NzIzNEI1MTczQUZBQzcwMDk4MzYwMSAvKiBD
dXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgKi87IH07CkBAIC0xNjI3LDYg
KzE2MjgsNyBAQAogCQkyNkY2RTFFRjFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGQU1pbmltaXplci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI3MkE2OTBGMjJGMDEyQzcwMDBGREFCQiAv
KiBQYWdlTG9hZFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBhZ2VMb2FkU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNzhERTY0
QjIyQjhENjExMDA0RTBFN0EgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyNzhFM0UxODIzQ0Q4MkZBMDA1QTZCODAgLyogS2V5ZWRDb2Rp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS2V5ZWRDb2Rpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBBOUJCNTE3MzVERThBMDBENzFC
QkMgLyogQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsb3NlTmV3V2luZG93SW5OYXZpZ2F0
aW9uUG9saWN5RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MEE5
QkI4MTczNUY0MjMwMEQ3MUJCQyAvKiBPcGVuTmV3V2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBPcGVuTmV3V2luZG93Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0b20tcHJvdG9jb2wtc3luYy14
aHIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tcHJvdG9jb2wtc3lu
Yy14aHIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTQ3LDYgKzMxNDks
NyBAQAogCQkJCTdBOTA5QTc0MUQ4Nzc0NzUwMDdFMTBGOCAvKiBJbnRSZWN0LmNwcCAqLywKIAkJ
CQk3QTkwOUE3NTFEODc3NDc1MDA3RTEwRjggLyogSW50U2l6ZS5jcHAgKi8sCiAJCQkJQ0Q1RkY0
OTYyMTYyRTI3RTAwNEJEODZGIC8qIElTT0JveC5jcHAgKi8sCisJCQkJMjc4RTNFMTgyM0NEODJG
QTAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLywKIAkJCQkxNDQ2NDAxMjE2N0E4MzA1MDAw
QkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkJNkJGNEE2ODIyMzlFRDRDRDAwRTJGNDVC
IC8qIExvZ2dlZEluU3RhdHVzLmNwcCAqLywKIAkJCQkwNzZFNTA3RTFGNDUwMzFFMDA2RTlGNUEg
LyogTG9nZ2luZy5jcHAgKi8sCkBAIC00NzU5LDYgKzQ3NjIsNyBAQAogCQkJCUUzNUZDN0IyMjJC
ODJBNzMwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVyRm9yTm9kZUluV2Vi
RnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3MzIxMTJDRTI5MDAzMDdFODIgLyog
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjc4RTNFMTkyM0NE
ODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjA2MUE0MTFBRTYwMDQ0N0M0QyAvKiBMYXlvdXRNaWxlc3RvbmVzV2l0aEFsbENvbnRlbnRJbkZy
YW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURGMUE0MTFBOTIwMDQ0N0M0QyAvKiBM
YXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5
OCAvKiBMZWdhY3lEcmFnQW5kRHJvcFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGM3MmI1ODE4NzkKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwCkBA
IC0wLDAgKzEsMzIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgY2hlY2tE
ZWNvZGVkQnl0ZXMoY29uc3QgdWludDhfdCogb3JpZ2luYWwsIHNpemVfdCBvcmlnaW5hbFNpemUs
IGNvbnN0IHVpbnQ4X3QqIGRlY29kZWQsIHNpemVfdCBkZWNvZGVkU2l6ZSkKK3sKKyAgICBpZiAo
b3JpZ2luYWxTaXplICE9IGRlY29kZWRTaXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gIXN0ZDo6bWVtY21wKG9yaWdpbmFsLCBkZWNvZGVkLCBvcmlnaW5hbFNpemUpOwor
fQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRCeXRlcykKK3sKKyAgICBjb25zdCB1aW50
OF90IGRhdGFbXSA9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHhkZSwgMHhhZCwgMHhiZSwg
MHhlZiB9OworICAgIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChk
YXRhKTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aE9uZSA9IDE7CisgICAgY29uc3Qgc2l6
ZV90IGRhdGFMZW5ndGhaZXJvID0gMDsKKworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZUJ5dGVzKCJkYXRhIiwg
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoImRhdGEtc2l6ZTAi
LCBkYXRhLCBkYXRhTGVuZ3RoWmVybyk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoImRhdGEt
c2l6ZTEiLCBkYXRhLCBkYXRhTGVuZ3RoT25lKTsKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBl
bmNvZGVyLT5maW5pc2hFbmNvZGluZygpOworCisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVu
Y29kZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBib29s
IHN1Y2Nlc3M7CisgICAgY29uc3QgdWludDhfdCogYnVmZmVyOworICAgIHNpemVfdCBzaXplOwor
CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJ5dGVzKCJkYXRhIiwgYnVmZmVyLCBzaXpl
KTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwg
c2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoY2hlY2tEZWNvZGVkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0
aCwgYnVmZmVyLCBzaXplKSk7CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMo
ImRhdGEtc2l6ZTAiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwor
ICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoWmVybywgc2l6ZSk7CisKKyAgICBzdWNjZXNzID0gZGVj
b2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEtc2l6ZTEiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoT25lLCBzaXplKTsKKyAg
ICBFWFBFQ1RfVFJVRShjaGVja0RlY29kZWRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoT25lLCBidWZm
ZXIsIHNpemUpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kZUZ1bmN0aW9uVHlwZSwg
dHlwZW5hbWUgRGVjb2RlVmFsdWVUeXBlLCB0eXBlbmFtZSBFbmNvZGVWYWx1ZVR5cGU+Citib29s
IHRlc3RTaW1wbGVWYWx1ZShFbmNvZGVGdW5jdGlvblR5cGUgZW5jb2RlLCBib29sIChXZWJDb3Jl
OjpLZXllZERlY29kZXI6OiogZGVjb2RlKShjb25zdCBTdHJpbmcmLCBEZWNvZGVWYWx1ZVR5cGUm
KSwgRW5jb2RlVmFsdWVUeXBlIHZhbHVlKQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIChlbmNvZGVyLmdldCgpLT4qZW5jb2RlKSgi
a2V5IiwgdmFsdWUpOworCisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNo
RW5jb2RpbmcoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0
YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIERlY29kZVZhbHVlVHlwZSBkZWNv
ZGVkVmFsdWU7CisgICAgYm9vbCBzdWNjZXNzID0gKGRlY29kZXIuZ2V0KCktPipkZWNvZGUpKCJr
ZXkiLCBkZWNvZGVkVmFsdWUpOworCisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxF
bmNvZGVWYWx1ZVR5cGUsIFN0cmluZz4gJiYgc3RkOjppc19zYW1lX3Y8RGVjb2RlVmFsdWVUeXBl
LCBTdHJpbmc+KSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkgJiYgZGVjb2RlZFZhbHVl
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBkZWNvZGVkVmFsdWUgPT0gdmFsdWU7Cisg
ICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8RW5jb2RlVmFsdWVUeXBlLCBE
ZWNvZGVWYWx1ZVR5cGU+KQorICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBkZWNvZGVkVmFs
dWUgPT0gdmFsdWU7CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworVEVTVChLZXllZENvZGlu
ZywgU2V0QW5kR2V0Qm9vbCkKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlQm9vbCwgdHJ1ZSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVCb29sLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVCb29sLCBmYWxzZSkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVCb29sLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVy
OjpkZWNvZGVJbnQzMiwgdHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUo
JldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlVUludDMyLCB0cnVlKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVCb29sLCAmV2ViQ29yZTo6S2V5ZWREZWNv
ZGVyOjpkZWNvZGVJbnQ2NCwgdHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFs
dWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlVUludDY0LCB0cnVlKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVCb29sLCAmV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVGbG9hdCwgdHJ1ZSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCB0cnVlKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1w
bGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVCb29sLCAmV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIHRydWUpKTsKK30KKworVEVTVChLZXllZENvZGluZywg
U2V0QW5kR2V0SW50MzIpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVJbnQzMiwgMCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlSW50MzIsIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZUludDMyLCAtMSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
SW50MzIsIElOVF9NSU4pKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZUludDMyLCBJTlRfTUFYKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNv
ZGVyOjpkZWNvZGVCb29sLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlU3RyaW5nLCAwKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldFVJ
bnQzMikKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50
MzIsIHVpbnQzMl90KDApKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlVUludDMyLCB1aW50MzJfdCgxKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQzMiwgVUlOVDMyX01BWCkpOworCisgICAgRVhQRUNUX0ZBTFNF
KHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZX
ZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIHVpbnQzMl90KDApKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVV
SW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVN0cmluZywgdWludDMyX3QoMCkp
KTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0SW50NjQpCit7CisgICAgRVhQRUNU
X1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0
LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgaW50NjRfdCgwKSkpOworICAg
IEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNv
ZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIGludDY0X3QoLTIp
KSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgaW50
NjRfdCgyKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50
NjQsIElOVDY0X01JTikpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29y
ZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlSW50NjQsIElOVDY0X01BWCkpOworCisgICAgRVhQRUNUX0ZBTFNFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlQm9vbCwgaW50NjRfdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2lt
cGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50NjQsICZXZWJDb3JlOjpL
ZXllZERlY29kZXI6OmRlY29kZVN0cmluZywgaW50NjRfdCgwKSkpOworfQorCitURVNUKEtleWVk
Q29kaW5nLCBTZXRBbmRHZXRVSW50NjQpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlVUludDY0LCB1aW50NjRfdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRl
c3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdWludDY0X3QoMSkpKTsKKyAgICBFWFBF
Q1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUlu
dDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIFVJTlQ2NF9NQVgpKTsK
KworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlVUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVCb29sLCB1aW50
NjRfdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2RlVUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVT
dHJpbmcsIHVpbnQ2NF90KDApKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEZs
b2F0KQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQs
IGZsb2F0KDApKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVG
bG9hdCwgZmxvYXQoMS41KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlRmxvYXQsIGZsb2F0KC0xLjUpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVGbG9hdCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omxvd2VzdCgp
KSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVGbG9hdCwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNp
bXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVGbG9hdCwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1h
eCgpKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXll
ZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVCb29s
LCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZVN0cmluZywgZmxvYXQoMCkpKTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0RG91
YmxlKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJs
ZSwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2RlRG91YmxlLCBkb3VibGUoMS4yNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFs
dWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVEb3VibGUsIGRvdWJsZSgtMS4yNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bG93ZXN0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNv
cmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVEb3VibGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWluKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
RG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCkpKTsKKworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVCb29sLCBkb3VibGUoMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVz
dFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNv
cmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCBkb3VibGUoMCkpKTsKK30KKworVEVTVChL
ZXllZENvZGluZywgU2V0QW5kR2V0U3RyaW5nKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1w
bGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpL
ZXllZERlY29kZXI6OmRlY29kZVN0cmluZywgU3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIFN0cmluZygiV2ViS2l0IikpKTsKKwor
ICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVCb29sLCBTdHJpbmco
KSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwg
U3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
VUludDMyLCBTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVy
OjpkZWNvZGVJbnQ2NCwgU3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlVUludDY0LCBTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRSh0ZXN0
U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVGbG9hdCwgU3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0UodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVN0cmluZywg
JldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBTdHJpbmcoKSkpOworfQorCitU
RVNUKEtleWVkQ29kaW5nLCBHZXROb25FeGlzdGluZ1JlY29yZCkKK3sKKyAgICBhdXRvIGVuY29k
ZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGVCb29sKCJib29sLXRydWUiLCB0cnVlKTsKKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVu
Y29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29k
ZWRCdWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisKKyAgICBib29sIHN1
Y2Nlc3MsIGJvb2xWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQm9vbCgiYm9v
bC10cnVlIiwgYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBF
Q1RfRVEodHJ1ZSwgYm9vbFZhbHVlKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVC
b29sKCJuby1leGlzdC1rZXkiLCBib29sVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNz
KTsKKworICAgIGludDMyX3QgaW50MzJWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVj
b2RlSW50MzIoIm5vLWV4aXN0LWtleSIsIGludDMyVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShz
dWNjZXNzKTsKKworICAgIHVpbnQzMl90IHVpbnQzMlZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNv
ZGVyLT5kZWNvZGVVSW50MzIoIm5vLWV4aXN0LWtleSIsIHVpbnQzMlZhbHVlKTsKKyAgICBFWFBF
Q1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAgICBpbnQ2NF90IGludDY0VmFsdWU7CisgICAgc3VjY2Vz
cyA9IGRlY29kZXItPmRlY29kZUludDY0KCJuby1leGlzdC1rZXkiLCBpbnQ2NFZhbHVlKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAgICB1aW50NjRfdCB1aW50NjRWYWx1ZTsKKyAg
ICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlVUludDY0KCJuby1leGlzdC1rZXkiLCB1aW50NjRW
YWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgZmxvYXQgZmxvYXRWYWx1
ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlRmxvYXQoIm5vLWV4aXN0LWtleSIsIGZs
b2F0VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGRvdWJsZSBkb3Vi
bGVWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlRG91YmxlKCJuby1leGlzdC1r
ZXkiLCBkb3VibGVWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgY29u
c3QgdWludDhfdCogYnVmZmVyOworICAgIHNpemVfdCBzaXplOworICAgIHN1Y2Nlc3MgPSBkZWNv
ZGVyLT5kZWNvZGVCeXRlcygibm8tZXhpc3Qta2V5IiwgYnVmZmVyLCBzaXplKTsKKyAgICBFWFBF
Q1RfRkFMU0Uoc3VjY2Vzcyk7Cit9CisKK3N0cnVjdCBLZXllZENvZGluZ1Rlc3RPYmplY3Qgewor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShXZWJDb3JlOjpLZXllZEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgZW5jb2Rl
ci5lbmNvZGVTdHJpbmcoIm5hbWUiLCBvYmplY3QubV9uYW1lKTsKKyAgICAgICAgZW5jb2Rlci5l
bmNvZGVJbnQzMigiYWdlIiwgb2JqZWN0Lm1fYWdlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoV2ViQ29yZTo6S2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBLZXllZENvZGluZ1Rlc3RP
YmplY3QmIG9iamVjdCkKKyAgICB7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmco
Im5hbWUiLCBvYmplY3QubV9uYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUludDMyKCJhZ2UiLCBvYmplY3QubV9hZ2UpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBL
ZXllZENvZGluZ1Rlc3RPYmplY3QoKSB7IH07CisgICAgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0KFN0
cmluZyBuYW1lLCBpbnQgYWdlKQorICAgICAgICA6IG1fbmFtZShuYW1lKQorICAgICAgICAsIG1f
YWdlKGFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgS2V5ZWRDb2Rp
bmdUZXN0T2JqZWN0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAobV9uYW1l
ID09IG90aGVyLm1fbmFtZSkgJiYgKG1fYWdlID09IG90aGVyLm1fYWdlKTsKKyAgICB9CisKKyAg
ICBTdHJpbmcgbV9uYW1lOworICAgIGludDMyX3QgbV9hZ2U7Cit9OworCitzdGF0aWMgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCYgbE9iamVjdCwgY29uc3QgS2V5
ZWRDb2RpbmdUZXN0T2JqZWN0JiByT2JqZWN0KQoreworICAgIHJldHVybiBsT2JqZWN0LmVxdWFs
cyhyT2JqZWN0KTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0T2JqZWN0KQorewor
ICAgIGNvbnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCB1c2VyMCgiTm9haCIsIDI4KTsKKyAgICBj
b25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QgdXNlcjEoIkVtbWEiLCAzMSk7CisKKyAgICBhdXRv
IGVuY29kZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVPYmplY3QoInVzZXIwIiwgdXNlcjAsIEtleWVkQ29kaW5nVGVzdE9iamVjdDo6ZW5j
b2RlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3QoInVzZXIxIiwgdXNlcjEsIEtleWVkQ29k
aW5nVGVzdE9iamVjdDo6ZW5jb2RlKTsKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVy
LT5maW5pc2hFbmNvZGluZygpOworCisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRC
dWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisgICAgYm9vbCBzdWNjZXNz
OworICAgIEtleWVkQ29kaW5nVGVzdE9iamVjdCBkZWNvZGVkVXNlcjAsIGRlY29kZWRVc2VyMTsK
KworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVPYmplY3QoInVzZXIwIiwgZGVjb2RlZFVz
ZXIwLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29kZSk7CisgICAgRVhQRUNUX1RSVUUoc3Vj
Y2Vzcyk7CisgICAgRVhQRUNUX0VRKGRlY29kZWRVc2VyMCwgdXNlcjApOworCisgICAgc3VjY2Vz
cyA9IGRlY29kZXItPmRlY29kZU9iamVjdCgidXNlcjEiLCBkZWNvZGVkVXNlcjEsIEtleWVkQ29k
aW5nVGVzdE9iamVjdDo6ZGVjb2RlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBF
WFBFQ1RfRVEoZGVjb2RlZFVzZXIxLCB1c2VyMSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNl
dEFuZEdldE9iamVjdHMpCit7CisgICAgVmVjdG9yPEtleWVkQ29kaW5nVGVzdE9iamVjdD4gdXNl
cnM7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgICAgICB1c2Vycy5hcHBl
bmQoS2V5ZWRDb2RpbmdUZXN0T2JqZWN0KCJ1c2VybmFtZSIsIGkpKTsKKworICAgIGF1dG8gZW5j
b2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVu
Y29kZU9iamVjdHMoInVzZXJzIiwgdXNlcnMuYmVnaW4oKSwgdXNlcnMuZW5kKCksIEtleWVkQ29k
aW5nVGVzdE9iamVjdDo6ZW5jb2RlKTsKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVy
LT5maW5pc2hFbmNvZGluZygpOworCisgICAgYXV0byBkZWNvZGVyID0gV2ViQ29yZTo6S2V5ZWRE
ZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVuY29kZWRC
dWZmZXItPmRhdGEoKSksIGVuY29kZWRCdWZmZXItPnNpemUoKSk7CisgICAgVmVjdG9yPEtleWVk
Q29kaW5nVGVzdE9iamVjdD4gZGVjb2RlZFVzZXJzOworCisgICAgYm9vbCBzdWNjZXNzID0gZGVj
b2Rlci0+ZGVjb2RlT2JqZWN0cygidXNlcnMiLCBkZWNvZGVkVXNlcnMsIEtleWVkQ29kaW5nVGVz
dE9iamVjdDo6ZGVjb2RlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1Rf
RVEodXNlcnMsIGRlY29kZWRVc2Vycyk7Cit9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388199</attachid>
            <date>2020-01-19 17:19:09 -0800</date>
            <delta_ts>2020-01-19 23:06:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205902-20200120101557.patch</filename>
            <type>text/plain</type>
            <size>26990</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhkOTA1MzkxNmY2ODhh
OGMwYWNkNjU4MTg3MDc4MzVkYTE2YjMzYy4uZmVlM2UxMWRkZDI1YzU4YTRhMDczZjZiYTc2NWI0
MThkNWI3NzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAxLTE5ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVj
b2RlckdlbmVyaWMgY3Jhc2hlcyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rp
bmcga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbnVsbCBjaGVjayBmdW5jdGlvbiBmb3IgS2V5ZWREZWNvZGVyR2VuZXJpYy4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNw
cAorCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURp
Y3Rpb25hcnlTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVTaW1wbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmlj
OjpkZWNvZGVCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVCb29sKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZVVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVV
SW50NjQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50NjQp
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRG91YmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaDoKKwogMjAyMC0wMS0xNyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjU0NDgzKTogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zb3J0ZWQtYmVmb3JlLWRpc3BhdGNo
Lmh0bWwgYmVjYW1lIHZlcnkgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IDBlNTk3MjMyMWI1Zjcz
ZjU3MmJkNzk2NTg4MTFmMDAzYTk1ZWQ0OTIuLmJjNTdjYjdlN2I5MDZkNmM4NGVmY2EwOTc3NWQw
N2FkY2RjZjNjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtl
eSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOyB9Ci0gICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJl
dHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KKyAgICBOb2RlKiBnZXQoY29uc3QgU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxOb2RlPj4gbV9tYXA7CkBAIC0xODEsMTEgKzE4MSwzNSBAQCBL
ZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogICAgICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0
UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0
byYgZGljdGlvbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKKworICAgIGF1dG8gbm9k
ZSA9IGRpY3Rpb25hcnktPmdldChrZXkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gV1RGOjpnZXRfaWY8VD4oKm5vZGUpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTaW1wbGVW
YWx1ZShjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0KQoreworICAgIGF1dG8gdmFsdWUgPSBn
ZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxUPihrZXkpOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6ZSkKIHsKLSAgICBh
dXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0aW9uYXJ5U3Rh
Y2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGlj
dGlvbmFyeVN0YWNrPFZlY3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBkYXRhID0gdmFsdWUtPmRhdGEoKTsKICAgICBzaXpl
ID0gdmFsdWUtPnNpemUoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Myw4MSArMjE3LDUwIEBA
IGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBzCiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVj
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZh
bHVlID0gV1RGOjpnZXRfaWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5
KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9
ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUo
a2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVVJbnQz
Mihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1
ZSA9IFdURjo6Z2V0X2lmPHVpbnQzMl90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChr
ZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1
ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUlu
dDY0KGNvbnN0IFN0cmluZyYga2V5LCB1aW50NjRfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZh
bHVlID0gV1RGOjpnZXRfaWY8dWludDY0X3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0
KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1
bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZh
bHVlKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJ
bnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZh
bHVlID0gV1RGOjpnZXRfaWY8aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQo
a2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3Vs
dCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFs
dWUoa2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUlu
dDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFs
dWUgPSBXVEY6OmdldF9pZjxpbnQ2NF90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChr
ZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1
ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxv
YXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUg
PSBXVEY6OmdldF9pZjxmbG9hdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2
YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5
LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShj
b25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBX
VEY6OmdldF9pZjxkb3VibGU+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwot
ICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFs
dWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwg
cmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIFN0cmluZyYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RG
OjpnZXRfaWY8U3RyaW5nPihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAg
ICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVl
OwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJl
c3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3Qg
U3RyaW5nJiBrZXkpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxzdGQ6OnVuaXF1
ZV9wdHI8RGljdGlvbmFyeT4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwor
ICAgIGF1dG8gdmFsdWUgPSBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxzdGQ6OnVuaXF1
ZV9wdHI8RGljdGlvbmFyeT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNzksOSArMjcyLDEwIEBAIHZvaWQgS2V5ZWREZWNvZGVy
R2VuZXJpYzo6ZW5kT2JqZWN0KCkKIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFy
cmF5KGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8
c3RkOjp1bmlxdWVfcHRyPEFycmF5Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5
KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0ZDo6
dW5pcXVlX3B0cjxBcnJheT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgbV9hcnJheVN0YWNrLmFwcGVuZCh2YWx1ZS0+Z2V0KCkpOwogICAgIG1f
YXJyYXlJbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKaW5k
ZXggNTZhMmY5MzhhMDU0YjQ3N2NhZGRkZTAzNzk3MWU1MzEyZjRlMmRjYi4uMTlhMjk5YmRkOTIy
OTlkMjI0MDk4YWI0NDhjZjJlMzVjOTYwM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKQEAgLTU1LDYgKzU1LDEy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2
b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IGNvbnN0IFQqIGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKGNvbnN0IFN0cmluZyYga2V5
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBkZWNvZGVTaW1wbGVWYWx1
ZShjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aWN0aW9uYXJ5PiBtX3Jvb3REaWN0aW9uYXJ5OwogICAgIFZlY3RvcjxEaWN0aW9uYXJ5KiwgMTY+
IG1fZGljdGlvbmFyeVN0YWNrOwogICAgIFZlY3RvcjxBcnJheSosIDE2PiBtX2FycmF5U3RhY2s7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDUy
NTg5NDBkNTNmMmE5OWY0YzE4NmNmMzA0YjNlOTNlM2I0NmExMS4uYjFlYjA3ODkyN2Q0NDU5MTFj
Y2Q1M2VkZTFiMjZhOWY4OGI3Nzg5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTE5ICBUYWthc2hpIEtv
bW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVjb2Rlckdl
bmVyaWMgY3Jhc2hlcyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rpbmcga2V5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjaGVja0RlY29kZWRCeXRlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RTaW1wbGVWYWx1ZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29kZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29kZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OktleWVkQ29kaW5nVGVzdE9iamVj
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVxdWFs
cyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcGVyYXRvcj09KToKKwogMjAyMC0w
MS0xNyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBhc3NlcnRpb24gd2hlbiB0ZXN0IGZhc3QvZXZlbnRzL2lvcy9yb3RhdGlvbi9iYXNpYy1y
b3RhdGlvbi5odG1sIGlzIGZvbGxvd2VkIGJ5IGZhc3QvZXZlbnRzL2lvcy9yb3RhdGlvbi9kby1u
b3Qtc2hyaW5rLXRvLWZpdC1jb250ZW50LWFmdGVyLXJvdGF0aW9uLmh0bWwKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CmluZGV4IGE1N2M3M2Q4N2UzNzA5YjQ4MDU5MGNkNTI1NmYxMmZkMDg5
ZjMwM2EuLjk3ZGEwNjBiYWRlZDU4ZmFjYWFjYzhjNzc3NzUwYTVjMDJhZWNhMzYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTM4LDYgKzEzOCw3IEBAIGlmIChFTkFCTEVfV0VC
Q09SRSkKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRQb2ludC5jcHAKICAgICAgICAgVGVzdHMv
V2ViQ29yZS9JbnRSZWN0LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFNpemUuY3BwCisg
ICAgICAgIFRlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNv
cmUvTGF5b3V0VW5pdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjdmOWY5ODg0YTU3MmQ5YTQ2MjY1MzQ0NThlNDViZDBmZTNj
M2Q4MC4uMGZkNzFmZTgzZDczMDU1MTVkMmQ2NDAxNWYzNzk1YzgzNDU4NDczZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMCw2ICsxMjAsNyBAQAogCQkyNkY1MkVCMjE4Mjg4RjI0MDAy
M0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNTJFQjAxODI4OEYwRjAwMjNE
NDEyIC8qIGdlb2xvY2F0aW9uV2F0Y2hQb3NpdGlvbi5odG1sICovOyB9OwogCQkyNkY1MkVCMzE4
Mjg4RjI0MDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uV2l0aEhpZ2hBY2N1cmFj
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI2RjUyRUIxMTgyODhGMEYwMDIzRDQxMiAvKiBnZW9sb2NhdGlvbldhdGNoUG9zaXRpb25X
aXRoSGlnaEFjY3VyYWN5Lmh0bWwgKi87IH07CiAJCTI3MkE2OTEwMjJGMDEyREEwMDBGREFCQiAv
KiBQYWdlTG9hZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI3MkE2OTBGMjJGMDEyQzcwMDBGREFCQiAvKiBQYWdlTG9hZFN0YXRlLmNwcCAq
LzsgfTsKKwkJMjc4RTNFMTkyM0NEODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI3OEUzRTE4MjNDRDgy
RkEwMDVBNkI4MCAvKiBLZXllZENvZGluZy5jcHAgKi87IH07CiAJCTI5MEE5QkI5MTczNUY2Mzgw
MEQ3MUJCQyAvKiBPcGVuTmV3V2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwQTlCQjgxNzM1RjQyMzAwRDcxQkJDIC8qIE9w
ZW5OZXdXaW5kb3cuaHRtbCAqLzsgfTsKIAkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8qIGN1
c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0
b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCAqLzsgfTsKIAkJMjk3MjM0QjcxNzNBRkFDNzAwOTgz
NjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NzIzNEI1MTczQUZBQzcwMDk4
MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgKi87IH07CkBA
IC0xMTU3LDcgKzExNTgsNiBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
OwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk0NkMzQUVCMzIz
RDBFNTI5MDAxQjA2ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTVBODE3RkYyMTgxMDIxQTAwMDRBMzlBIC8qIDEwMHgxMDAtcmVkLnRnYSBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFj
dGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU1QTgxODAwMjE4MTAyMjEwMDA0
QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTEyMDQs
NiArMTIwNCw3IEBACiAJCQkJMkUxNEE1MjkxRDNGRTk2QjAwMTBGMzVCIC8qIGF1dG9wbGF5aW5n
LXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
MDFFRjQ2OTZCMDA4M0ZBMDggLyogYmFja2dyb3VuZC1pbWFnZS1saW5rLWFuZC1pbnB1dC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBC
YWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJNDZDM0FFQjMyM0QwRTUyOTAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTJERTcxQjAwMUQ0OUMzRUQwMDkwNDA5NCAvKiBibGlu
a2luZy1kaXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3QzQ4NkJBMTFBQTEyNTY3
MDAzRjZGOUIgLyogYnVuZGxlLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQky
NkRGNUE2MzE1QTJBMjdFMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTYzMSw2ICsxNjMyLDcgQEAKIAkJ
MjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkFNaW5pbWl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyNzJBNjkwRjIyRjAxMkM3MDAwRkRBQkIgLyogUGFnZUxvYWRTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTG9hZFN0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjc4REU2NEIyMkI4RDYxMTAwNEUw
RTdBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjc4RTNFMTgyM0NEODJGQTAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtleWVkQ29kaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkwQTlCQjUxNzM1REU4QTAwRDcxQkJDIC8qIENsb3NlTmV3
V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDbG9zZU5ld1dpbmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBBOUJCODE3MzVGNDIzMDBE
NzFCQkMgLyogT3Blbk5ld1dpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
T3Blbk5ld1dpbmRvdy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBGNDI3
NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE1Myw2ICszMTU1LDcgQEAKIAkJCQk3QTkw
OUE3NDFEODc3NDc1MDA3RTEwRjggLyogSW50UmVjdC5jcHAgKi8sCiAJCQkJN0E5MDlBNzUxRDg3
NzQ3NTAwN0UxMEY4IC8qIEludFNpemUuY3BwICovLAogCQkJCUNENUZGNDk2MjE2MkUyN0UwMDRC
RDg2RiAvKiBJU09Cb3guY3BwICovLAorCQkJCTI3OEUzRTE4MjNDRDgyRkEwMDVBNkI4MCAvKiBL
ZXllZENvZGluZy5jcHAgKi8sCiAJCQkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91
dFVuaXQuY3BwICovLAogCQkJCTZCRjRBNjgyMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBMb2dnZWRJblN0
YXR1cy5jcHAgKi8sCiAJCQkJMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3Bw
ICovLApAQCAtNDc2Nyw2ICs0NzcwLDcgQEAKIAkJCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTgg
LyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QzQxQTQxMUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5wdXRU
ZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI3OEUzRTE5MjNDRDg0MkYwMDVBNkI4MCAv
KiBLZXllZENvZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNjFBNDExQUU2MDA0
NDdDNEMgLyogTGF5b3V0TWlsZXN0b25lc1dpdGhBbGxDb250ZW50SW5GcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VERjFBNDExQTkyMDA0NDdDNEMgLyogTGF5b3V0VW5pdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJh
Z0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWViNDI5NTU5ZmQ0
YzFiMGM3MDQ3ZmJjZDlhMDc2Y2MzYWQ2NDc4ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZy5jcHAKQEAgLTAsMCArMSwyODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2Vi
Q29yZS9LZXllZENvZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Cisj
aW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBjaGVja0RlY29kZWRCeXRlcyhj
b25zdCB1aW50OF90KiBvcmlnaW5hbCwgc2l6ZV90IG9yaWdpbmFsU2l6ZSwgY29uc3QgdWludDhf
dCogZGVjb2RlZCwgc2l6ZV90IGRlY29kZWRTaXplKQoreworICAgIGlmIChvcmlnaW5hbFNpemUg
IT0gZGVjb2RlZFNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3Rk
OjptZW1jbXAob3JpZ2luYWwsIGRlY29kZWQsIG9yaWdpbmFsU2l6ZSk7Cit9CisKK1RFU1QoS2V5
ZWRDb2RpbmcsIFNldEFuZEdldEJ5dGVzKQoreworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YVtdID0g
eyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweGRlLCAweGFkLCAweGJlLCAweGVmIH07CisgICAg
Y29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGRhdGEpOworICAgIGNv
bnN0IHNpemVfdCBkYXRhTGVuZ3RoT25lID0gMTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0
aFplcm8gPSAwOworCisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoImRhdGEiLCBkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YS1zaXplMCIsIGRhdGEsIGRhdGFM
ZW5ndGhaZXJvKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YS1zaXplMSIsIGRhdGEs
IGRhdGFMZW5ndGhPbmUpOworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlz
aEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+
ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJvb2wgc3VjY2VzczsKKyAg
ICBjb25zdCB1aW50OF90KiBidWZmZXI7CisgICAgc2l6ZV90IHNpemU7CisKKyAgICBzdWNjZXNz
ID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja0RlY29kZWRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoLCBidWZmZXIsIHNp
emUpKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVCeXRlcygiZGF0YS1zaXplMCIs
IGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VR
KGRhdGFMZW5ndGhaZXJvLCBzaXplKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVC
eXRlcygiZGF0YS1zaXplMSIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGhPbmUsIHNpemUpOworICAgIEVYUEVDVF9UUlVF
KGNoZWNrRGVjb2RlZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGhPbmUsIGJ1ZmZlciwgc2l6ZSkpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RlRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBEZWNv
ZGVWYWx1ZVR5cGUsIHR5cGVuYW1lIEVuY29kZVZhbHVlVHlwZT4KK2Jvb2wgdGVzdFNpbXBsZVZh
bHVlKEVuY29kZUZ1bmN0aW9uVHlwZSBlbmNvZGUsIGJvb2wgKFdlYkNvcmU6OktleWVkRGVjb2Rl
cjo6KiBkZWNvZGUpKGNvbnN0IFN0cmluZyYsIERlY29kZVZhbHVlVHlwZSYpLCBFbmNvZGVWYWx1
ZVR5cGUgdmFsdWUpCit7CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
OjplbmNvZGVyKCk7CisgICAgKGVuY29kZXIuZ2V0KCktPiplbmNvZGUpKCJrZXkiLCB2YWx1ZSk7
CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOwor
ICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVk
QnVmZmVyLT5zaXplKCkpOworCisgICAgRGVjb2RlVmFsdWVUeXBlIGRlY29kZWRWYWx1ZTsKKyAg
ICBib29sIHN1Y2Nlc3MgPSAoZGVjb2Rlci5nZXQoKS0+KmRlY29kZSkoImtleSIsIGRlY29kZWRW
YWx1ZSk7CisKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEVuY29kZVZhbHVlVHlw
ZSwgU3RyaW5nPiAmJiBzdGQ6OmlzX3NhbWVfdjxEZWNvZGVWYWx1ZVR5cGUsIFN0cmluZz4pIHsK
KyAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSAmJiBkZWNvZGVkVmFsdWUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1
Y2Nlc3MgPSBzdWNjZXNzICYmIGRlY29kZWRWYWx1ZSA9PSB2YWx1ZTsKKyAgICB9IGVsc2UgaWYg
Y29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxFbmNvZGVWYWx1ZVR5cGUsIERlY29kZVZhbHVlVHlw
ZT4pCisgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGRlY29kZWRWYWx1ZSA9PSB2YWx1ZTsK
KworICAgIHJldHVybiBzdWNjZXNzOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRC
b29sKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyOjplbmNvZGVCb29sLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVCb29sLCB0
cnVlKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZUJvb2wsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIGZh
bHNlKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEludDMyKQoreworICAgIEVY
UEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJ
bnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50MzIsIDApKTsKKyAgICBFWFBF
Q1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50
MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCAxKSk7CisgICAgRVhQRUNU
X1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMy
LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwgLTEpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIs
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDMyLCBJTlRfTUlOKSk7CisgICAgRVhQ
RUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUlu
dDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQzMiwgSU5UX01BWCkpOworfQor
CitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRVSW50MzIpCit7CisgICAgRVhQRUNUX1RSVUUo
dGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldl
YkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDMyLCB1aW50MzJfdCgwKSkpOworICAgIEVY
UEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVV
SW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgdWludDMyX3QoMSkp
KTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlVUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50MzIsIFVJ
TlQzMl9NQVgpKTsKK30KKworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0SW50NjQpCit7Cisg
ICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVu
Y29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgaW50NjRfdCgw
KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlSW50NjQsIGlu
dDY0X3QoLTIpKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpL
ZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJ
bnQ2NCwgaW50NjRfdCgyKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlSW50NjQsIElOVDY0X01JTikpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlSW50NjQsIElOVDY0X01BWCkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBT
ZXRBbmRHZXRVSW50NjQpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJD
b3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlVUludDY0LCB1aW50NjRfdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZVVJbnQ2NCwgdWludDY0X3QoMSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDY0LCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIFVJTlQ2NF9NQVgpKTsKK30KKworVEVT
VChLZXllZENvZGluZywgU2V0QW5kR2V0RmxvYXQpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNp
bXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0LCAmV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVGbG9hdCwgZmxvYXQoMCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBmbG9hdCgxLjUpKSk7CisgICAgRVhQRUNU
X1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUZsb2F0
LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVGbG9hdCwgZmxvYXQoLTEuNSkpKTsKKyAg
ICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5j
b2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bG93ZXN0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0LCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpKTsKK30KKworVEVTVChLZXllZENvZGluZywg
U2V0QW5kR2V0RG91YmxlKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZURvdWJsZSwgZG91YmxlKDApKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZh
bHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZURvdWJsZSwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBkb3VibGUoMS4yNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2Vi
Q29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGRvdWJsZSgtMS4yNSkpKTsKKyAgICBF
WFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
RG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5
ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWlu
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5j
b2Rlcjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUs
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpKTsKK30KKworVEVTVChLZXllZENv
ZGluZywgU2V0QW5kR2V0U3RyaW5nKQoreworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVTdHJpbmcsICZXZWJDb3JlOjpLZXllZERl
Y29kZXI6OmRlY29kZVN0cmluZywgU3RyaW5nKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2lt
cGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlU3RyaW5nLCAmV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVTdHJpbmcsIFN0cmluZygiV2ViS2l0IikpKTsKK30KKworVEVT
VChLZXllZENvZGluZywgR2V0Tm9uRXhpc3RpbmdSZWNvcmQpCit7CisgICAgYXV0byBlbmNvZGVy
ID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2Rl
Qm9vbCgiYm9vbC10cnVlIiwgdHJ1ZSk7CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNv
ZGVyLT5maW5pc2hFbmNvZGluZygpOworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVk
QnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworCisgICAgYm9vbCBzdWNj
ZXNzLCBib29sVmFsdWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJvb2woImJvb2wt
dHJ1ZSIsIGJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNU
X0VRKHRydWUsIGJvb2xWYWx1ZSk7CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlQm9v
bCgibm8tZXhpc3Qta2V5IiwgYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7
CisKKyAgICBpbnQzMl90IGludDMyVmFsdWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29k
ZUludDMyKCJuby1leGlzdC1rZXkiLCBpbnQzMlZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3Vj
Y2Vzcyk7CisKKyAgICB1aW50MzJfdCB1aW50MzJWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rl
ci0+ZGVjb2RlVUludDMyKCJuby1leGlzdC1rZXkiLCB1aW50MzJWYWx1ZSk7CisgICAgRVhQRUNU
X0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgaW50NjRfdCBpbnQ2NFZhbHVlOworICAgIHN1Y2Nlc3Mg
PSBkZWNvZGVyLT5kZWNvZGVJbnQ2NCgibm8tZXhpc3Qta2V5IiwgaW50NjRWYWx1ZSk7CisgICAg
RVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgdWludDY0X3QgdWludDY0VmFsdWU7CisgICAg
c3VjY2VzcyA9IGRlY29kZXItPmRlY29kZVVJbnQ2NCgibm8tZXhpc3Qta2V5IiwgdWludDY0VmFs
dWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGZsb2F0IGZsb2F0VmFsdWU7
CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUZsb2F0KCJuby1leGlzdC1rZXkiLCBmbG9h
dFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisKKyAgICBkb3VibGUgZG91Ymxl
VmFsdWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZURvdWJsZSgibm8tZXhpc3Qta2V5
IiwgZG91YmxlVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlcjsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rl
ci0+ZGVjb2RlQnl0ZXMoIm5vLWV4aXN0LWtleSIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNU
X0ZBTFNFKHN1Y2Nlc3MpOworfQorCitzdHJ1Y3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIG9iamVjdCkKKyAgICB7CisgICAgICAgIGVuY29kZXIu
ZW5jb2RlU3RyaW5nKCJuYW1lIiwgb2JqZWN0Lm1fbmFtZSk7CisgICAgICAgIGVuY29kZXIuZW5j
b2RlSW50MzIoImFnZSIsIG9iamVjdC5tX2FnZSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wg
ZGVjb2RlKFdlYkNvcmU6OktleWVkRGVjb2RlciYgZGVjb2RlciwgS2V5ZWRDb2RpbmdUZXN0T2Jq
ZWN0JiBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJu
YW1lIiwgb2JqZWN0Lm1fbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGVJbnQzMigiYWdlIiwgb2JqZWN0Lm1fYWdlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgS2V5
ZWRDb2RpbmdUZXN0T2JqZWN0KCkgeyB9OworICAgIEtleWVkQ29kaW5nVGVzdE9iamVjdChTdHJp
bmcgbmFtZSwgaW50IGFnZSkKKyAgICAgICAgOiBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX2Fn
ZShhZ2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEtleWVkQ29kaW5n
VGVzdE9iamVjdCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG1fbmFtZSA9
PSBvdGhlci5tX25hbWUpICYmIChtX2FnZSA9PSBvdGhlci5tX2FnZSk7CisgICAgfQorCisgICAg
U3RyaW5nIG1fbmFtZTsKKyAgICBpbnQzMl90IG1fYWdlOworfTsKKworc3RhdGljIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIGxPYmplY3QsIGNvbnN0IEtleWVk
Q29kaW5nVGVzdE9iamVjdCYgck9iamVjdCkKK3sKKyAgICByZXR1cm4gbE9iamVjdC5lcXVhbHMo
ck9iamVjdCk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldE9iamVjdCkKK3sKKyAg
ICBjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QgdXNlcjAoIk5vYWgiLCAyOCk7CisgICAgY29u
c3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IHVzZXIxKCJFbW1hIiwgMzEpOworCisgICAgYXV0byBl
bmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlT2JqZWN0KCJ1c2VyMCIsIHVzZXIwLCBLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29k
ZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KCJ1c2VyMSIsIHVzZXIxLCBLZXllZENvZGlu
Z1Rlc3RPYmplY3Q6OmVuY29kZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+
ZmluaXNoRW5jb2RpbmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVm
ZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworICAgIGJvb2wgc3VjY2VzczsK
KyAgICBLZXllZENvZGluZ1Rlc3RPYmplY3QgZGVjb2RlZFVzZXIwLCBkZWNvZGVkVXNlcjE7CisK
KyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0KCJ1c2VyMCIsIGRlY29kZWRVc2Vy
MCwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nl
c3MpOworICAgIEVYUEVDVF9FUShkZWNvZGVkVXNlcjAsIHVzZXIwKTsKKworICAgIHN1Y2Nlc3Mg
PSBkZWNvZGVyLT5kZWNvZGVPYmplY3QoInVzZXIxIiwgZGVjb2RlZFVzZXIxLCBLZXllZENvZGlu
Z1Rlc3RPYmplY3Q6OmRlY29kZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQ
RUNUX0VRKGRlY29kZWRVc2VyMSwgdXNlcjEpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRB
bmRHZXRPYmplY3RzKQoreworICAgIFZlY3RvcjxLZXllZENvZGluZ1Rlc3RPYmplY3Q+IHVzZXJz
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgdXNlcnMuYXBwZW5k
KEtleWVkQ29kaW5nVGVzdE9iamVjdCgidXNlcm5hbWUiLCBpKSk7CisKKyAgICBhdXRvIGVuY29k
ZXIgPSBXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGVPYmplY3RzKCJ1c2VycyIsIHVzZXJzLmJlZ2luKCksIHVzZXJzLmVuZCgpLCBLZXllZENvZGlu
Z1Rlc3RPYmplY3Q6OmVuY29kZSk7CisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+
ZmluaXNoRW5jb2RpbmcoKTsKKworICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVm
ZmVyLT5kYXRhKCkpLCBlbmNvZGVkQnVmZmVyLT5zaXplKCkpOworICAgIFZlY3RvcjxLZXllZENv
ZGluZ1Rlc3RPYmplY3Q+IGRlY29kZWRVc2VyczsKKworICAgIGJvb2wgc3VjY2VzcyA9IGRlY29k
ZXItPmRlY29kZU9iamVjdHMoInVzZXJzIiwgZGVjb2RlZFVzZXJzLCBLZXllZENvZGluZ1Rlc3RP
YmplY3Q6OmRlY29kZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VR
KHVzZXJzLCBkZWNvZGVkVXNlcnMpOworfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388206</attachid>
            <date>2020-01-19 23:06:41 -0800</date>
            <delta_ts>2020-01-20 00:07:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205902-20200120160330.patch</filename>
            <type>text/plain</type>
            <size>26502</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhkOTA1MzkxNmY2ODhh
OGMwYWNkNjU4MTg3MDc4MzVkYTE2YjMzYy4uZmVlM2UxMWRkZDI1YzU4YTRhMDczZjZiYTc2NWI0
MThkNWI3NzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTAxLTE5ICBUYWth
c2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVj
b2RlckdlbmVyaWMgY3Jhc2hlcyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rp
bmcga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgbnVsbCBjaGVjayBmdW5jdGlvbiBmb3IgS2V5ZWREZWNvZGVyR2VuZXJpYy4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmdHZW5lcmljLmNw
cAorCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpnZXRQb2ludGVyRnJvbURp
Y3Rpb25hcnlTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVTaW1wbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmlj
OjpkZWNvZGVCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpk
ZWNvZGVCb29sKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29k
ZVVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVV
SW50NjQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50
MzIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlSW50NjQp
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRG91YmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbk9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFycmF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuaDoKKwogMjAyMC0wMS0xNyAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjU0NDgzKTogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zb3J0ZWQtYmVmb3JlLWRpc3BhdGNo
Lmh0bWwgYmVjYW1lIHZlcnkgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IDBlNTk3MjMyMWI1Zjcz
ZjU3MmJkNzk2NTg4MTFmMDAzYTk1ZWQ0OTIuLmJjNTdjYjdlN2I5MDZkNmM4NGVmY2EwOTc3NWQw
N2FkY2RjZjNjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtl
eSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOyB9Ci0gICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJl
dHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KKyAgICBOb2RlKiBnZXQoY29uc3QgU3RyaW5nJiBrZXkp
IHsgcmV0dXJuIG1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxOb2RlPj4gbV9tYXA7CkBAIC0xODEsMTEgKzE4MSwzNSBAQCBL
ZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogICAgICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3QgVCogS2V5ZWREZWNvZGVyR2VuZXJpYzo6Z2V0
UG9pbnRlckZyb21EaWN0aW9uYXJ5U3RhY2soY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgYXV0
byYgZGljdGlvbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKKworICAgIGF1dG8gbm9k
ZSA9IGRpY3Rpb25hcnktPmdldChrZXkpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gV1RGOjpnZXRfaWY8VD4oKm5vZGUpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTaW1wbGVW
YWx1ZShjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0KQoreworICAgIGF1dG8gdmFsdWUgPSBn
ZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxUPihrZXkpOworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9ICp2YWx1ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdComIGRhdGEsIHNpemVfdCYgc2l6ZSkKIHsKLSAgICBh
dXRvKiB2YWx1ZSA9IFdURjo6Z2V0X2lmPFZlY3Rvcjx1aW50OF90Pj4obV9kaWN0aW9uYXJ5U3Rh
Y2subGFzdCgpLT5nZXQoa2V5KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGlj
dGlvbmFyeVN0YWNrPFZlY3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICBpZiAoIXZhbHVlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBkYXRhID0gdmFsdWUtPmRhdGEoKTsKICAgICBzaXpl
ID0gdmFsdWUtPnNpemUoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Myw4MSArMjE3LDUwIEBA
IGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBzCiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVj
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZh
bHVlID0gV1RGOjpnZXRfaWY8Ym9vbD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5
KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9
ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUo
a2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZVVJbnQz
Mihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QmIHJlc3VsdCkKIHsKLSAgICBhdXRvKiB2YWx1
ZSA9IFdURjo6Z2V0X2lmPHVpbnQzMl90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChr
ZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1
ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlVUlu
dDY0KGNvbnN0IFN0cmluZyYga2V5LCB1aW50NjRfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZh
bHVlID0gV1RGOjpnZXRfaWY8dWludDY0X3Q+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0
KGtleSkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1
bHQgPSAqdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZh
bHVlKGtleSwgcmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVJ
bnQzMihjb25zdCBTdHJpbmcmIGtleSwgaW50MzJfdCYgcmVzdWx0KQogewotICAgIGF1dG8qIHZh
bHVlID0gV1RGOjpnZXRfaWY8aW50MzJfdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQo
a2V5KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3Vs
dCA9ICp2YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFs
dWUoa2V5LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZUlu
dDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFs
dWUgPSBXVEY6OmdldF9pZjxpbnQ2NF90PihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChr
ZXkpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0
ID0gKnZhbHVlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1
ZShrZXksIHJlc3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6ZGVjb2RlRmxv
YXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0JiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUg
PSBXVEY6OmdldF9pZjxmbG9hdD4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5KSk7
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9ICp2
YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGVjb2RlU2ltcGxlVmFsdWUoa2V5
LCByZXN1bHQpOwogfQogCiBib29sIEtleWVkRGVjb2RlckdlbmVyaWM6OmRlY29kZURvdWJsZShj
b25zdCBTdHJpbmcmIGtleSwgZG91YmxlJiByZXN1bHQpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBX
VEY6OmdldF9pZjxkb3VibGU+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwot
ICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSAqdmFs
dWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRlY29kZVNpbXBsZVZhbHVlKGtleSwg
cmVzdWx0KTsKIH0KIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpkZWNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBrZXksIFN0cmluZyYgcmVzdWx0KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RG
OjpnZXRfaWY8U3RyaW5nPihtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmdldChrZXkpKTsKLSAg
ICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gKnZhbHVl
OwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBkZWNvZGVTaW1wbGVWYWx1ZShrZXksIHJl
c3VsdCk7CiB9CiAKIGJvb2wgS2V5ZWREZWNvZGVyR2VuZXJpYzo6YmVnaW5PYmplY3QoY29uc3Qg
U3RyaW5nJiBrZXkpCiB7Ci0gICAgYXV0byogdmFsdWUgPSBXVEY6OmdldF9pZjxzdGQ6OnVuaXF1
ZV9wdHI8RGljdGlvbmFyeT4+KG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+Z2V0KGtleSkpOwor
ICAgIGF1dG8gdmFsdWUgPSBnZXRQb2ludGVyRnJvbURpY3Rpb25hcnlTdGFjazxzdGQ6OnVuaXF1
ZV9wdHI8RGljdGlvbmFyeT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKHZhbHVlLT5nZXQoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNzksOSArMjcyLDEwIEBAIHZvaWQgS2V5ZWREZWNvZGVy
R2VuZXJpYzo6ZW5kT2JqZWN0KCkKIAogYm9vbCBLZXllZERlY29kZXJHZW5lcmljOjpiZWdpbkFy
cmF5KGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIGF1dG8qIHZhbHVlID0gV1RGOjpnZXRfaWY8
c3RkOjp1bmlxdWVfcHRyPEFycmF5Pj4obV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5nZXQoa2V5
KSk7CisgICAgYXV0byB2YWx1ZSA9IGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrPHN0ZDo6
dW5pcXVlX3B0cjxBcnJheT4+KGtleSk7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgbV9hcnJheVN0YWNrLmFwcGVuZCh2YWx1ZS0+Z2V0KCkpOwogICAgIG1f
YXJyYXlJbmRleFN0YWNrLmFwcGVuZCgwKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKaW5k
ZXggNTZhMmY5MzhhMDU0YjQ3N2NhZGRkZTAzNzk3MWU1MzEyZjRlMmRjYi4uMTlhMjk5YmRkOTIy
OTlkMjI0MDk4YWI0NDhjZjJlMzVjOTYwM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmgKQEAgLTU1LDYgKzU1LDEy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2
b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IGNvbnN0IFQqIGdldFBvaW50ZXJGcm9tRGljdGlvbmFyeVN0YWNrKGNvbnN0IFN0cmluZyYga2V5
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBkZWNvZGVTaW1wbGVWYWx1
ZShjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aWN0aW9uYXJ5PiBtX3Jvb3REaWN0aW9uYXJ5OwogICAgIFZlY3RvcjxEaWN0aW9uYXJ5KiwgMTY+
IG1fZGljdGlvbmFyeVN0YWNrOwogICAgIFZlY3RvcjxBcnJheSosIDE2PiBtX2FycmF5U3RhY2s7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDUy
NTg5NDBkNTNmMmE5OWY0YzE4NmNmMzA0YjNlOTNlM2I0NmExMS4uYjFlYjA3ODkyN2Q0NDU5MTFj
Y2Q1M2VkZTFiMjZhOWY4OGI3Nzg5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAxLTE5ICBUYWthc2hpIEtv
bW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIEtleWVkRGVjb2Rlckdl
bmVyaWMgY3Jhc2hlcyB3aGVuIGl0IGFjY2Vzc2VzIGRhdGEgd2l0aCBub24tZXhpc3Rpbmcga2V5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjaGVja0RlY29kZWRCeXRlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RTaW1wbGVWYWx1ZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVuY29kZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmRlY29kZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OktleWVkQ29kaW5nVGVzdE9iamVj
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpLZXllZENvZGluZ1Rlc3RPYmplY3Q6OmVxdWFs
cyBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcGVyYXRvcj09KToKKwogMjAyMC0w
MS0xNyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBhc3NlcnRpb24gd2hlbiB0ZXN0IGZhc3QvZXZlbnRzL2lvcy9yb3RhdGlvbi9iYXNpYy1y
b3RhdGlvbi5odG1sIGlzIGZvbGxvd2VkIGJ5IGZhc3QvZXZlbnRzL2lvcy9yb3RhdGlvbi9kby1u
b3Qtc2hyaW5rLXRvLWZpdC1jb250ZW50LWFmdGVyLXJvdGF0aW9uLmh0bWwKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CmluZGV4IGE1N2M3M2Q4N2UzNzA5YjQ4MDU5MGNkNTI1NmYxMmZkMDg5
ZjMwM2EuLjk3ZGEwNjBiYWRlZDU4ZmFjYWFjYzhjNzc3NzUwYTVjMDJhZWNhMzYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTM4LDYgKzEzOCw3IEBAIGlmIChFTkFCTEVfV0VC
Q09SRSkKICAgICAgICAgVGVzdHMvV2ViQ29yZS9JbnRQb2ludC5jcHAKICAgICAgICAgVGVzdHMv
V2ViQ29yZS9JbnRSZWN0LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL0ludFNpemUuY3BwCisg
ICAgICAgIFRlc3RzL1dlYkNvcmUvS2V5ZWRDb2RpbmcuY3BwCiAgICAgICAgIFRlc3RzL1dlYkNv
cmUvTGF5b3V0VW5pdC5jcHAKICAgICAgICAgVGVzdHMvV2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAogICAgICAgICBUZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjdmOWY5ODg0YTU3MmQ5YTQ2MjY1MzQ0NThlNDViZDBmZTNj
M2Q4MC4uMGZkNzFmZTgzZDczMDU1MTVkMmQ2NDAxNWYzNzk1YzgzNDU4NDczZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMCw2ICsxMjAsNyBAQAogCQkyNkY1MkVCMjE4Mjg4RjI0MDAy
M0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGNTJFQjAxODI4OEYwRjAwMjNE
NDEyIC8qIGdlb2xvY2F0aW9uV2F0Y2hQb3NpdGlvbi5odG1sICovOyB9OwogCQkyNkY1MkVCMzE4
Mjg4RjI0MDAyM0Q0MTIgLyogZ2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uV2l0aEhpZ2hBY2N1cmFj
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI2RjUyRUIxMTgyODhGMEYwMDIzRDQxMiAvKiBnZW9sb2NhdGlvbldhdGNoUG9zaXRpb25X
aXRoSGlnaEFjY3VyYWN5Lmh0bWwgKi87IH07CiAJCTI3MkE2OTEwMjJGMDEyREEwMDBGREFCQiAv
KiBQYWdlTG9hZFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI3MkE2OTBGMjJGMDEyQzcwMDBGREFCQiAvKiBQYWdlTG9hZFN0YXRlLmNwcCAq
LzsgfTsKKwkJMjc4RTNFMTkyM0NEODQyRjAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI3OEUzRTE4MjNDRDgy
RkEwMDVBNkI4MCAvKiBLZXllZENvZGluZy5jcHAgKi87IH07CiAJCTI5MEE5QkI5MTczNUY2Mzgw
MEQ3MUJCQyAvKiBPcGVuTmV3V2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwQTlCQjgxNzM1RjQyMzAwRDcxQkJDIC8qIE9w
ZW5OZXdXaW5kb3cuaHRtbCAqLzsgfTsKIAkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8qIGN1
c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0Mjc0MTcyQTFGREUwMDkzOUZGMCAvKiBjdXN0
b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCAqLzsgfTsKIAkJMjk3MjM0QjcxNzNBRkFDNzAwOTgz
NjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NzIzNEI1MTczQUZBQzcwMDk4
MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAgKi87IH07CkBA
IC0xMTU3LDcgKzExNTgsNiBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
OwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk0NkMzQUVCMzIz
RDBFNTI5MDAxQjA2ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTVBODE3RkYyMTgxMDIxQTAwMDRBMzlBIC8qIDEwMHgxMDAtcmVkLnRnYSBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFj
dGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU1QTgxODAwMjE4MTAyMjEwMDA0
QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTEyMDQs
NiArMTIwNCw3IEBACiAJCQkJMkUxNEE1MjkxRDNGRTk2QjAwMTBGMzVCIC8qIGF1dG9wbGF5aW5n
LXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
MDFFRjQ2OTZCMDA4M0ZBMDggLyogYmFja2dyb3VuZC1pbWFnZS1saW5rLWFuZC1pbnB1dC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ2NEM3NjREMjMwREY4NUMwMEFGQjAyMCAvKiBC
YWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJNDZDM0FFQjMyM0QwRTUyOTAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTJERTcxQjAwMUQ0OUMzRUQwMDkwNDA5NCAvKiBibGlu
a2luZy1kaXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3QzQ4NkJBMTFBQTEyNTY3
MDAzRjZGOUIgLyogYnVuZGxlLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQky
NkRGNUE2MzE1QTJBMjdFMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTYzMSw2ICsxNjMyLDcgQEAKIAkJ
MjZGNkUxRUYxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkFNaW5pbWl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyNzJBNjkwRjIyRjAxMkM3MDAwRkRBQkIgLyogUGFnZUxvYWRTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTG9hZFN0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjc4REU2NEIyMkI4RDYxMTAwNEUw
RTdBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjc4RTNFMTgyM0NEODJGQTAwNUE2QjgwIC8qIEtleWVkQ29kaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtleWVkQ29kaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkwQTlCQjUxNzM1REU4QTAwRDcxQkJDIC8qIENsb3NlTmV3
V2luZG93SW5OYXZpZ2F0aW9uUG9saWN5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDbG9zZU5ld1dpbmRvd0luTmF2aWdhdGlvblBvbGljeURlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBBOUJCODE3MzVGNDIzMDBE
NzFCQkMgLyogT3Blbk5ld1dpbmRvdy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
T3Blbk5ld1dpbmRvdy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBGNDI3
NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE1Myw2ICszMTU1LDcgQEAKIAkJCQk3QTkw
OUE3NDFEODc3NDc1MDA3RTEwRjggLyogSW50UmVjdC5jcHAgKi8sCiAJCQkJN0E5MDlBNzUxRDg3
NzQ3NTAwN0UxMEY4IC8qIEludFNpemUuY3BwICovLAogCQkJCUNENUZGNDk2MjE2MkUyN0UwMDRC
RDg2RiAvKiBJU09Cb3guY3BwICovLAorCQkJCTI3OEUzRTE4MjNDRDgyRkEwMDVBNkI4MCAvKiBL
ZXllZENvZGluZy5jcHAgKi8sCiAJCQkJMTQ0NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91
dFVuaXQuY3BwICovLAogCQkJCTZCRjRBNjgyMjM5RUQ0Q0QwMEUyRjQ1QiAvKiBMb2dnZWRJblN0
YXR1cy5jcHAgKi8sCiAJCQkJMDc2RTUwN0UxRjQ1MDMxRTAwNkU5RjVBIC8qIExvZ2dpbmcuY3Bw
ICovLApAQCAtNDc2Nyw2ICs0NzcwLDcgQEAKIAkJCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTgg
LyogSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QzQxQTQxMUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ1RTE1NzMyMTEyQ0UyOTAwMzA3RTgyIC8qIEtleWJvYXJkSW5wdXRU
ZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI3OEUzRTE5MjNDRDg0MkYwMDVBNkI4MCAv
KiBLZXllZENvZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNjFBNDExQUU2MDA0
NDdDNEMgLyogTGF5b3V0TWlsZXN0b25lc1dpdGhBbGxDb250ZW50SW5GcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VERjFBNDExQTkyMDA0NDdDNEMgLyogTGF5b3V0VW5pdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogTGVnYWN5RHJh
Z0FuZERyb3BUZXN0cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0tleWVkQ29kaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNkNGMzNDRiNGMz
YTcxMjViOTMyNjg0MGFkN2MwY2M3YmUyN2Q2YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LZXllZENvZGluZy5jcHAKQEAgLTAsMCArMSwyNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2Vi
Q29yZS9LZXllZENvZGluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Cisj
aW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBjaGVja0RlY29kZWRCeXRlcyhj
b25zdCB1aW50OF90KiBvcmlnaW5hbCwgc2l6ZV90IG9yaWdpbmFsU2l6ZSwgY29uc3QgdWludDhf
dCogZGVjb2RlZCwgc2l6ZV90IGRlY29kZWRTaXplKQoreworICAgIGlmIChvcmlnaW5hbFNpemUg
IT0gZGVjb2RlZFNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiAhc3Rk
OjptZW1jbXAob3JpZ2luYWwsIGRlY29kZWQsIG9yaWdpbmFsU2l6ZSk7Cit9CisKK1RFU1QoS2V5
ZWRDb2RpbmcsIFNldEFuZEdldEJ5dGVzKQoreworICAgIGNvbnN0IHVpbnQ4X3QgZGF0YVtdID0g
eyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweGRlLCAweGFkLCAweGJlLCAweGVmIH07CisgICAg
Y29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGRhdGEpOworICAgIGNv
bnN0IHNpemVfdCBkYXRhTGVuZ3RoT25lID0gMTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0
aFplcm8gPSAwOworCisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoImRhdGEiLCBkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YS1zaXplMCIsIGRhdGEsIGRhdGFM
ZW5ndGhaZXJvKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcygiZGF0YS1zaXplMSIsIGRhdGEs
IGRhdGFMZW5ndGhPbmUpOworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlz
aEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+
ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIGJvb2wgc3VjY2VzczsKKyAg
ICBjb25zdCB1aW50OF90KiBidWZmZXI7CisgICAgc2l6ZV90IHNpemU7CisKKyAgICBzdWNjZXNz
ID0gZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoImRhdGEiLCBidWZmZXIsIHNpemUpOworICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplKTsKKyAgICBF
WFBFQ1RfVFJVRShjaGVja0RlY29kZWRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoLCBidWZmZXIsIHNp
emUpKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVCeXRlcygiZGF0YS1zaXplMCIs
IGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VR
KGRhdGFMZW5ndGhaZXJvLCBzaXplKTsKKworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVC
eXRlcygiZGF0YS1zaXplMSIsIGJ1ZmZlciwgc2l6ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisgICAgRVhQRUNUX0VRKGRhdGFMZW5ndGhPbmUsIHNpemUpOworICAgIEVYUEVDVF9UUlVF
KGNoZWNrRGVjb2RlZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGhPbmUsIGJ1ZmZlciwgc2l6ZSkpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RlRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBEZWNv
ZGVWYWx1ZVR5cGUsIHR5cGVuYW1lIEVuY29kZVZhbHVlVHlwZT4KK2Jvb2wgdGVzdFNpbXBsZVZh
bHVlKEVuY29kZUZ1bmN0aW9uVHlwZSBlbmNvZGUsIGJvb2wgKFdlYkNvcmU6OktleWVkRGVjb2Rl
cjo6KiBkZWNvZGUpKGNvbnN0IFN0cmluZyYsIERlY29kZVZhbHVlVHlwZSYpLCBFbmNvZGVWYWx1
ZVR5cGUgdmFsdWUpCit7CisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
OjplbmNvZGVyKCk7CisgICAgKGVuY29kZXIuZ2V0KCktPiplbmNvZGUpKCJrZXkiLCB2YWx1ZSk7
CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygpOwor
ICAgIGF1dG8gZGVjb2RlciA9IFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbmNvZGVkQnVmZmVyLT5kYXRhKCkpLCBlbmNvZGVk
QnVmZmVyLT5zaXplKCkpOworCisgICAgRGVjb2RlVmFsdWVUeXBlIGRlY29kZWRWYWx1ZTsKKyAg
ICBib29sIHN1Y2Nlc3MgPSAoZGVjb2Rlci5nZXQoKS0+KmRlY29kZSkoImtleSIsIGRlY29kZWRW
YWx1ZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyAmJiBkZWNvZGVkVmFsdWUgPT0gdmFsdWU7Cit9
CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldEJvb2wpCit7CisgICAgRVhQRUNUX1RSVUUo
dGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUJvb2wsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZUJvb2wsIHRydWUpKTsKKyAgICBFWFBFQ1RfVFJVRSh0
ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlQm9vbCwgJldlYkNv
cmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlQm9vbCwgZmFsc2UpKTsKK30KKworVEVTVChLZXllZENv
ZGluZywgU2V0QW5kR2V0SW50MzIpCit7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNv
ZGVyOjpkZWNvZGVJbnQzMiwgMCkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgm
V2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rl
cjo6ZGVjb2RlSW50MzIsIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZUludDMyLCAtMSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2RlSW50MzIsIElOVF9NSU4pKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUo
JldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50MzIsICZXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZUludDMyLCBJTlRfTUFYKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFu
ZEdldFVJbnQzMikKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6
OktleWVkRW5jb2Rlcjo6ZW5jb2RlVUludDMyLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNv
ZGVVSW50MzIsIHVpbnQzMl90KDApKSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVl
KCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZVVJbnQzMiwgJldlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2RlVUludDMyLCB1aW50MzJfdCgxKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50MzIsICZXZWJDb3Jl
OjpLZXllZERlY29kZXI6OmRlY29kZVVJbnQzMiwgVUlOVDMyX01BWCkpOworfQorCitURVNUKEtl
eWVkQ29kaW5nLCBTZXRBbmRHZXRJbnQ2NCkKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxl
VmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50NjQsICZXZWJDb3JlOjpLZXll
ZERlY29kZXI6OmRlY29kZUludDY0LCBpbnQ2NF90KDApKSk7CisgICAgRVhQRUNUX1RSVUUodGVz
dFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZUludDY0LCAmV2ViQ29y
ZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgaW50NjRfdCgtMikpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlSW50NjQs
ICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUludDY0LCBpbnQ2NF90KDIpKSk7CisgICAg
RVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29k
ZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgSU5UNjRfTUlOKSk7
CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6
OmVuY29kZUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVJbnQ2NCwgSU5UNjRf
TUFYKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIFNldEFuZEdldFVJbnQ2NCkKK3sKKyAgICBF
WFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
VUludDY0LCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVVSW50NjQsIHVpbnQ2NF90KDAp
KSk7CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZVVJbnQ2NCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlVUludDY0LCB1
aW50NjRfdCgxKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVVSW50NjQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZVVJbnQ2NCwgVUlOVDY0X01BWCkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRG
bG9hdCkKK3sKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVk
RW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZUZsb2F0
LCBmbG9hdCgwKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rl
RmxvYXQsIGZsb2F0KDEuNSkpKTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldl
YkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2RlRmxvYXQsICZXZWJDb3JlOjpLZXllZERlY29kZXI6
OmRlY29kZUZsb2F0LCBmbG9hdCgtMS41KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVW
YWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpsb3dlc3Qo
KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RT
aW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVGbG9hdCwgJldlYkNvcmU6
OktleWVkRGVjb2Rlcjo6ZGVjb2RlRmxvYXQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpt
YXgoKSkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXREb3VibGUpCit7CisgICAg
RVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29k
ZURvdWJsZSwgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlRG91YmxlLCBkb3VibGUoMCkp
KTsKKyAgICBFWFBFQ1RfVFJVRSh0ZXN0U2ltcGxlVmFsdWUoJldlYkNvcmU6OktleWVkRW5jb2Rl
cjo6ZW5jb2RlRG91YmxlLCAmV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVEb3VibGUsIGRv
dWJsZSgxLjI1KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29k
ZURvdWJsZSwgZG91YmxlKC0xLjI1KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1
ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERl
Y29kZXI6OmRlY29kZURvdWJsZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3Qo
KSkpOworICAgIEVYUEVDVF9UUlVFKHRlc3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVEb3VibGUsICZXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwg
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4oKSkpOworICAgIEVYUEVDVF9UUlVFKHRl
c3RTaW1wbGVWYWx1ZSgmV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVEb3VibGUsICZXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZURvdWJsZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSkpOworfQorCitURVNUKEtleWVkQ29kaW5nLCBTZXRBbmRHZXRTdHJpbmcpCit7
CisgICAgRVhQRUNUX1RSVUUodGVzdFNpbXBsZVZhbHVlKCZXZWJDb3JlOjpLZXllZEVuY29kZXI6
OmVuY29kZVN0cmluZywgJldlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlU3RyaW5nLCBTdHJp
bmcoIldlYktpdCIpKSk7Cit9CisKK1RFU1QoS2V5ZWRDb2RpbmcsIEdldE5vbkV4aXN0aW5nUmVj
b3JkKQoreworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rl
cigpOworICAgIGVuY29kZXItPmVuY29kZUJvb2woImJvb2wtdHJ1ZSIsIHRydWUpOworCisgICAg
YXV0byBlbmNvZGVkQnVmZmVyID0gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKKyAgICBhdXRv
IGRlY29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+
c2l6ZSgpKTsKKworICAgIGJvb2wgc3VjY2VzcywgYm9vbFZhbHVlOworICAgIHN1Y2Nlc3MgPSBk
ZWNvZGVyLT5kZWNvZGVCb29sKCJib29sLXRydWUiLCBib29sVmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUSh0cnVlLCBib29sVmFsdWUpOworCisgICAgc3Vj
Y2VzcyA9IGRlY29kZXItPmRlY29kZUJvb2woIm5vLWV4aXN0LWtleSIsIGJvb2xWYWx1ZSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgaW50MzJfdCBpbnQzMlZhbHVlOworICAg
IHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVJbnQzMigibm8tZXhpc3Qta2V5IiwgaW50MzJWYWx1
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworCisgICAgdWludDMyX3QgdWludDMyVmFs
dWU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZVVJbnQzMigibm8tZXhpc3Qta2V5Iiwg
dWludDMyVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIGludDY0X3Qg
aW50NjRWYWx1ZTsKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlSW50NjQoIm5vLWV4aXN0
LWtleSIsIGludDY0VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKworICAgIHVp
bnQ2NF90IHVpbnQ2NFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVVSW50NjQo
Im5vLWV4aXN0LWtleSIsIHVpbnQ2NFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7
CisKKyAgICBmbG9hdCBmbG9hdFZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVG
bG9hdCgibm8tZXhpc3Qta2V5IiwgZmxvYXRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nl
c3MpOworCisgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIHN1Y2Nlc3MgPSBkZWNvZGVyLT5k
ZWNvZGVEb3VibGUoIm5vLWV4aXN0LWtleSIsIGRvdWJsZVZhbHVlKTsKKyAgICBFWFBFQ1RfRkFM
U0Uoc3VjY2Vzcyk7CisKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXI7CisgICAgc2l6ZV90IHNp
emU7CisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZUJ5dGVzKCJuby1leGlzdC1rZXkiLCBi
dWZmZXIsIHNpemUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKK30KKworc3RydWN0IEtl
eWVkQ29kaW5nVGVzdE9iamVjdCB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKFdlYkNvcmU6Oktl
eWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0JiBvYmplY3Qp
CisgICAgeworICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZygibmFtZSIsIG9iamVjdC5tX25h
bWUpOworICAgICAgICBlbmNvZGVyLmVuY29kZUludDMyKCJhZ2UiLCBvYmplY3QubV9hZ2UpOwor
ICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShXZWJDb3JlOjpLZXllZERlY29kZXImIGRl
Y29kZXIsIEtleWVkQ29kaW5nVGVzdE9iamVjdCYgb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZVN0cmluZygibmFtZSIsIG9iamVjdC5tX25hbWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlSW50MzIoImFnZSIs
IG9iamVjdC5tX2FnZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIEtleWVkQ29kaW5nVGVzdE9iamVjdCgpIHsgfTsKKyAgICBL
ZXllZENvZGluZ1Rlc3RPYmplY3QoU3RyaW5nIG5hbWUsIGludCBhZ2UpCisgICAgICAgIDogbV9u
YW1lKG5hbWUpCisgICAgICAgICwgbV9hZ2UoYWdlKQorICAgIHsKKyAgICB9CisKKyAgICBib29s
IGVxdWFscyhjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIChtX25hbWUgPT0gb3RoZXIubV9uYW1lKSAmJiAobV9hZ2UgPT0gb3Ro
ZXIubV9hZ2UpOworICAgIH0KKworICAgIFN0cmluZyBtX25hbWU7CisgICAgaW50MzJfdCBtX2Fn
ZTsKK307CisKK3N0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2Jq
ZWN0JiBsT2JqZWN0LCBjb25zdCBLZXllZENvZGluZ1Rlc3RPYmplY3QmIHJPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGxPYmplY3QuZXF1YWxzKHJPYmplY3QpOworfQorCitURVNUKEtleWVkQ29kaW5n
LCBTZXRBbmRHZXRPYmplY3QpCit7CisgICAgY29uc3QgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IHVz
ZXIwKCJOb2FoIiwgMjgpOworICAgIGNvbnN0IEtleWVkQ29kaW5nVGVzdE9iamVjdCB1c2VyMSgi
RW1tYSIsIDMxKTsKKworICAgIGF1dG8gZW5jb2RlciA9IFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpOworICAgIGVuY29kZXItPmVuY29kZU9iamVjdCgidXNlcjAiLCB1c2VyMCwgS2V5
ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGVuY29kZXItPmVuY29kZU9iamVjdCgi
dXNlcjEiLCB1c2VyMSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGF1dG8g
ZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRl
Y29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0IGRlY29k
ZWRVc2VyMCwgZGVjb2RlZFVzZXIxOworCisgICAgc3VjY2VzcyA9IGRlY29kZXItPmRlY29kZU9i
amVjdCgidXNlcjAiLCBkZWNvZGVkVXNlcjAsIEtleWVkQ29kaW5nVGVzdE9iamVjdDo6ZGVjb2Rl
KTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoZGVjb2RlZFVzZXIw
LCB1c2VyMCk7CisKKyAgICBzdWNjZXNzID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0KCJ1c2VyMSIs
IGRlY29kZWRVc2VyMSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShkZWNvZGVkVXNlcjEsIHVzZXIxKTsKK30K
KworVEVTVChLZXllZENvZGluZywgU2V0QW5kR2V0T2JqZWN0cykKK3sKKyAgICBWZWN0b3I8S2V5
ZWRDb2RpbmdUZXN0T2JqZWN0PiB1c2VyczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBp
KyspCisgICAgICAgIHVzZXJzLmFwcGVuZChLZXllZENvZGluZ1Rlc3RPYmplY3QoInVzZXJuYW1l
IiwgaSkpOworCisgICAgYXV0byBlbmNvZGVyID0gV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNv
ZGVyKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygidXNlcnMiLCB1c2Vycy5iZWdpbigp
LCB1c2Vycy5lbmQoKSwgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjplbmNvZGUpOworICAgIGF1dG8g
ZW5jb2RlZEJ1ZmZlciA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisKKyAgICBhdXRvIGRl
Y29kZXIgPSBXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZW5jb2RlZEJ1ZmZlci0+ZGF0YSgpKSwgZW5jb2RlZEJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBWZWN0b3I8S2V5ZWRDb2RpbmdUZXN0T2JqZWN0PiBkZWNvZGVkVXNlcnM7CisK
KyAgICBib29sIHN1Y2Nlc3MgPSBkZWNvZGVyLT5kZWNvZGVPYmplY3RzKCJ1c2VycyIsIGRlY29k
ZWRVc2VycywgS2V5ZWRDb2RpbmdUZXN0T2JqZWN0OjpkZWNvZGUpOworICAgIEVYUEVDVF9UUlVF
KHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUSh1c2VycywgZGVjb2RlZFVzZXJzKTsKK30KK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>