<?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>121310</bug_id>
          
          <creation_ts>2013-09-13 11:25:45 -0700</creation_ts>
          <short_desc>HashMap should work with move-only keys</short_desc>
          <delta_ts>2013-09-17 13:56:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>WebkitBugTracker</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>928926</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-13 11:25:45 -0700</bug_when>
    <thetext>HashMap should work with move-only keys</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928928</commentid>
    <comment_count>1</comment_count>
      <attachid>211568</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-13 11:28:55 -0700</bug_when>
    <thetext>Created attachment 211568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928930</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-13 11:31:42 -0700</bug_when>
    <thetext>Attachment 211568 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/HashMap.h&apos;, u&apos;Source/WTF/wtf/HashTable.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/HashMap.h:102:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:107:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:138:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:341:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928935</commentid>
    <comment_count>3</comment_count>
      <attachid>211568</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-13 11:38:17 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1808071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928937</commentid>
    <comment_count>4</comment_count>
      <attachid>211568</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-13 11:42:57 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1911042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928945</commentid>
    <comment_count>5</comment_count>
      <attachid>211568</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-13 11:53:52 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1801228</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928957</commentid>
    <comment_count>6</comment_count>
      <attachid>211568</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-13 12:48:54 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1862233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928971</commentid>
    <comment_count>7</comment_count>
      <attachid>211568</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-13 13:14:54 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1878084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928974</commentid>
    <comment_count>8</comment_count>
      <attachid>211568</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-13 13:18:06 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1808089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929123</commentid>
    <comment_count>9</comment_count>
      <attachid>211568</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-13 21:47:45 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1875220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929134</commentid>
    <comment_count>10</comment_count>
      <attachid>211568</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-13 22:25:51 -0700</bug_when>
    <thetext>Comment on attachment 211568
Patch

Attachment 211568 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1896179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929985</commentid>
    <comment_count>11</comment_count>
      <attachid>211844</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-16 17:25:06 -0700</bug_when>
    <thetext>Created attachment 211844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929986</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 17:28:55 -0700</bug_when>
    <thetext>Attachment 211844 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/HashMap.h&apos;, u&apos;Source/WTF/wtf/HashTable.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/HashTable.h:405:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:103:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:108:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:109:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:132:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:140:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:143:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:345:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:358:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:378:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:379:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:392:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 12 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929990</commentid>
    <comment_count>13</comment_count>
      <attachid>211844</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-16 17:39:03 -0700</bug_when>
    <thetext>Comment on attachment 211844
Patch

Attachment 211844 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1824129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929998</commentid>
    <comment_count>14</comment_count>
      <attachid>211848</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-16 17:56:58 -0700</bug_when>
    <thetext>Created attachment 211848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929999</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 17:58:07 -0700</bug_when>
    <thetext>Attachment 211848 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/HashMap.h&apos;, u&apos;Source/WTF/wtf/HashTable.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/rendering/RenderRegion.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/HashTable.h:405:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:103:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:108:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:109:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:132:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:140:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:143:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:345:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:358:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:378:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:379:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:392:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 12 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930001</commentid>
    <comment_count>16</comment_count>
      <attachid>211849</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-16 18:07:43 -0700</bug_when>
    <thetext>Created attachment 211849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930005</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 18:09:18 -0700</bug_when>
    <thetext>Attachment 211849 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/HashMap.h&apos;, u&apos;Source/WTF/wtf/HashTable.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/HashTable.h:405:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:103:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:108:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:109:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:132:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:140:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:143:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:345:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:358:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:378:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:379:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:392:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 12 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930006</commentid>
    <comment_count>18</comment_count>
      <attachid>211849</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-16 18:18:42 -0700</bug_when>
    <thetext>Comment on attachment 211849
Patch

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

&gt; Source/WTF/wtf/HashMap.h:428
&gt; -    auto HashMap&lt;T, U, V, W, MappedTraits&gt;::take(const KeyType&amp; key) -&gt; MappedPassOutType
&gt; +    auto HashMap&lt;T, U, V, W, MappedTraits&gt;::take(const KeyType&amp; key) -&gt; MappedType

So this doesn’t break callers that expect the return type to be PassRefPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930019</commentid>
    <comment_count>19</comment_count>
      <attachid>211849</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-16 18:58:31 -0700</bug_when>
    <thetext>Comment on attachment 211849
Patch

Attachment 211849 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1870201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930030</commentid>
    <comment_count>20</comment_count>
      <attachid>211849</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-16 20:02:16 -0700</bug_when>
    <thetext>Comment on attachment 211849
Patch

Attachment 211849 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1919100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930061</commentid>
    <comment_count>21</comment_count>
      <attachid>211849</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-16 22:30:05 -0700</bug_when>
    <thetext>Comment on attachment 211849
Patch

Attachment 211849 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1824186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930063</commentid>
    <comment_count>22</comment_count>
      <attachid>211849</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-16 22:44:06 -0700</bug_when>
    <thetext>Comment on attachment 211849
Patch

Attachment 211849 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1872259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930241</commentid>
    <comment_count>23</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-17 08:47:08 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 211849 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211849&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/HashMap.h:428
&gt; &gt; -    auto HashMap&lt;T, U, V, W, MappedTraits&gt;::take(const KeyType&amp; key) -&gt; MappedPassOutType
&gt; &gt; +    auto HashMap&lt;T, U, V, W, MappedTraits&gt;::take(const KeyType&amp; key) -&gt; MappedType
&gt; 
&gt; So this doesn’t break callers that expect the return type to be PassRefPtr?

It does, but I don’t think there were any callers that expected that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930242</commentid>
    <comment_count>24</comment_count>
      <attachid>211911</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-17 08:47:25 -0700</bug_when>
    <thetext>Created attachment 211911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930243</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-17 08:49:20 -0700</bug_when>
    <thetext>Attachment 211911 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/HashMap.h&apos;, u&apos;Source/WTF/wtf/HashTable.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFace.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/HashTable.h:405:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/InputType.cpp:95:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WTF/wtf/HashMap.h:103:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:108:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:109:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:132:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:140:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:143:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:345:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:358:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:378:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WTF/wtf/HashMap.h:379:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WTF/wtf/HashMap.h:392:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 13 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930254</commentid>
    <comment_count>26</comment_count>
      <attachid>211911</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-17 09:03:01 -0700</bug_when>
    <thetext>Comment on attachment 211911
Patch

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

&gt;&gt; Source/WTF/wtf/HashMap.h:140
&gt;&gt; +        template&lt;typename K, typename V&gt;
&gt;&gt; +        AddResult inlineSet(K&amp;&amp;, V&amp;&amp;);
&gt; 
&gt; Missing spaces around &amp;&amp;  [whitespace/operators] [3]

Might read better on one line instead of two.

&gt;&gt; Source/WTF/wtf/HashMap.h:143
&gt;&gt; +        template&lt;typename K, typename V&gt;
&gt;&gt; +        AddResult inlineAdd(K&amp;&amp;, V&amp;&amp;);
&gt; 
&gt; Missing spaces around &amp;&amp;  [whitespace/operators] [3]

Might read better on one line instead of two.

&gt; Source/WebCore/html/InputType.cpp:90
&gt; -static PassOwnPtr&lt;InputTypeFactoryMap&gt; createInputTypeFactoryMap()
&gt; +static OwnPtr&lt;InputTypeFactoryMap&gt; createInputTypeFactoryMap()

The pattern here should change so we aren’t calling HashMap::add repeatedly, since those calls will be inlined. Need to do this in a loop instead. I guess I can make that change after you land. I would suggest we make a static const table that has two function pointers, one to the function that returns the type name and the other being the create function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930260</commentid>
    <comment_count>27</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-17 09:26:09 -0700</bug_when>
    <thetext>Committed r155963: &lt;http://trac.webkit.org/changeset/155963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930315</commentid>
    <comment_count>28</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-17 11:09:44 -0700</bug_when>
    <thetext>This patch broke the Windows build:

        WebKitGraphics.cpp
     1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\private\wtf/HashMap.h(238): error C2679: binary &apos;=&apos; : no operator found which takes a right-hand operand of type &apos;int&apos; (or there is no acceptable conversion)
                 C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\WebCore/COMPtr.h(84): could be &apos;COMPtr&lt;T&gt; &amp;COMPtr&lt;T&gt;::operator =(const COMPtr&lt;T&gt; &amp;)&apos;
                 with
                 [
                     T=IClassFactory
                 ]
                 C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\WebCore/COMPtr.h(85): or       &apos;COMPtr&lt;T&gt; &amp;COMPtr&lt;T&gt;::operator =(T *)&apos;
                 with
                 [
                     T=IClassFactory
                 ]
                 while trying to match the argument list &apos;(COMPtr&lt;T&gt;, int)&apos;
                 with
                 [
                     T=IClassFactory
                 ]
                 C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\private\wtf/HashTable.h(889) : see reference to function template instantiation &apos;void WTF::HashMapTranslator&lt;ValueTraits,HashFunctions&gt;::translate&lt;WTF::KeyValuePair&lt;KeyTypeArg,ValueTypeArg&gt;,const _GUID&amp;,T&amp;&gt;(WTF::KeyValuePair&lt;KeyTypeArg,ValueTypeArg&gt; &amp;,U,V)&apos; being compiled
                 with
                 [
                     ValueTraits=WTF::HashMapValueTraits&lt;CLSIDHashTraits,WTF::HashTraits&lt;COMPtr&lt;IClassFactory&gt;&gt;&gt;,
                     HashFunctions=CLSIDHash,
                     KeyTypeArg=_GUID,
                     ValueTypeArg=COMPtr&lt;IClassFactory&gt;,
                     T=int,
                     U=const _GUID &amp;,
                     V=int &amp;
                 ]
                 C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\private\wtf/HashMap.h(358) : see reference to function template instantiation &apos;WTF::HashTableAddResult&lt;IteratorType&gt; WTF::HashTable&lt;Key,Value,Extractor,HashFunctions,Traits,KeyTraits&gt;::add&lt;WTF::HashMapTranslator&lt;ValueTraits,HashFunctions&gt;,const _GUID&amp;,T&amp;&gt;(const _GUID,Extra)&apos; being compiled
                 with
                 [
                     IteratorType=WTF::HashTableIterator&lt;_GUID,WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;&gt;,CLSIDHash,WTF::HashMapValueTraits&lt;CLSIDHashTraits,WTF::HashTraits&lt;COMPtr&lt;IClassFactory&gt;&gt;&gt;,CLSIDHashTraits&gt;,
                     Key=_GUID,
                     Value=WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;,
                     Extractor=WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;&gt;,
                     HashFunctions=CLSIDHash,
                     Traits=WTF::HashMapValueTraits&lt;CLSIDHashTraits,WTF::HashTraits&lt;COMPtr&lt;IClassFactory&gt;&gt;&gt;,
                     KeyTraits=CLSIDHashTraits,
                     ValueTraits=WTF::HashMapValueTraits&lt;CLSIDHashTraits,WTF::HashTraits&lt;COMPtr&lt;IClassFactory&gt;&gt;&gt;,
                     T=int,
                     Extra=int &amp;
                 ]
                 C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Include\private\wtf/HashMap.h(386) : see reference to function template instantiation &apos;WTF::HashTableAddResult&lt;IteratorType&gt; WTF::HashMap&lt;KeyArg,MappedArg,HashArg,KeyTraitsArg&gt;::inlineAdd&lt;const _GUID&amp;,T&amp;&gt;(K,V)&apos; being compiled
                 with
                 [
                     IteratorType=WTF::HashTableIterator&lt;_GUID,WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;&gt;,CLSIDHash,WTF::HashMapValueTraits&lt;CLSIDHashTraits,WTF::HashTraits&lt;COMPtr&lt;IClassFactory&gt;&gt;&gt;,CLSIDHashTraits&gt;,
                     KeyArg=CLSID,
                     MappedArg=COMPtr&lt;IClassFactory&gt;,
                     HashArg=CLSIDHash,
                     KeyTraitsArg=CLSIDHashTraits,
                     T=int,
                     K=const _GUID &amp;,
                     V=int &amp;
                 ]
                 ..\..\win\WebKitCOMAPI.cpp(59) : see reference to function template instantiation &apos;WTF::HashTableAddResult&lt;IteratorType&gt; WTF::HashMap&lt;KeyArg,MappedArg,HashArg,KeyTraitsArg&gt;::add&lt;int&gt;(const _GUID &amp;,T &amp;&amp;)&apos; being compiled
                 with
                 [
                     IteratorType=WTF::HashTableIterator&lt;_GUID,WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;_GUID,COMPtr&lt;IClassFactory&gt;&gt;&gt;,CLSIDHash,WTF::HashMapValueTraits&lt;CLSIDHashTraits,WTF::HashTraits&lt;COMPtr&lt;IClassFactory&gt;&gt;&gt;,CLSIDHashTraits&gt;,
                     KeyArg=CLSID,
                     MappedArg=COMPtr&lt;IClassFactory&gt;,
                     HashArg=CLSIDHash,
                     KeyTraitsArg=CLSIDHashTraits,
                     T=int
                 ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930328</commentid>
    <comment_count>29</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-09-17 11:55:18 -0700</bug_when>
    <thetext>I do not want to sound confrontational, but was there a reason to ignore the several red bubbles and land this anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930377</commentid>
    <comment_count>30</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-17 13:56:35 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; I do not want to sound confrontational, but was there a reason to ignore the several red bubbles and land this anyway?

The turnaround time for getting this working was just too long and I wanted to land it because it’s blocking other changes. I was around in #webkit when i landed it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211568</attachid>
            <date>2013-09-13 11:28:55 -0700</date>
            <delta_ts>2013-09-16 17:25:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121310-20130913112854.patch</filename>
            <type>text/plain</type>
            <size>7995</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlmNTMyNmM5YjVhMDhiOTExZTRiYWRj
MGNhYzYzODY4ODk0ODA0ZWQuLjkxZGM1ZGM2NWIyMjJlNmRhNzEzOTc5NWFkZmFkN2E3M2M5MGQz
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDktMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXNoTWFwIHNob3VsZCB3b3JrIHdpdGggbW92
ZS1vbmx5IGtleXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL0hhc2hNYXAuaDoKKyAgICAgICAgQWRkIHJ2YWx1ZSByZWZlcmVuY2VzIGFuZCBz
dGQ6OmZvcndhcmQgdG8gdGhlIGFkZCBhbmQgc2V0IG92ZXJsb2Fkcy4KKyAgICAgICAgCisgICAg
ICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICBGb3J3YXJkIHRoZSBrZXkuCisKIDIwMTMt
MDktMTMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+
CiAKICAgICAgICAgT3duQXJyYXlQdHI6IE5ldmVyIGFsbG93IGltcGxpY2l0IHBvaW50ZXIgY29u
dmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCmluZGV4IDc0YTc4OGM2NzY0NzU2YzNlNjFkN2ExYzI1YjMzMmYyMzAw
OTllYzkuLjM4MDJjODVhYTg0ZDBhYTE4MTE1ZWJhMDdhYjAyY2JjNWQzMDJlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgKQEAgLTk5LDEyICs5OSwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFj
ZXMgdmFsdWUgYnV0IG5vdCBrZXkgaWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAv
LyByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0
aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1
ZSB3YXMgYWN0dWFsbHkgYWRkZWQKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVz
dWx0IHNldChjb25zdCBLZXlUeXBlJiwgViYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SywgdHlwZW5hbWUgVj4gQWRkUmVzdWx0IHNldChLJiYsIFYmJik7CiAKICAgICAgICAgLy8gZG9l
cyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZh
bHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAg
ICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVh
bGx5IGFkZGVkCi0gICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBh
c3NJblR5cGUpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBBZGRS
ZXN1bHQgYWRkKEsmJiwgViYmKTsKIAogICAgICAgICBib29sIHJlbW92ZShjb25zdCBLZXlUeXBl
Jik7CiAgICAgICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTEzNCw4ICsxMzQsOCBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleShjb25zdCBLZXlU
eXBlJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
ICAgICBBZGRSZXN1bHQgaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBUJiYpOworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAgICAgICBBZGRSZXN1bHQgaW5saW5l
QWRkKEsmJiwgViYmKTsKIAogICAgICAgICBIYXNoVGFibGVUeXBlIG1faW1wbDsKICAgICB9OwpA
QCAtMjI3LDkgKzIyNyw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHN0cnVjdCBIYXNoTWFwVHJh
bnNsYXRvciB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVxdWFsKGEs
IGIpOyB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29uc3QgVSYga2V5LCBWJiYg
bWFwcGVkKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXksIFYmJiBtYXBw
ZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGxvY2F0aW9uLmtleSA9IGtleTsKKyAgICAgICAg
ICAgIGxvY2F0aW9uLmtleSA9IHN0ZDo6Zm9yd2FyZDxVPihrZXkpOwogICAgICAgICAgICAgbG9j
YXRpb24udmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsKICAgICAgICAgfQogICAgIH07
CkBAIC0zMzUsMjAgKzMzNSwyMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6aW5saW5lQWRkKGNvbnN0
IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSywgdHlwZW5hbWUgVj4KKyAgICBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcs
IEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6aW5saW5lQWRkKEsmJiBr
ZXksIFYmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1w
bC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hGdW5jdGlv
bnM+PihrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICAgICAgcmV0dXJuIG1faW1w
bC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hGdW5jdGlv
bnM+PihzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KG1hcHBlZCkpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRy
YWl0c0FyZz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpz
ZXQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAgIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpzZXQoSyYm
IGtleSwgViYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiAgICAgewotICAgICAgICBBZGRSZXN1bHQg
cmVzdWx0ID0gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOworICAgICAg
ICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6
OmZvcndhcmQ8Vj4obWFwcGVkKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsK
ICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGlu
ZyBoYXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgotICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQp
OworICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPiht
YXBwZWQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMzYw
LDEwICszNjAsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVt
cGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRy
YWl0cywgSGFzaFRyYW5zbGF0b3I+PihrZXksIHZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPgotICAgIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IEtleVR5cGUm
IGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpIC0+IEFkZFJlc3VsdAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAgIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoSyYm
IGtleSwgViYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiAgICAgewotICAgICAgICByZXR1cm4gaW5s
aW5lQWRkKGtleSwgbWFwcGVkKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUFkZChzdGQ6OmZvcndh
cmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KG1hcHBlZCkpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIE1hcHBlZFRyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5o
IGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggZGM5Yzc1NDVlY2ZjZDMxNGRjZjkz
MmE3M2FlNzY3ZGQ1YWFjODBlZC4uZjRkOTIwMjYyNTgxOTQ0MDFmN2FlZjExYThiNTZmZGZlYTE1
NzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTg4Niw3ICs4ODYsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgICAgIC0tbV9kZWxldGVkQ291bnQ7IAogICAgICAgICB9CiAKLSAgICAgICAgSGFz
aFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnksIGtleSwgc3RkOjpmb3J3YXJkPEV4dHJhPihl
eHRyYSkpOworICAgICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwgc3RkOjpm
b3J3YXJkPFQ+KGtleSksIHN0ZDo6Zm9yd2FyZDxFeHRyYT4oZXh0cmEpKTsKICAgICAgICAgKytt
X2tleUNvdW50OwogICAgICAgICAKICAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZiNmUzZmVkZDI5
MWYwMWFjZTkyMjM4NDVjN2IzOWM0MjAzOWVkNWIuLjcxMTAwMmEyNjc5NzY2N2NmNzliZjUwYWRi
Yzc4MmYyYTM3OTU5ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wOS0xMyAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEhhc2hNYXAgc2hvdWxkIHdvcmsgd2l0aCBt
b3ZlLW9ubHkga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGQgYSBuZXcgdGVzdC4KKwogMjAxMy0wOS0x
MyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIFJFR1JFU1NJT04ocjE1NDQ0NCk6IHhzcy1ERU5JRUQgdGVzdCByZXN1bHRzIGNo
YW5nZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggZWMx
MzMzNGZmYmI2ZGIwNDg0ZjMwNjczZWM2NDI4OWI5NzI1MDA0MC4uOTA0MWUyNDU4N2FiYzY4OGI3
MTM5OTljOTY1ZGU2NjU2MDk5YzQ2OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaE1hcC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRG91YmxlSGFz
aENvbGxpc2lvbnMpCiAgICAgQVNTRVJUX0VRKG1hcC5nZXQobmVnYXRpdmVaZXJvS2V5KSwgMyk7
CiB9CiAKLVRFU1QoV1RGX0hhc2hNYXAsIE1vdmVPbmx5KQorVEVTVChXVEZfSGFzaE1hcCwgTW92
ZU9ubHlWYWx1ZXMpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTW92ZU9ubHk+IG1vdmVPbmx5
VmFsdWVzOwogCkBAIC05Nyw5ICs5NywzNiBAQCBURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seSkK
ICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgICAgICBB
U1NFUlRfRkFMU0UobW92ZU9ubHlWYWx1ZXMuYWRkKGkgKyAxLCBNb3ZlT25seShpICsgMSkpLmlz
TmV3RW50cnkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkKICAgICAg
ICAgQVNTRVJUX1RSVUUobW92ZU9ubHlWYWx1ZXMucmVtb3ZlKGkgKyAxKSk7CiAKICAgICBBU1NF
UlRfVFJVRShtb3ZlT25seVZhbHVlcy5pc0VtcHR5KCkpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgbW92ZU9ubHlWYWx1ZXMuYWRkKGkgKyAxLCBNb3Zl
T25seShpICsgMSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAg
ICAgICAgQVNTRVJUX0ZBTFNFKG1vdmVPbmx5VmFsdWVzLmFkZChpICsgMSwgTW92ZU9ubHkoaSAr
IDEpKS5pc05ld0VudHJ5KTsKK30KKworVEVTVChXVEZfSGFzaE1hcCwgTW92ZU9ubHlLZXlzKQor
eworICAgIEhhc2hNYXA8TW92ZU9ubHksIHVuc2lnbmVkPiBtb3ZlT25seUtleXM7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICBNb3ZlT25seSBtb3ZlT25s
eShpICsgMSk7CisgICAgICAgIG1vdmVPbmx5S2V5cy5zZXQoc3RkOjptb3ZlKG1vdmVPbmx5KSwg
aSArIDEpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsK
KyAgICAgICAgYXV0byBpdCA9IG1vdmVPbmx5S2V5cy5maW5kKE1vdmVPbmx5KGkgKyAxKSk7Cisg
ICAgICAgIEFTU0VSVF9GQUxTRShpdCA9PSBtb3ZlT25seUtleXMuZW5kKCkpOworICAgICAgICBB
U1NFUlRfRVEoaXQtPnZhbHVlLCBpICsgMSk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAgQVNTRVJUX0ZBTFNFKG1vdmVPbmx5S2V5cy5hZGQo
TW92ZU9ubHkoaSArIDEpLCBpICsgMSkuaXNOZXdFbnRyeSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211844</attachid>
            <date>2013-09-16 17:25:06 -0700</date>
            <delta_ts>2013-09-16 17:56:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121310-20130916172506.patch</filename>
            <type>text/plain</type>
            <size>14233</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMjZkNmQ3ZGI4Y2RlOTg1MGMwYmQ3
NGJlMDBiODY1NzNkZWJlODQuLjkyMDNhMmZmZTFiYWNhMTkwODg5ZmQ1ODUyMjMyYjczZWZmOGEz
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTMtMDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBIYXNoTWFwIHNob3VsZCB3b3JrIHdpdGggbW92
ZS1vbmx5IGtleXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBleHRyYSBvdmVybG9hZHMgZm9yIGFkZCBhbmQgc2V0IHdoZXJlIHRoZSBrZXkgaXMg
YW4gcnZhbHVlIHJlZmVyZW5jZSwgYnV0IG5vdCBhCisgICAgICAgIHRlbXBsYXRlIHBhcmFtZXRl
ciBydmFsdWUgcmVmZXJlbmNlLiBUaGlzIHdheSB3ZSdsbCBjb2VyY2UgdGhlIGtleSBwYXJhbWV0
ZXIgdG8gaGF2ZSB0aGUgZXhwZWN0ZWQKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBwYXNz
ZWQgaW4gdHlwZSwgY2F1c2luZyBtYXAuYWRkKFN0cmluZ0ltcGw6OmNyZWF0ZSgiSGVsbG8iKSwg
MTIzKSB3b3JrIHdoZW4gdGhlCisgICAgICAgIHR5cGUgb2YgbWFwIGlzIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4uCisKKyAgICAgICAgQWxzbywgc3ByaW5rbGUgJiYgYW5kIHN0ZDo6Zm9yd2Fy
ZCB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAg
ICogd3RmL0hhc2hUYWJsZS5oOgorCisyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgTWVzc2FnZVF1ZXVlIHNob3VsZCB1c2UgYSBEZXF1
ZSBvZiBPd25QdHJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE0NTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291
cmNlL1dURi93dGYvSGFzaE1hcC5oCmluZGV4IDc0YTc4OGM2NzY0NzU2YzNlNjFkN2ExYzI1YjMz
MmYyMzAwOTllYzkuLmI0OWI3OWJkYTM2NWVkMDMzOTU4YmFmOTI3N2M0MTI5NDAwMmE2ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoTWFwLmgKQEAgLTEwMCwxNyArMTAwLDE5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAv
LyByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0
aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1
ZSB3YXMgYWN0dWFsbHkgYWRkZWQKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVz
dWx0IHNldChjb25zdCBLZXlUeXBlJiwgViYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Vj4gQWRkUmVzdWx0IHNldChLZXlUeXBlJiYsIFYmJik7CiAKICAgICAgICAgLy8gZG9lcyBub3Ro
aW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlz
IGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8v
IGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFk
ZGVkCi0gICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5
cGUpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1bHQgYWRkKGNvbnN0IEtl
eVR5cGUmLCBWJiYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1bHQgYWRk
KEtleVR5cGUmJiwgViYmKTsKIAogICAgICAgICBib29sIHJlbW92ZShjb25zdCBLZXlUeXBlJik7
CiAgICAgICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwog
Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRUeXBlIHRha2UoY29uc3QgS2V5VHlwZSYpOyAvLyBlZmZp
Y2llbnQgY29tYmluYXRpb24gb2YgZ2V0IHdpdGggcmVtb3ZlCisgICAgICAgIE1hcHBlZFR5cGUg
dGFrZShjb25zdCBLZXlUeXBlJik7IC8vIGVmZmljaWVudCBjb21iaW5hdGlvbiBvZiBnZXQgd2l0
aCByZW1vdmUKIAogICAgICAgICAvLyBBbiBhbHRlcm5hdGUgdmVyc2lvbiBvZiBmaW5kKCkgdGhh
dCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAgICAvLyB3
aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJzaW9u
LiBIYXNoVHJhbnNsYXRvcgpAQCAtMTI3LDE1ICsxMjksMTggQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIC8vICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYpOwogICAgICAgICAvLyAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZhbHVlVHlwZSYsIGNvbnN0IFQmKTsKICAgICAgICAg
Ly8gICBzdGF0aWMgdHJhbnNsYXRlKFZhbHVlVHlwZSYsIGNvbnN0IFQmLCB1bnNpZ25lZCBoYXNo
Q29kZSk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPiBBZGRSZXN1bHQgYWRkKGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+
IEFkZFJlc3VsdCBhZGQoSyYmLCBWJiYpOwogCiAgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5j
eSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzVmFsaWRLZXkoY29uc3QgS2V5VHlw
ZSYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAg
ICAgQWRkUmVzdWx0IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgVCYmKTsKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KKyAgICAgICAgQWRkUmVzdWx0IGlubGluZVNl
dChLJiYsIFYmJik7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4K
KyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChLJiYsIFYmJik7CiAKICAgICAgICAgSGFzaFRh
YmxlVHlwZSBtX2ltcGw7CiAgICAgfTsKQEAgLTIyNyw5ICsyMzIsOSBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3IgewogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIEhhc2hG
dW5jdGlvbnM6Omhhc2goa2V5KTsgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVy
biBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9j
YXRpb24sIGNvbnN0IFUmIGtleSwgViYmIG1hcHBlZCkKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxv
Y2F0aW9uLCBVJiYga2V5LCBWJiYgbWFwcGVkKQogICAgICAgICB7Ci0gICAgICAgICAgICBsb2Nh
dGlvbi5rZXkgPSBrZXk7CisgICAgICAgICAgICBsb2NhdGlvbi5rZXkgPSBzdGQ6OmZvcndhcmQ8
VT4oa2V5KTsKICAgICAgICAgICAgIGxvY2F0aW9uLnZhbHVlID0gc3RkOjpmb3J3YXJkPFY+KG1h
cHBlZCk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMjM4LDEwICsyNDMsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlciB7CiAgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyBy
ZXR1cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIp
IHsgcmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEsIGIpOyB9Ci0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShU
JiBsb2NhdGlvbiwgY29uc3QgVSYga2V5LCBjb25zdCBWJiBtYXBwZWQsIHVuc2lnbmVkIGhhc2hD
b2RlKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXksIFYmJiBtYXBwZWQs
IHVuc2lnbmVkIGhhc2hDb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBUcmFuc2xhdG9yOjp0
cmFuc2xhdGUobG9jYXRpb24ua2V5LCBrZXksIGhhc2hDb2RlKTsKLSAgICAgICAgICAgIFZhbHVl
VHJhaXRzOjpWYWx1ZVRyYWl0czo6c3RvcmUobWFwcGVkLCBsb2NhdGlvbi52YWx1ZSk7CisgICAg
ICAgICAgICBsb2NhdGlvbi52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPihtYXBwZWQpOwogICAgICAg
ICB9CiAgICAgfTsKIApAQCAtMzM1LDM3ICszNDAsNTkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnPgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46Omlu
bGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgYXV0byBIYXNoTWFwPEtleUFy
ZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46Omlu
bGluZVNldChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorICAgIHsKKyAgICAgICAg
QWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpm
b3J3YXJkPFY+KHZhbHVlKSk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAg
ICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBo
YXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgorICAgICAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlw
ZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KKyAgICBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBw
ZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6aW5saW5lQWRk
KEsmJiBrZXksIFYmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZDxIYXNoTWFwVHJhbnNsYXRvcjxWYWx1ZVRyYWl0cywgSGFzaEZ1
bmN0aW9ucz4+KGtleSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOworICAgICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZDxIYXNoTWFwVHJhbnNsYXRvcjxWYWx1ZVRyYWl0cywgSGFzaEZ1
bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBw
ZWRUcmFpdHNBcmc+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBhdXRvIEhhc2hNYXA8
S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJn
Pjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiAgICAg
ewotICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJk
PFQ+KG1hcHBlZCkpOwotICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
ICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0
YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gaW5saW5lU2V0KGtl
eSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+Ci0gICAg
YXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgVFlQRSYga2V5LCBNYXBwZWRQ
YXNzSW5UeXBlIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJh
aXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0
c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+
IEFkZFJlc3VsdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNz
aW5nSGFzaENvZGU8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHJhaXRzLCBIYXNoVHJh
bnNsYXRvcj4+KGtleSwgdmFsdWUpOworICAgICAgICByZXR1cm4gaW5saW5lU2V0KHN0ZDo6bW92
ZShrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KLSAgICBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFkZChjb25zdCBLZXlUeXBlJiBr
ZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAtPiBBZGRSZXN1bHQKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlw
ZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAg
YXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1h
cHBlZFRyYWl0c0FyZz46OmFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNzaW5nSGFzaENvZGU8SGFz
aE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHJhaXRzLCBIYXNoVHJhbnNsYXRvcj4+KHN0ZDo6
Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFz
aEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKGNvbnN0IEtl
eVR5cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0CiAgICAgewogICAgICAgICByZXR1
cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUg
S2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBw
ZWQpIC0+IEFkZFJlc3VsdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUFkZChzdGQ6Om1v
dmUoa2V5KSwgbWFwcGVkKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+CiAg
ICAgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25zdCBLZXlU
eXBlJiBrZXkpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlCiAgICAgewpAQCAtMzk4LDE0ICs0MjUs
MTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRz
PgotICAgIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+Ojp0YWtlKGNvbnN0
IEtleVR5cGUmIGtleSkgLT4gTWFwcGVkUGFzc091dFR5cGUKKyAgICBhdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25zdCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBl
ZFR5cGUKICAgICB7CiAgICAgICAgIGl0ZXJhdG9yIGl0ID0gZmluZChrZXkpOwogICAgICAgICBp
ZiAoaXQgPT0gZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwYXNzT3V0
KE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsKLSAgICAgICAgTWFwcGVkUGFzc091dFR5cGUg
cmVzdWx0ID0gTWFwcGVkVHJhaXRzOjpwYXNzT3V0KGl0LT52YWx1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gTWFwcGVkVHJhaXRzOjplbXB0eVZhbHVlKCk7CisgICAgICAgIE1hcHBlZFR5cGUgdmFs
dWUgPSBzdGQ6Om1vdmUoaXQtPnZhbHVlKTsKICAgICAgICAgcmVtb3ZlKGl0KTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIFg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IGRjOWM3NTQ1ZWNmY2QzMTRkY2Y5MzJhNzNhZTc2N2Rk
NWFhYzgwZWQuLjk1ZWRkNTcyNzI5OWM1ZjMzMWRjZDZkYjQwNjU5MzAwOGRjZWJmNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hUYWJsZS5oCkBAIC00MDIsNyArNDAyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8v
IHdpdGggc29tZSBvdGhlciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNp
b24gaWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5CiAgICAgICAgIC8vIGluIHRoZSB0YWJsZS4KICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkKFQmJiBrZXksIEV4dHJhJiYpOwotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+
IEFkZFJlc3VsdCBhZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYp
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwg
dHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGRQYXNzaW5nSGFzaENvZGUoVCYmIGtleSwgRXh0
cmEmJik7CiAKICAgICAgICAgaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIHsgcmV0
dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQogICAgICAgICBjb25zdF9p
dGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgeyByZXR1cm4gZmluZDxJZGVu
dGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9CkBAIC04ODYsNyArODg2LDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50OyAKICAgICAgICAgfQogCi0gICAg
ICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5LCBrZXksIHN0ZDo6Zm9yd2FyZDxF
eHRyYT4oZXh0cmEpKTsKKyAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnks
IHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSk7CiAgICAg
ICAgICsrbV9rZXlDb3VudDsKICAgICAgICAgCiAgICAgICAgIGlmIChzaG91bGRFeHBhbmQoKSkK
QEAgLTg5OSw3ICs4OTksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJh
PgotICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQm
IGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKSAtPiBBZGRSZXN1bHQKKyAgICBpbmxpbmUgYXV0byBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRyYSYmIGV4dHJhKSAtPiBB
ZGRSZXN1bHQKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwog
CkBAIC05MjMsOCArOTIzLDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBpbml0aWFs
aXplQnVja2V0KCplbnRyeSk7CiAgICAgICAgICAgICAtLW1fZGVsZXRlZENvdW50OwogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwg
a2V5LCBleHRyYSwgaCk7CisKKyAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50
cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+KGV4dHJhKSwgaCk7
CiAgICAgICAgICsrbV9rZXlDb3VudDsKIAogICAgICAgICBpZiAoc2hvdWxkRXhwYW5kKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg5Y2Jj
MzZhMDhiZjBkMjk4ZThhYzM0YmYzYjBiNTcyZWY5MTkwZC4uMjRmZWYyZGZmOTNkMDZiNWY4OWNj
ZjRjZWQwYmU1YjlhYWRlZmJhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgSGFzaE1hcCBzaG91bGQgd29yayB3
aXRoIG1vdmUtb25seSBrZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjEzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIEFkZCB0ZXN0LgorCisyMDEzLTA5LTE2
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgV1RGOjpE
ZXF1ZSBzaG91bGQgd29yayB3aXRoIG1vdmUgb25seSB0eXBlcwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDQ2CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggZWMxMzMzNGZmYmI2ZGIwNDg0ZjMwNjczZWM2
NDI4OWI5NzI1MDA0MC4uMTc0MTY1NTQyYjlkNjIyOTdhNDJiYzQ3Zjc1Zjk1MTcxZmM3MTcwZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIk1vdmVPbmx5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIApAQCAtODIsNyArODMsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBEb3VibGVIYXNoQ29s
bGlzaW9ucykKICAgICBBU1NFUlRfRVEobWFwLmdldChuZWdhdGl2ZVplcm9LZXkpLCAzKTsKIH0K
IAotVEVTVChXVEZfSGFzaE1hcCwgTW92ZU9ubHkpCitURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25s
eVZhbHVlcykKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBNb3ZlT25seT4gbW92ZU9ubHlWYWx1
ZXM7CiAKQEAgLTk2LDEwICs5NywzNiBAQCBURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seSkKICAg
ICAgICAgQVNTRVJUX0ZBTFNFKGl0ID09IG1vdmVPbmx5VmFsdWVzLmVuZCgpKTsKICAgICB9CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgNTA7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKG1vdmVPbmx5VmFsdWVzLnRha2Uo
aSArIDEpLnZhbHVlKCksIGkgKyAxKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyA1MCA8IDEw
MDsgKytpKQogICAgICAgICBBU1NFUlRfVFJVRShtb3ZlT25seVZhbHVlcy5yZW1vdmUoaSArIDEp
KTsKIAogICAgIEFTU0VSVF9UUlVFKG1vdmVPbmx5VmFsdWVzLmlzRW1wdHkoKSk7CiB9CiAKK1RF
U1QoV1RGX0hhc2hNYXAsIE1vdmVPbmx5S2V5cykKK3sKKyAgICBIYXNoTWFwPE1vdmVPbmx5LCB1
bnNpZ25lZD4gbW92ZU9ubHlLZXlzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICBNb3ZlT25seSBtb3ZlT25seShpICsgMSk7CisgICAgICAgIG1vdmVP
bmx5S2V5cy5zZXQoc3RkOjptb3ZlKG1vdmVPbmx5KSwgaSArIDEpOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgYXV0byBpdCA9IG1vdmVP
bmx5S2V5cy5maW5kKE1vdmVPbmx5KGkgKyAxKSk7CisgICAgICAgIEFTU0VSVF9GQUxTRShpdCA9
PSBtb3ZlT25seUtleXMuZW5kKCkpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgMTAwOyArK2kpCisgICAgICAgIEFTU0VSVF9GQUxTRShtb3ZlT25seUtleXMuYWRkKE1vdmVP
bmx5KGkgKyAxKSwgaSArIDEpLmlzTmV3RW50cnkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCAxMDA7ICsraSkKKyAgICAgICAgQVNTRVJUX1RSVUUobW92ZU9ubHlLZXlzLnJlbW92ZShN
b3ZlT25seShpICsgMSkpKTsKKworICAgIEFTU0VSVF9UUlVFKG1vdmVPbmx5S2V5cy5pc0VtcHR5
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211848</attachid>
            <date>2013-09-16 17:56:58 -0700</date>
            <delta_ts>2013-09-16 18:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121310-20130916175658.patch</filename>
            <type>text/plain</type>
            <size>19820</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMjZkNmQ3ZGI4Y2RlOTg1MGMwYmQ3
NGJlMDBiODY1NzNkZWJlODQuLjkyMDNhMmZmZTFiYWNhMTkwODg5ZmQ1ODUyMjMyYjczZWZmOGEz
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTMtMDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBIYXNoTWFwIHNob3VsZCB3b3JrIHdpdGggbW92
ZS1vbmx5IGtleXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBleHRyYSBvdmVybG9hZHMgZm9yIGFkZCBhbmQgc2V0IHdoZXJlIHRoZSBrZXkgaXMg
YW4gcnZhbHVlIHJlZmVyZW5jZSwgYnV0IG5vdCBhCisgICAgICAgIHRlbXBsYXRlIHBhcmFtZXRl
ciBydmFsdWUgcmVmZXJlbmNlLiBUaGlzIHdheSB3ZSdsbCBjb2VyY2UgdGhlIGtleSBwYXJhbWV0
ZXIgdG8gaGF2ZSB0aGUgZXhwZWN0ZWQKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBwYXNz
ZWQgaW4gdHlwZSwgY2F1c2luZyBtYXAuYWRkKFN0cmluZ0ltcGw6OmNyZWF0ZSgiSGVsbG8iKSwg
MTIzKSB3b3JrIHdoZW4gdGhlCisgICAgICAgIHR5cGUgb2YgbWFwIGlzIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4uCisKKyAgICAgICAgQWxzbywgc3ByaW5rbGUgJiYgYW5kIHN0ZDo6Zm9yd2Fy
ZCB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAg
ICogd3RmL0hhc2hUYWJsZS5oOgorCisyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgTWVzc2FnZVF1ZXVlIHNob3VsZCB1c2UgYSBEZXF1
ZSBvZiBPd25QdHJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE0NTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0Y2M0MWU1ZmE4OTlhNTZhNjVjNTYzMzMwNDlj
MWI4ZTYwZGQ3NTAuLjU0NGE4MmY2ZDJjNDcyZTM2YjNlMzdkNGYwMjBiYWZkOWVjZmEwNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wOS0xNiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEhhc2hNYXAgc2hvdWxkIHdvcmsgd2l0aCBt
b3ZlLW9ubHkga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRoZSBjYWxsIHNpdGVzIG5vdyB0aGF0IEhhc2hNYXA6OnRha2UgZG9lc24n
dCByZXR1cm4gYSBQYXNzT3duUHRyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdp
b25JbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJjZSk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZUZv
clJlbW92YWwpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKwogMjAx
My0wOS0xNiAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBGaXggY3JlYXRpb24gb2YgZW1iZWRkZWQgSlMgYW5kIENTUyBmaWxlcyBvbiBjbWFr
ZSBiYXNlZCBwb3J0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCA3NGE3ODhjNjc2NDc1NmMzZTYxZDdhMWMyNWIz
MzJmMjMwMDk5ZWM5Li5iNDliNzliZGEzNjVlZDAzMzk1OGJhZjkyNzdjNDEyOTQwMDJhNmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCkBAIC0xMDAsMTcgKzEwMCwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
Ly8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2Nh
dGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFs
dWUgd2FzIGFjdHVhbGx5IGFkZGVkCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFkZFJl
c3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIFYmJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFY+IEFkZFJlc3VsdCBzZXQoS2V5VHlwZSYmLCBWJiYpOwogCiAgICAgICAgIC8vIGRvZXMgbm90
aGluZyBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBp
cyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAv
LyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBh
ZGRlZAotICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5U
eXBlKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChjb25zdCBL
ZXlUeXBlJiwgViYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFk
ZChLZXlUeXBlJiYsIFYmJik7CiAKICAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYp
OwogICAgICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgIHZvaWQgY2xlYXIoKTsK
IAotICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmKTsgLy8gZWZm
aWNpZW50IGNvbWJpbmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQorICAgICAgICBNYXBwZWRUeXBl
IHRha2UoY29uc3QgS2V5VHlwZSYpOyAvLyBlZmZpY2llbnQgY29tYmluYXRpb24gb2YgZ2V0IHdp
dGggcmVtb3ZlCiAKICAgICAgICAgLy8gQW4gYWx0ZXJuYXRlIHZlcnNpb24gb2YgZmluZCgpIHRo
YXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8g
d2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lv
bi4gSGFzaFRyYW5zbGF0b3IKQEAgLTEyNywxNSArMTI5LDE4IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmKTsKICAgICAgICAgLy8g
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25zdCBUJik7CiAgICAgICAg
IC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFz
aENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVD4gQWRkUmVzdWx0IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlwZSk7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBW
PiBBZGRSZXN1bHQgYWRkKEsmJiwgViYmKTsKIAogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2V5KGNvbnN0IEtleVR5
cGUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIFQmJik7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVT
ZXQoSyYmLCBWJiYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+
CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoSyYmLCBWJiYpOwogCiAgICAgICAgIEhhc2hU
YWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0yMjcsOSArMjMyLDkgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNo
RnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1
cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxv
Y2F0aW9uLCBjb25zdCBVJiBrZXksIFYmJiBtYXBwZWQpCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBs
b2NhdGlvbiwgVSYmIGtleSwgViYmIG1hcHBlZCkKICAgICAgICAgewotICAgICAgICAgICAgbG9j
YXRpb24ua2V5ID0ga2V5OworICAgICAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJk
PFU+KGtleSk7CiAgICAgICAgICAgICBsb2NhdGlvbi52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPiht
YXBwZWQpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTIzOCwxMCArMjQzLDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6Omhhc2goa2V5KTsgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBi
KSB7IHJldHVybiBUcmFuc2xhdG9yOjplcXVhbChhLCBiKTsgfQotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUo
VCYgbG9jYXRpb24sIGNvbnN0IFUmIGtleSwgY29uc3QgViYgbWFwcGVkLCB1bnNpZ25lZCBoYXNo
Q29kZSkKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYga2V5LCBWJiYgbWFwcGVk
LCB1bnNpZ25lZCBoYXNoQ29kZSkKICAgICAgICAgewogICAgICAgICAgICAgVHJhbnNsYXRvcjo6
dHJhbnNsYXRlKGxvY2F0aW9uLmtleSwga2V5LCBoYXNoQ29kZSk7Ci0gICAgICAgICAgICBWYWx1
ZVRyYWl0czo6VmFsdWVUcmFpdHM6OnN0b3JlKG1hcHBlZCwgbG9jYXRpb24udmFsdWUpOworICAg
ICAgICAgICAgbG9jYXRpb24udmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsKICAgICAg
ICAgfQogICAgIH07CiAKQEAgLTMzNSwzNyArMzQwLDU5IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRy
YWl0c0FyZz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAg
IEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6
Zm9yd2FyZDxWPih2YWx1ZSkpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3Rpbmcg
aGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFk
ZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFw
cGVkVHJhaXRzQXJnPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgYXV0byBIYXNoTWFw
PEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0Fy
Zz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAg
IHsKLSAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXksIHN0ZDo6Zm9yd2Fy
ZDxUPihtYXBwZWQpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2gg
dGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGlubGluZVNldChr
ZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotICAg
IGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVk
UGFzc0luVHlwZSB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OnNldChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAt
PiBBZGRSZXN1bHQKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFz
c2luZ0hhc2hDb2RlPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRy
YW5zbGF0b3I+PihrZXksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGlubGluZVNldChzdGQ6Om1v
dmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci0gICAgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYg
a2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAg
IGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhh
c2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRyYW5zbGF0b3I+PihzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhh
c2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBL
ZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBUJiYgbWFw
cGVkKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIHJldHVybiBpbmxpbmVBZGQoc3RkOjpt
b3ZlKGtleSksIG1hcHBlZCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgog
ICAgIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQogICAgIHsKQEAgLTM5OCwxNCArNDI1
LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0
cz4KLSAgICBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25z
dCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFBhc3NPdXRUeXBlCisgICAgYXV0byBIYXNoTWFwPFQs
IFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5KSAtPiBNYXBw
ZWRUeXBlCiAgICAgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAgICAg
aWYgKGl0ID09IGVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGFzc091
dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRUeXBl
IHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuIE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpOworICAgICAgICBNYXBwZWRUeXBlIHZh
bHVlID0gc3RkOjptb3ZlKGl0LT52YWx1ZSk7CiAgICAgICAgIHJlbW92ZShpdCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBkYzljNzU0NWVjZmNkMzE0ZGNmOTMyYTczYWU3Njdk
ZDVhYWM4MGVkLi45NWVkZDU3MjcyOTljNWYzMzFkY2Q2ZGI0MDY1OTMwMDhkY2ViZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuaApAQCAtNDAyLDcgKzQwMiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAv
LyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJz
aW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUuCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBl
bmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZChUJiYga2V5LCBFeHRyYSYmKTsKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJh
PiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKFQmJiBrZXksIEV4
dHJhJiYpOwogCiAgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJl
dHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3Rf
aXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRl
bnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQpAQCAtODg2LDcgKzg4Niw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsgCiAgICAgICAgIH0KIAotICAg
ICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwga2V5LCBzdGQ6OmZvcndhcmQ8
RXh0cmE+KGV4dHJhKSk7CisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5
LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSkpOwogICAg
ICAgICArK21fa2V5Q291bnQ7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRXhwYW5kKCkp
CkBAIC04OTksNyArODk5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRy
YT4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBU
JiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkgLT4gQWRkUmVzdWx0CisgICAgaW5saW5lIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4g
QWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsK
IApAQCAtOTIzLDggKzkyMyw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgaW5pdGlh
bGl6ZUJ1Y2tldCgqZW50cnkpOwogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsKICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnks
IGtleSwgZXh0cmEsIGgpOworCisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVu
dHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSksIGgp
OwogICAgICAgICArK21fa2V5Q291bnQ7CiAKICAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCBmOTlmNjRkZDBj
ZGRlODlkMTJiMDVhMDIyYzgyZmJlZTZjYTlhY2FlLi40ZGI1NGM0OGVlNDdiNzE0NzZlMjk3M2Mx
NzBmMjUzOTRkMmQyN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlbmRlckJveFJlZ2lvbkluZm8qIFJlbmRlclJlZ2lv
bjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqIGJveCwKICAgICByZXR1
cm4gYm94SW5mby5nZXQoKTsKIH0KIAotUGFzc093blB0cjxSZW5kZXJCb3hSZWdpb25JbmZvPiBS
ZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCogYm94
KQorT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IFJlbmRlclJlZ2lvbjo6dGFrZVJlbmRlckJv
eFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gpCiB7CiAgICAgcmV0dXJuIG1fcmVuZGVy
Qm94UmVnaW9uSW5mby50YWtlKGJveCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmgKaW5kZXggZTc5YzM5ZjBjNmIxYTA5OTZmYjg0OGZiNGIxMTEyNjIwMzMyNDEzOS4u
ZGYwNTM5MWY5MTcwNzc2MDhiYzUzNTNmYzM2Nzg1ODdhOTVmMmY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyQm94UmVnaW9uSW5mbyogcmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gq
KSBjb25zdDsKICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiBzZXRSZW5kZXJCb3hSZWdpb25JbmZv
KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQgbG9naWNhbExlZnRJbnNldCwgTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHRJbnNldCwKICAgICAgICAgYm9vbCBjb250YWluaW5nQmxvY2tDaGFpbklz
SW5zZXQpOwotICAgIFBhc3NPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gdGFrZVJlbmRlckJv
eFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94Kik7CisgICAgT3duUHRyPFJlbmRlckJveFJlZ2lv
bkluZm8+IHRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCopOwogICAgIHZv
aWQgcmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqKTsKIAogICAgIHZv
aWQgZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcApp
bmRleCBmOGM3NDVhODhmOTFjMGQ0ZjRmNGE3MGExOGE4NzE4MmMwZGU5M2YxLi4zYzk0ZDk3ZjQ1
MWMyOTA5ODI3YWZjNTJhNzRiZWZmYjMwODA0Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcApA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OnJlZ2lz
dGVyUmVzb3VyY2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3duUHRyPFNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBjbGllbnRzKGV4dGVuc2lvbnMu
cmVtb3ZlUGVuZGluZ1Jlc291cmNlKG1faWQpKTsKKyAgICBPd25QdHI8U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpTVkdQZW5kaW5nRWxlbWVudHM+IGNsaWVudHMgPSBleHRlbnNpb25zLnJlbW92ZVBl
bmRpbmdSZXNvdXJjZShtX2lkKTsKIAogICAgIC8vIENhY2hlIHVzIHdpdGggdGhlIG5ldyBpZC4K
ICAgICBleHRlbnNpb25zLmFkZFJlc291cmNlKG1faWQsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA5ZWU2MjUwZWQ3MGQ4YWE4NWVj
ZDdhNWM0MmIyNDM5OGJlODg3NzNiLi5iZTRjYjgyMzNmNGJkNzA3YjQxZTJhYzc0NGU3ZjE0NTY4
ZjU2NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNw
cApAQCAtMjUwLDEzICsyNTAsMTMgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92
ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50KiBlbGVtZW50KQogICAgIH0KIH0K
IAotUGFzc093blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50cz4g
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKK093blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVt
ZW50cz4gU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVzb3VyY2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCkKIHsKICAgICBBU1NFUlQobV9wZW5kaW5nUmVzb3VyY2VzLmNvbnRh
aW5zKGlkKSk7CiAgICAgcmV0dXJuIG1fcGVuZGluZ1Jlc291cmNlcy50YWtlKGlkKTsKIH0KIAot
UGFzc093blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50cz4gU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpCitPd25QdHI8U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdQZW5k
aW5nRWxlbWVudHM+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlUGVuZGluZ1Jlc291cmNl
Rm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogewogICAgIEFTU0VSVChtX3BlbmRp
bmdSZXNvdXJjZXNGb3JSZW1vdmFsLmNvbnRhaW5zKGlkKSk7CiAgICAgcmV0dXJuIG1fcGVuZGlu
Z1Jlc291cmNlc0ZvclJlbW92YWwudGFrZShpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmgKaW5kZXggMTZlMjIyNDk1NDgwMTJhMWZmZTkwNGM3YmI5NGZlMTIy
NzBiMjA1My4uYTRkOGJmNmIwNzBmNjM3ODc3YzZiYjhlNjcyZjlkZGU5NGFmYTRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaApAQCAtOTksMTQgKzk5LDE0
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRWxlbWVudFBlbmRpbmdSZXNvdXJjZShFbGVtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckhhc1BlbmRpbmdS
ZXNvdXJjZXNJZlBvc3NpYmxlKEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUVsZW1lbnRGcm9t
UGVuZGluZ1Jlc291cmNlcyhFbGVtZW50Kik7Ci0gICAgUGFzc093blB0cjxTVkdQZW5kaW5nRWxl
bWVudHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKTsKKyAg
ICBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPiByZW1vdmVQZW5kaW5nUmVzb3VyY2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMg
YXJlIHVzZWQgZm9yIHNjaGVkdWxpbmcgYSBwZW5kaW5nIHJlc291cmNlIHRvIGJlIHJlbW92ZWQu
CiAgICAgdm9pZCBtYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwoY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAgICAgRWxlbWVudCogcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzRm9y
UmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBQYXNzT3duUHRy
PFNWR1BlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9yUmVtb3ZhbChjb25z
dCBBdG9taWNTdHJpbmcmKTsKKyAgICBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPiByZW1vdmVQ
ZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc4OWNi
YzM2YTA4YmYwZDI5OGU4YWMzNGJmM2IwYjU3MmVmOTE5MGQuLjI0ZmVmMmRmZjkzZDA2YjVmODlj
Y2Y0Y2VkMGJlNWI5YWFkZWZiYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMy0wOS0xNiAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIEhhc2hNYXAgc2hvdWxkIHdvcmsg
d2l0aCBtb3ZlLW9ubHkga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGQgdGVzdC4KKworMjAxMy0wOS0x
NiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIFdURjo6
RGVxdWUgc2hvdWxkIHdvcmsgd2l0aCBtb3ZlIG9ubHkgdHlwZXMKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTQ0NgogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4IGVjMTMzMzRmZmJiNmRiMDQ4NGYzMDY3M2Vj
NjQyODliOTcyNTAwNDAuLjE3NDE2NTU0MmI5ZDYyMjk3YTQyYmM0N2Y3NWY5NTE3MWZjNzE3MGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJNb3ZlT25seS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKQEAgLTgyLDcgKzgzLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRG91YmxlSGFzaENv
bGxpc2lvbnMpCiAgICAgQVNTRVJUX0VRKG1hcC5nZXQobmVnYXRpdmVaZXJvS2V5KSwgMyk7CiB9
CiAKLVRFU1QoV1RGX0hhc2hNYXAsIE1vdmVPbmx5KQorVEVTVChXVEZfSGFzaE1hcCwgTW92ZU9u
bHlWYWx1ZXMpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTW92ZU9ubHk+IG1vdmVPbmx5VmFs
dWVzOwogCkBAIC05NiwxMCArOTcsMzYgQEAgVEVTVChXVEZfSGFzaE1hcCwgTW92ZU9ubHkpCiAg
ICAgICAgIEFTU0VSVF9GQUxTRShpdCA9PSBtb3ZlT25seVZhbHVlcy5lbmQoKSk7CiAgICAgfQog
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDUwOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShtb3ZlT25seVZhbHVlcy50YWtl
KGkgKyAxKS52YWx1ZSgpLCBpICsgMSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgNTAgPCAx
MDA7ICsraSkKICAgICAgICAgQVNTRVJUX1RSVUUobW92ZU9ubHlWYWx1ZXMucmVtb3ZlKGkgKyAx
KSk7CiAKICAgICBBU1NFUlRfVFJVRShtb3ZlT25seVZhbHVlcy5pc0VtcHR5KCkpOwogfQogCitU
RVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seUtleXMpCit7CisgICAgSGFzaE1hcDxNb3ZlT25seSwg
dW5zaWduZWQ+IG1vdmVPbmx5S2V5czsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAw
OyArK2kpIHsKKyAgICAgICAgTW92ZU9ubHkgbW92ZU9ubHkoaSArIDEpOworICAgICAgICBtb3Zl
T25seUtleXMuc2V0KHN0ZDo6bW92ZShtb3ZlT25seSksIGkgKyAxKTsKKyAgICB9CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgIGF1dG8gaXQgPSBtb3Zl
T25seUtleXMuZmluZChNb3ZlT25seShpICsgMSkpOworICAgICAgICBBU1NFUlRfRkFMU0UoaXQg
PT0gbW92ZU9ubHlLZXlzLmVuZCgpKTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDEwMDsgKytpKQorICAgICAgICBBU1NFUlRfRkFMU0UobW92ZU9ubHlLZXlzLmFkZChNb3Zl
T25seShpICsgMSksIGkgKyAxKS5pc05ld0VudHJ5KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMTAwOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKG1vdmVPbmx5S2V5cy5yZW1vdmUo
TW92ZU9ubHkoaSArIDEpKSk7CisKKyAgICBBU1NFUlRfVFJVRShtb3ZlT25seUtleXMuaXNFbXB0
eSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211849</attachid>
            <date>2013-09-16 18:07:43 -0700</date>
            <delta_ts>2013-09-17 08:47:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121310-20130916180743.patch</filename>
            <type>text/plain</type>
            <size>22531</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMjZkNmQ3ZGI4Y2RlOTg1MGMwYmQ3
NGJlMDBiODY1NzNkZWJlODQuLjkyMDNhMmZmZTFiYWNhMTkwODg5ZmQ1ODUyMjMyYjczZWZmOGEz
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTMtMDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBIYXNoTWFwIHNob3VsZCB3b3JrIHdpdGggbW92
ZS1vbmx5IGtleXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBleHRyYSBvdmVybG9hZHMgZm9yIGFkZCBhbmQgc2V0IHdoZXJlIHRoZSBrZXkgaXMg
YW4gcnZhbHVlIHJlZmVyZW5jZSwgYnV0IG5vdCBhCisgICAgICAgIHRlbXBsYXRlIHBhcmFtZXRl
ciBydmFsdWUgcmVmZXJlbmNlLiBUaGlzIHdheSB3ZSdsbCBjb2VyY2UgdGhlIGtleSBwYXJhbWV0
ZXIgdG8gaGF2ZSB0aGUgZXhwZWN0ZWQKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBwYXNz
ZWQgaW4gdHlwZSwgY2F1c2luZyBtYXAuYWRkKFN0cmluZ0ltcGw6OmNyZWF0ZSgiSGVsbG8iKSwg
MTIzKSB3b3JrIHdoZW4gdGhlCisgICAgICAgIHR5cGUgb2YgbWFwIGlzIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4uCisKKyAgICAgICAgQWxzbywgc3ByaW5rbGUgJiYgYW5kIHN0ZDo6Zm9yd2Fy
ZCB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAg
ICogd3RmL0hhc2hUYWJsZS5oOgorCisyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgTWVzc2FnZVF1ZXVlIHNob3VsZCB1c2UgYSBEZXF1
ZSBvZiBPd25QdHJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE0NTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0Y2M0MWU1ZmE4OTlhNTZhNjVjNTYzMzMwNDlj
MWI4ZTYwZGQ3NTAuLjU0NGE4MmY2ZDJjNDcyZTM2YjNlMzdkNGYwMjBiYWZkOWVjZmEwNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wOS0xNiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEhhc2hNYXAgc2hvdWxkIHdvcmsgd2l0aCBt
b3ZlLW9ubHkga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRoZSBjYWxsIHNpdGVzIG5vdyB0aGF0IEhhc2hNYXA6OnRha2UgZG9lc24n
dCByZXR1cm4gYSBQYXNzT3duUHRyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdp
b25JbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJjZSk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZUZv
clJlbW92YWwpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKwogMjAx
My0wOS0xNiAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBGaXggY3JlYXRpb24gb2YgZW1iZWRkZWQgSlMgYW5kIENTUyBmaWxlcyBvbiBjbWFr
ZSBiYXNlZCBwb3J0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCA3NGE3ODhjNjc2NDc1NmMzZTYxZDdhMWMyNWIz
MzJmMjMwMDk5ZWM5Li5iNDliNzliZGEzNjVlZDAzMzk1OGJhZjkyNzdjNDEyOTQwMDJhNmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCkBAIC0xMDAsMTcgKzEwMCwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
Ly8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2Nh
dGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFs
dWUgd2FzIGFjdHVhbGx5IGFkZGVkCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFkZFJl
c3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIFYmJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFY+IEFkZFJlc3VsdCBzZXQoS2V5VHlwZSYmLCBWJiYpOwogCiAgICAgICAgIC8vIGRvZXMgbm90
aGluZyBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBp
cyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAv
LyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBh
ZGRlZAotICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5U
eXBlKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChjb25zdCBL
ZXlUeXBlJiwgViYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFk
ZChLZXlUeXBlJiYsIFYmJik7CiAKICAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYp
OwogICAgICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgIHZvaWQgY2xlYXIoKTsK
IAotICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmKTsgLy8gZWZm
aWNpZW50IGNvbWJpbmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQorICAgICAgICBNYXBwZWRUeXBl
IHRha2UoY29uc3QgS2V5VHlwZSYpOyAvLyBlZmZpY2llbnQgY29tYmluYXRpb24gb2YgZ2V0IHdp
dGggcmVtb3ZlCiAKICAgICAgICAgLy8gQW4gYWx0ZXJuYXRlIHZlcnNpb24gb2YgZmluZCgpIHRo
YXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8g
d2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lv
bi4gSGFzaFRyYW5zbGF0b3IKQEAgLTEyNywxNSArMTI5LDE4IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmKTsKICAgICAgICAgLy8g
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25zdCBUJik7CiAgICAgICAg
IC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFz
aENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVD4gQWRkUmVzdWx0IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlwZSk7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBW
PiBBZGRSZXN1bHQgYWRkKEsmJiwgViYmKTsKIAogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2V5KGNvbnN0IEtleVR5
cGUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIFQmJik7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVT
ZXQoSyYmLCBWJiYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+
CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoSyYmLCBWJiYpOwogCiAgICAgICAgIEhhc2hU
YWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0yMjcsOSArMjMyLDkgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNo
RnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1
cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxv
Y2F0aW9uLCBjb25zdCBVJiBrZXksIFYmJiBtYXBwZWQpCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBs
b2NhdGlvbiwgVSYmIGtleSwgViYmIG1hcHBlZCkKICAgICAgICAgewotICAgICAgICAgICAgbG9j
YXRpb24ua2V5ID0ga2V5OworICAgICAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJk
PFU+KGtleSk7CiAgICAgICAgICAgICBsb2NhdGlvbi52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPiht
YXBwZWQpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTIzOCwxMCArMjQzLDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6Omhhc2goa2V5KTsgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBi
KSB7IHJldHVybiBUcmFuc2xhdG9yOjplcXVhbChhLCBiKTsgfQotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUo
VCYgbG9jYXRpb24sIGNvbnN0IFUmIGtleSwgY29uc3QgViYgbWFwcGVkLCB1bnNpZ25lZCBoYXNo
Q29kZSkKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYga2V5LCBWJiYgbWFwcGVk
LCB1bnNpZ25lZCBoYXNoQ29kZSkKICAgICAgICAgewogICAgICAgICAgICAgVHJhbnNsYXRvcjo6
dHJhbnNsYXRlKGxvY2F0aW9uLmtleSwga2V5LCBoYXNoQ29kZSk7Ci0gICAgICAgICAgICBWYWx1
ZVRyYWl0czo6VmFsdWVUcmFpdHM6OnN0b3JlKG1hcHBlZCwgbG9jYXRpb24udmFsdWUpOworICAg
ICAgICAgICAgbG9jYXRpb24udmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsKICAgICAg
ICAgfQogICAgIH07CiAKQEAgLTMzNSwzNyArMzQwLDU5IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRy
YWl0c0FyZz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAg
IEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6
Zm9yd2FyZDxWPih2YWx1ZSkpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3Rpbmcg
aGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFk
ZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFw
cGVkVHJhaXRzQXJnPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgYXV0byBIYXNoTWFw
PEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0Fy
Zz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAg
IHsKLSAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXksIHN0ZDo6Zm9yd2Fy
ZDxUPihtYXBwZWQpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2gg
dGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGlubGluZVNldChr
ZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotICAg
IGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVk
UGFzc0luVHlwZSB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OnNldChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAt
PiBBZGRSZXN1bHQKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFz
c2luZ0hhc2hDb2RlPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRy
YW5zbGF0b3I+PihrZXksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGlubGluZVNldChzdGQ6Om1v
dmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci0gICAgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYg
a2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAg
IGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhh
c2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRyYW5zbGF0b3I+PihzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhh
c2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBL
ZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBUJiYgbWFw
cGVkKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIHJldHVybiBpbmxpbmVBZGQoc3RkOjpt
b3ZlKGtleSksIG1hcHBlZCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgog
ICAgIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQogICAgIHsKQEAgLTM5OCwxNCArNDI1
LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0
cz4KLSAgICBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25z
dCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFBhc3NPdXRUeXBlCisgICAgYXV0byBIYXNoTWFwPFQs
IFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5KSAtPiBNYXBw
ZWRUeXBlCiAgICAgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAgICAg
aWYgKGl0ID09IGVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGFzc091
dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRUeXBl
IHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuIE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpOworICAgICAgICBNYXBwZWRUeXBlIHZh
bHVlID0gc3RkOjptb3ZlKGl0LT52YWx1ZSk7CiAgICAgICAgIHJlbW92ZShpdCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBkYzljNzU0NWVjZmNkMzE0ZGNmOTMyYTczYWU3Njdk
ZDVhYWM4MGVkLi45NWVkZDU3MjcyOTljNWYzMzFkY2Q2ZGI0MDY1OTMwMDhkY2ViZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuaApAQCAtNDAyLDcgKzQwMiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAv
LyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJz
aW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUuCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBl
bmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZChUJiYga2V5LCBFeHRyYSYmKTsKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJh
PiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKFQmJiBrZXksIEV4
dHJhJiYpOwogCiAgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJl
dHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3Rf
aXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRl
bnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQpAQCAtODg2LDcgKzg4Niw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsgCiAgICAgICAgIH0KIAotICAg
ICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwga2V5LCBzdGQ6OmZvcndhcmQ8
RXh0cmE+KGV4dHJhKSk7CisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5
LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSkpOwogICAg
ICAgICArK21fa2V5Q291bnQ7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRXhwYW5kKCkp
CkBAIC04OTksNyArODk5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRy
YT4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBU
JiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkgLT4gQWRkUmVzdWx0CisgICAgaW5saW5lIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4g
QWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsK
IApAQCAtOTIzLDggKzkyMyw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgaW5pdGlh
bGl6ZUJ1Y2tldCgqZW50cnkpOwogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsKICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnks
IGtleSwgZXh0cmEsIGgpOworCisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVu
dHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSksIGgp
OwogICAgICAgICArK21fa2V5Q291bnQ7CiAKICAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBjZTg0Yzk0NjgwYzU3ODdiMTliNTU1Yzc3NzhkYWI3
ZWM5M2I5YTNmLi5mNzhkNmQyY2RmMGQ5YjgzMDg2ZGUyMWM2MDIxMDc0OWM1OTAzYzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
UGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gZ2V0U2hhZGVyUHJvZ3JhbShU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zLCBS
ZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBt
X3Byb2dyYW1zLmFkZChvcHRpb25zLCAwKTsKKyAgICAgICAgICAgIEhhc2hNYXA8VGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMsIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcHJvZ3JhbXMuYWRkKG9wdGlvbnMsIG51bGxw
dHIpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3Jl
YXRlKG1fY29udGV4dCwgb3B0aW9ucyk7CiAKQEAgLTkzNiw3ICs5MzYsNyBAQCBib29sIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJpdG1hcFRleHR1cmUmIHRhcmdldCwg
Y29uc3QgQml0bWFwVAogICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3Jh
bSA9IGN1c3RvbUZpbHRlci0+cHJvZ3JhbSgpOwogICAgICAgICByZW5kZXJlciA9IEN1c3RvbUZp
bHRlclJlbmRlcmVyOjpjcmVhdGUobV9jb250ZXh0M0QsIHByb2dyYW0tPnByb2dyYW1UeXBlKCks
IGN1c3RvbUZpbHRlci0+cGFyYW1ldGVycygpLCAKICAgICAgICAgICAgIGN1c3RvbUZpbHRlci0+
bWVzaFJvd3MoKSwgY3VzdG9tRmlsdGVyLT5tZXNoQ29sdW1ucygpLCBjdXN0b21GaWx0ZXItPm1l
c2hUeXBlKCkpOwotICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5hZGQocHJvZ3JhbS0+cHJvZ3JhbUluZm8oKSwg
MCk7CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X2N1c3RvbUZpbHRlclByb2dyYW1zLmFkZChwcm9ncmFtLT5wcm9ncmFtSW5mbygpLCBudWxscHRy
KTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fY29u
dGV4dDNELCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSk7CiAgICAgICAgIHJlbmRlcmVy
LT5zZXRDb21waWxlZFByb2dyYW0ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CkBAIC05NDksNyAr
OTQ5LDcgQEAgYm9vbCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdVc2luZ0N1c3RvbUZpbHRlcihCaXRt
YXBUZXh0dXJlJiB0YXJnZXQsIGNvbnN0IEJpdG1hcFQKICAgICAgICAgcmVuZGVyZXIgPSBDdXN0
b21GaWx0ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dDNELCBwcm9ncmFtLT5wcm9ncmFtSW5m
bygpLnByb2dyYW1UeXBlKCksIGN1c3RvbUZpbHRlci0+cGFyYW1ldGVycygpLAogICAgICAgICAg
ICAgY3VzdG9tRmlsdGVyLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXItPm1lc2hDb2x1bW5zKCks
IGN1c3RvbUZpbHRlci0+bWVzaFR5cGUoKSk7CiAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0+IGNvbXBpbGVkUHJvZ3JhbTsKLSAgICAgICAgQ3VzdG9tRmlsdGVyUHJv
Z3JhbU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMuYWRkKHBy
b2dyYW0tPnByb2dyYW1JbmZvKCksIDApOworICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5hZGQocHJvZ3JhbS0+
cHJvZ3JhbUluZm8oKSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBDdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW06OmNyZWF0ZShtX2NvbnRleHQzRCwgcHJvZ3JhbS0+dmFsaWRhdGVkVmVydGV4U2hh
ZGVyKCksIHByb2dyYW0tPnZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKCksIHByb2dyYW0tPnByb2dy
YW1JbmZvKCkucHJvZ3JhbVR5cGUoKSk7CiAgICAgICAgIHJlbmRlcmVyLT5zZXRDb21waWxlZFBy
b2dyYW0ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCmluZGV4IGY5OWY2NGRkMGNkZGU4OWQxMmIwNWEwMjJjODJmYmVlNmNh
OWFjYWUuLjRkYjU0YzQ4ZWU0N2I3MTQ3NmUyOTczYzE3MGYyNTM5NGQyZDI3YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC00NTQsNyArNDU0LDcgQEAg
UmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZv
KGNvbnN0IFJlbmRlckJveCogYm94LAogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCi1Q
YXNzT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IFJlbmRlclJlZ2lvbjo6dGFrZVJlbmRlckJv
eFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gpCitPd25QdHI8UmVuZGVyQm94UmVnaW9u
SW5mbz4gUmVuZGVyUmVnaW9uOjp0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJC
b3gqIGJveCkKIHsKICAgICByZXR1cm4gbV9yZW5kZXJCb3hSZWdpb25JbmZvLnRha2UoYm94KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCBlNzljMzlmMGM2
YjFhMDk5NmZiODQ4ZmI0YjExMTI2MjAzMzI0MTM5Li5kZjA1MzkxZjkxNzA3NzYwOGJjNTM1M2Zj
MzY3ODU4N2E5NWYyZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5o
CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCb3hSZWdpb25JbmZvKiByZW5k
ZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCopIGNvbnN0OwogICAgIFJlbmRlckJveFJl
Z2lvbkluZm8qIHNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiwgTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdEluc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodEluc2V0LAogICAg
ICAgICBib29sIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCk7Ci0gICAgUGFzc093blB0cjxS
ZW5kZXJCb3hSZWdpb25JbmZvPiB0YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJC
b3gqKTsKKyAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gdGFrZVJlbmRlckJveFJlZ2lv
bkluZm8oY29uc3QgUmVuZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJCb3hSZWdpb25J
bmZvKGNvbnN0IFJlbmRlckJveCopOwogCiAgICAgdm9pZCBkZWxldGVBbGxSZW5kZXJCb3hSZWdp
b25JbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCmluZGV4IGY4Yzc0NWE4OGY5MWMwZDRmNGY0
YTcwYTE4YTg3MTgyYzBkZTkzZjEuLjNjOTRkOTdmNDUxYzI5MDk4MjdhZmM1MmE3NGJlZmZiMzA4
MDRiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJjZSgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdQZW5k
aW5nRWxlbWVudHM+IGNsaWVudHMoZXh0ZW5zaW9ucy5yZW1vdmVQZW5kaW5nUmVzb3VyY2UobV9p
ZCkpOworICAgIE93blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50
cz4gY2xpZW50cyA9IGV4dGVuc2lvbnMucmVtb3ZlUGVuZGluZ1Jlc291cmNlKG1faWQpOwogCiAg
ICAgLy8gQ2FjaGUgdXMgd2l0aCB0aGUgbmV3IGlkLgogICAgIGV4dGVuc2lvbnMuYWRkUmVzb3Vy
Y2UobV9pZCwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCmluZGV4IDllZTYyNTBlZDcwZDhhYTg1ZWNkN2E1YzQyYjI0Mzk4YmU4ODc3M2IuLmJl
NGNiODIzM2Y0YmQ3MDdiNDFlMmFjNzQ0ZTdmMTQ1NjhmNTY1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0yNTAsMTMgKzI1MCwxMyBAQCB2
b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3Vy
Y2VzKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgfQogfQogCi1QYXNzT3duUHRyPFNWR0RvY3VtZW50
RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJl
bW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorT3duUHRyPFNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogewogICAg
IEFTU0VSVChtX3BlbmRpbmdSZXNvdXJjZXMuY29udGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9w
ZW5kaW5nUmVzb3VyY2VzLnRha2UoaWQpOwogfQogCi1QYXNzT3duUHRyPFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92
ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK093blB0
cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50cz4gU1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuY29u
dGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC50YWtl
KGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCAx
NmUyMjI0OTU0ODAxMmExZmZlOTA0YzdiYjk0ZmUxMjI3MGIyMDUzLi5hNGQ4YmY2YjA3MGY2Mzc4
NzdjNmJiOGU2NzJmOWRkZTk0YWZhNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oCkBAIC05OSwxNCArOTksMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNF
bGVtZW50UGVuZGluZ1Jlc291cmNlKEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBj
b25zdDsKICAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNlc0lmUG9zc2libGUoRWxlbWVu
dCopOwogICAgIHZvaWQgcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQq
KTsKLSAgICBQYXNzT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291
cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOworICAgIE93blB0cjxTVkdQZW5kaW5nRWxlbWVu
dHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKTsKIAogICAg
IC8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3Igc2NoZWR1bGluZyBh
IHBlbmRpbmcgcmVzb3VyY2UgdG8gYmUgcmVtb3ZlZC4KICAgICB2b2lkIG1hcmtQZW5kaW5nUmVz
b3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBFbGVtZW50KiByZW1v
dmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogCiBwcml2YXRlOgotICAgIFBhc3NPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPiByZW1v
dmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIE93
blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwo
Y29uc3QgQXRvbWljU3RyaW5nJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg5Y2JjMzZhMDhiZjBkMjk4ZThhYzM0YmYzYjBi
NTcyZWY5MTkwZC4uMjRmZWYyZGZmOTNkMDZiNWY4OWNjZjRjZWQwYmU1YjlhYWRlZmJhNCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDE2IEBACiAyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKKyAgICAgICAgSGFzaE1hcCBzaG91bGQgd29yayB3aXRoIG1vdmUtb25seSBrZXlzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjEzMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIEFkZCB0ZXN0LgorCisyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgV1RGOjpEZXF1ZSBzaG91bGQgd29yayB3aXRoIG1v
dmUgb25seSB0eXBlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxNDQ2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAK
aW5kZXggZWMxMzMzNGZmYmI2ZGIwNDg0ZjMwNjczZWM2NDI4OWI5NzI1MDA0MC4uMTc0MTY1NTQy
YjlkNjIyOTdhNDJiYzQ3Zjc1Zjk1MTcxZmM3MTcwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk1vdmVP
bmx5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtODIsNyArODMsNyBA
QCBURVNUKFdURl9IYXNoTWFwLCBEb3VibGVIYXNoQ29sbGlzaW9ucykKICAgICBBU1NFUlRfRVEo
bWFwLmdldChuZWdhdGl2ZVplcm9LZXkpLCAzKTsKIH0KIAotVEVTVChXVEZfSGFzaE1hcCwgTW92
ZU9ubHkpCitURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seVZhbHVlcykKIHsKICAgICBIYXNoTWFw
PHVuc2lnbmVkLCBNb3ZlT25seT4gbW92ZU9ubHlWYWx1ZXM7CiAKQEAgLTk2LDEwICs5NywzNiBA
QCBURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seSkKICAgICAgICAgQVNTRVJUX0ZBTFNFKGl0ID09
IG1vdmVPbmx5VmFsdWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDEwMDsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTA7ICsraSkKKyAgICAg
ICAgQVNTRVJUX0VRKG1vdmVPbmx5VmFsdWVzLnRha2UoaSArIDEpLnZhbHVlKCksIGkgKyAxKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyA1MCA8IDEwMDsgKytpKQogICAgICAgICBBU1NFUlRf
VFJVRShtb3ZlT25seVZhbHVlcy5yZW1vdmUoaSArIDEpKTsKIAogICAgIEFTU0VSVF9UUlVFKG1v
dmVPbmx5VmFsdWVzLmlzRW1wdHkoKSk7CiB9CiAKK1RFU1QoV1RGX0hhc2hNYXAsIE1vdmVPbmx5
S2V5cykKK3sKKyAgICBIYXNoTWFwPE1vdmVPbmx5LCB1bnNpZ25lZD4gbW92ZU9ubHlLZXlzOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICBNb3ZlT25s
eSBtb3ZlT25seShpICsgMSk7CisgICAgICAgIG1vdmVPbmx5S2V5cy5zZXQoc3RkOjptb3ZlKG1v
dmVPbmx5KSwgaSArIDEpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAw
OyArK2kpIHsKKyAgICAgICAgYXV0byBpdCA9IG1vdmVPbmx5S2V5cy5maW5kKE1vdmVPbmx5KGkg
KyAxKSk7CisgICAgICAgIEFTU0VSVF9GQUxTRShpdCA9PSBtb3ZlT25seUtleXMuZW5kKCkpOwor
ICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgIEFT
U0VSVF9GQUxTRShtb3ZlT25seUtleXMuYWRkKE1vdmVPbmx5KGkgKyAxKSwgaSArIDEpLmlzTmV3
RW50cnkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAgICAg
QVNTRVJUX1RSVUUobW92ZU9ubHlLZXlzLnJlbW92ZShNb3ZlT25seShpICsgMSkpKTsKKworICAg
IEFTU0VSVF9UUlVFKG1vdmVPbmx5S2V5cy5pc0VtcHR5KCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211911</attachid>
            <date>2013-09-17 08:47:25 -0700</date>
            <delta_ts>2013-09-17 09:03:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121310-20130917084726.patch</filename>
            <type>text/plain</type>
            <size>28075</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMjZkNmQ3ZGI4Y2RlOTg1MGMwYmQ3
NGJlMDBiODY1NzNkZWJlODQuLjkyMDNhMmZmZTFiYWNhMTkwODg5ZmQ1ODUyMjMyYjczZWZmOGEz
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTMtMDktMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBIYXNoTWFwIHNob3VsZCB3b3JrIHdpdGggbW92
ZS1vbmx5IGtleXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBleHRyYSBvdmVybG9hZHMgZm9yIGFkZCBhbmQgc2V0IHdoZXJlIHRoZSBrZXkgaXMg
YW4gcnZhbHVlIHJlZmVyZW5jZSwgYnV0IG5vdCBhCisgICAgICAgIHRlbXBsYXRlIHBhcmFtZXRl
ciBydmFsdWUgcmVmZXJlbmNlLiBUaGlzIHdheSB3ZSdsbCBjb2VyY2UgdGhlIGtleSBwYXJhbWV0
ZXIgdG8gaGF2ZSB0aGUgZXhwZWN0ZWQKKyAgICAgICAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBwYXNz
ZWQgaW4gdHlwZSwgY2F1c2luZyBtYXAuYWRkKFN0cmluZ0ltcGw6OmNyZWF0ZSgiSGVsbG8iKSwg
MTIzKSB3b3JrIHdoZW4gdGhlCisgICAgICAgIHR5cGUgb2YgbWFwIGlzIEhhc2hNYXA8U3RyaW5n
LCB1bnNpZ25lZD4uCisKKyAgICAgICAgQWxzbywgc3ByaW5rbGUgJiYgYW5kIHN0ZDo6Zm9yd2Fy
ZCB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAg
ICogd3RmL0hhc2hUYWJsZS5oOgorCisyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgTWVzc2FnZVF1ZXVlIHNob3VsZCB1c2UgYSBEZXF1
ZSBvZiBPd25QdHJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE0NTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0Y2M0MWU1ZmE4OTlhNTZhNjVjNTYzMzMwNDlj
MWI4ZTYwZGQ3NTAuLjU0NGE4MmY2ZDJjNDcyZTM2YjNlMzdkNGYwMjBiYWZkOWVjZmEwNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wOS0xNiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEhhc2hNYXAgc2hvdWxkIHdvcmsgd2l0aCBt
b3ZlLW9ubHkga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRoZSBjYWxsIHNpdGVzIG5vdyB0aGF0IEhhc2hNYXA6OnRha2UgZG9lc24n
dCByZXR1cm4gYSBQYXNzT3duUHRyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnRha2VSZW5kZXJCb3hSZWdp
b25JbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJjZSk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZUZv
clJlbW92YWwpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKwogMjAx
My0wOS0xNiAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBGaXggY3JlYXRpb24gb2YgZW1iZWRkZWQgSlMgYW5kIENTUyBmaWxlcyBvbiBjbWFr
ZSBiYXNlZCBwb3J0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCA3NGE3ODhjNjc2NDc1NmMzZTYxZDdhMWMyNWIz
MzJmMjMwMDk5ZWM5Li5iNDliNzliZGEzNjVlZDAzMzk1OGJhZjkyNzdjNDEyOTQwMDJhNmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYv
SGFzaE1hcC5oCkBAIC0xMDAsMTcgKzEwMCwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
Ly8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2Nh
dGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFs
dWUgd2FzIGFjdHVhbGx5IGFkZGVkCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFkZFJl
c3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIFYmJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFY+IEFkZFJlc3VsdCBzZXQoS2V5VHlwZSYmLCBWJiYpOwogCiAgICAgICAgIC8vIGRvZXMgbm90
aGluZyBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBp
cyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAv
LyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBh
ZGRlZAotICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5U
eXBlKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChjb25zdCBL
ZXlUeXBlJiwgViYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFk
ZChLZXlUeXBlJiYsIFYmJik7CiAKICAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYp
OwogICAgICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgIHZvaWQgY2xlYXIoKTsK
IAotICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKGNvbnN0IEtleVR5cGUmKTsgLy8gZWZm
aWNpZW50IGNvbWJpbmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQorICAgICAgICBNYXBwZWRUeXBl
IHRha2UoY29uc3QgS2V5VHlwZSYpOyAvLyBlZmZpY2llbnQgY29tYmluYXRpb24gb2YgZ2V0IHdp
dGggcmVtb3ZlCiAKICAgICAgICAgLy8gQW4gYWx0ZXJuYXRlIHZlcnNpb24gb2YgZmluZCgpIHRo
YXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8g
d2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lv
bi4gSGFzaFRyYW5zbGF0b3IKQEAgLTEyNywxNSArMTI5LDE4IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmKTsKICAgICAgICAgLy8g
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25zdCBUJik7CiAgICAgICAg
IC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFz
aENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVD4gQWRkUmVzdWx0IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlwZSk7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBW
PiBBZGRSZXN1bHQgYWRkKEsmJiwgViYmKTsKIAogICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2V5KGNvbnN0IEtleVR5
cGUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIFQmJik7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVT
ZXQoSyYmLCBWJiYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+
CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoSyYmLCBWJiYpOwogCiAgICAgICAgIEhhc2hU
YWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0yMjcsOSArMjMyLDkgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNo
RnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1
cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxv
Y2F0aW9uLCBjb25zdCBVJiBrZXksIFYmJiBtYXBwZWQpCisgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBs
b2NhdGlvbiwgVSYmIGtleSwgViYmIG1hcHBlZCkKICAgICAgICAgewotICAgICAgICAgICAgbG9j
YXRpb24ua2V5ID0ga2V5OworICAgICAgICAgICAgbG9jYXRpb24ua2V5ID0gc3RkOjpmb3J3YXJk
PFU+KGtleSk7CiAgICAgICAgICAgICBsb2NhdGlvbi52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPiht
YXBwZWQpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTIzOCwxMCArMjQzLDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIHN0cnVjdCBIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXIgewogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6Omhhc2goa2V5KTsgfQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBi
KSB7IHJldHVybiBUcmFuc2xhdG9yOjplcXVhbChhLCBiKTsgfQotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUo
VCYgbG9jYXRpb24sIGNvbnN0IFUmIGtleSwgY29uc3QgViYgbWFwcGVkLCB1bnNpZ25lZCBoYXNo
Q29kZSkKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYga2V5LCBWJiYgbWFwcGVk
LCB1bnNpZ25lZCBoYXNoQ29kZSkKICAgICAgICAgewogICAgICAgICAgICAgVHJhbnNsYXRvcjo6
dHJhbnNsYXRlKGxvY2F0aW9uLmtleSwga2V5LCBoYXNoQ29kZSk7Ci0gICAgICAgICAgICBWYWx1
ZVRyYWl0czo6VmFsdWVUcmFpdHM6OnN0b3JlKG1hcHBlZCwgbG9jYXRpb24udmFsdWUpOworICAg
ICAgICAgICAgbG9jYXRpb24udmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsKICAgICAg
ICAgfQogICAgIH07CiAKQEAgLTMzNSwzNyArMzQwLDU5IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRy
YWl0c0FyZz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBUJiYgbWFwcGVkKSAtPiBBZGRSZXN1bHQKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAgIGF1dG8gSGFzaE1hcDxLZXlB
cmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+Ojpp
bmxpbmVTZXQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAg
IEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6
Zm9yd2FyZDxWPih2YWx1ZSkpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3Rpbmcg
aGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFw
cGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFk
ZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hG
dW5jdGlvbnM+PihzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFw
cGVkVHJhaXRzQXJnPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgYXV0byBIYXNoTWFw
PEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0Fy
Zz46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAg
IHsKLSAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXksIHN0ZDo6Zm9yd2Fy
ZDxUPihtYXBwZWQpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2gg
dGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIGlubGluZVNldChr
ZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUWVBFPgotICAg
IGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVk
UGFzc0luVHlwZSB2YWx1ZSkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRy
YWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OnNldChLZXlUeXBlJiYga2V5LCBUJiYgbWFwcGVkKSAt
PiBBZGRSZXN1bHQKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFz
c2luZ0hhc2hDb2RlPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRy
YW5zbGF0b3I+PihrZXksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGlubGluZVNldChzdGQ6Om1v
dmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci0gICAgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYg
a2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgLT4gQWRkUmVzdWx0CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5
cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgorICAg
IGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+OjphZGQoSyYmIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhh
c2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRyYW5zbGF0b3I+PihzdGQ6
OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhh
c2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVk
QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBL
ZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLZXlUeXBlJiYga2V5LCBUJiYgbWFw
cGVkKSAtPiBBZGRSZXN1bHQKKyAgICB7CisgICAgICAgIHJldHVybiBpbmxpbmVBZGQoc3RkOjpt
b3ZlKGtleSksIG1hcHBlZCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgog
ICAgIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQoY29uc3QgS2V5
VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQogICAgIHsKQEAgLTM5OCwxNCArNDI1
LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0
cz4KLSAgICBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6dGFrZShjb25z
dCBLZXlUeXBlJiBrZXkpIC0+IE1hcHBlZFBhc3NPdXRUeXBlCisgICAgYXV0byBIYXNoTWFwPFQs
IFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OnRha2UoY29uc3QgS2V5VHlwZSYga2V5KSAtPiBNYXBw
ZWRUeXBlCiAgICAgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAgICAg
aWYgKGl0ID09IGVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGFzc091
dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRUeXBl
IHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuIE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpOworICAgICAgICBNYXBwZWRUeXBlIHZh
bHVlID0gc3RkOjptb3ZlKGl0LT52YWx1ZSk7CiAgICAgICAgIHJlbW92ZShpdCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBkYzljNzU0NWVjZmNkMzE0ZGNmOTMyYTczYWU3Njdk
ZDVhYWM4MGVkLi45NWVkZDU3MjcyOTljNWYzMzFkY2Q2ZGI0MDY1OTMwMDhkY2ViZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuaApAQCAtNDAyLDcgKzQwMiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAv
LyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJz
aW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUuCiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBl
bmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZChUJiYga2V5LCBFeHRyYSYmKTsKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJh
PiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKFQmJiBrZXksIEV4
dHJhJiYpOwogCiAgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJl
dHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3Rf
aXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRl
bnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQpAQCAtODg2LDcgKzg4Niw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsgCiAgICAgICAgIH0KIAotICAg
ICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwga2V5LCBzdGQ6OmZvcndhcmQ8
RXh0cmE+KGV4dHJhKSk7CisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5
LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSkpOwogICAg
ICAgICArK21fa2V5Q291bnQ7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkRXhwYW5kKCkp
CkBAIC04OTksNyArODk5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRy
YT4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBU
JiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkgLT4gQWRkUmVzdWx0CisgICAgaW5saW5lIGF1dG8g
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4g
QWRkUmVzdWx0CiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsK
IApAQCAtOTIzLDggKzkyMyw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgaW5pdGlh
bGl6ZUJ1Y2tldCgqZW50cnkpOwogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsKICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSgqZW50cnks
IGtleSwgZXh0cmEsIGgpOworCisgICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVu
dHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSksIGgp
OwogICAgICAgICArK21fa2V5Q291bnQ7CiAKICAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGJkOTA0OWU1Y2IwZGM3MDY2M2JiOWFjMDY0
M2U4NjVhZWRmMmYxY2QuLjI0YzgxNjA2MGRjY2M5MmNlZGM0YzFlNmMzYTRhMGRiYmQ3MzAwMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTg3LDUzICs4Nyw1NyBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogdHlwZWRlZiBQYXNzT3duUHRyPElucHV0VHlwZT4gKCpJbnB1dFR5cGVG
YWN0b3J5RnVuY3Rpb24pKEhUTUxJbnB1dEVsZW1lbnQqKTsKIHR5cGVkZWYgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIElucHV0VHlwZUZhY3RvcnlGdW5jdGlvbiwgQ2FzZUZvbGRpbmdIYXNoPiBJbnB1
dFR5cGVGYWN0b3J5TWFwOwogCi1zdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFw
PiBjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCkKK3N0YXRpYyBPd25QdHI8SW5wdXRUeXBlRmFj
dG9yeU1hcD4gY3JlYXRlSW5wdXRUeXBlRmFjdG9yeU1hcCgpCiB7CiAgICAgT3duUHRyPElucHV0
VHlwZUZhY3RvcnlNYXA+IG1hcCA9IGFkb3B0UHRyKG5ldyBJbnB1dFR5cGVGYWN0b3J5TWFwKTsK
LSAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6YnV0dG9uKCksIEJ1dHRvbklucHV0VHlwZTo6
Y3JlYXRlKTsKLSAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3goKSwgQ2hlY2ti
b3hJbnB1dFR5cGU6OmNyZWF0ZSk7CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHVubmVjZXNzYXJ5
ICcmJ3MgZnJvbSB0aGUgZm9sbG93aW5nIG1hcC5hZGQgb3BlcmF0aW9ucworICAgIC8vIG9uY2Ug
d2Ugc3dpdGNoIHRvIGEgbm9uLWJyb2tlbiBWaXN1YWwgU3R1ZGlvIGNvbXBpbGVyLiAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTIzNQorICAgIG1hcC0+YWRkKElu
cHV0VHlwZU5hbWVzOjpidXR0b24oKSwgJkJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBt
YXAtPmFkZChJbnB1dFR5cGVOYW1lczo6Y2hlY2tib3goKSwgJkNoZWNrYm94SW5wdXRUeXBlOjpj
cmVhdGUpOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIG1hcC0+YWRkKElucHV0
VHlwZU5hbWVzOjpjb2xvcigpLCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFk
ZChJbnB1dFR5cGVOYW1lczo6Y29sb3IoKSwgJkNvbG9ySW5wdXRUeXBlOjpjcmVhdGUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSkKLSAgICAgICAgbWFwLT5hZGQoSW5wdXRU
eXBlTmFtZXM6OmRhdGUoKSwgRGF0ZUlucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICAgICAgbWFwLT5h
ZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGUoKSwgJkRhdGVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQogICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSkKLSAgICAg
ICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lKCksIERhdGVUaW1lSW5wdXRUeXBl
OjpjcmVhdGUpOworICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWUoKSwg
JkRhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfREFURVRJTUVMT0NBTCkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSkKLSAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OmRhdGV0aW1lbG9jYWwoKSwgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlKTsKKyAg
ICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lbG9jYWwoKSwgJkRhdGVUaW1l
TG9jYWxJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKLSAgICBtYXAtPmFkZChJbnB1dFR5cGVO
YW1lczo6ZW1haWwoKSwgRW1haWxJbnB1dFR5cGU6OmNyZWF0ZSk7Ci0gICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6OmZpbGUoKSwgRmlsZUlucHV0VHlwZTo6Y3JlYXRlKTsKLSAgICBtYXAtPmFk
ZChJbnB1dFR5cGVOYW1lczo6aGlkZGVuKCksIEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlKTsKLSAg
ICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSwgSW1hZ2VJbnB1dFR5cGU6OmNyZWF0
ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmVtYWlsKCksICZFbWFpbElucHV0VHlw
ZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZmlsZSgpLCAmRmlsZUlu
cHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aGlkZGVuKCks
ICZIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6
OmltYWdlKCksICZJbWFnZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9NT05USCkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlTW9udGhF
bmFibGVkKCkpCi0gICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjptb250aCgpLCBNb250
aElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6Om1v
bnRoKCksICZNb250aElucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgotICAgIG1hcC0+YWRkKElu
cHV0VHlwZU5hbWVzOjpudW1iZXIoKSwgTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUpOwotICAgIG1h
cC0+YWRkKElucHV0VHlwZU5hbWVzOjpwYXNzd29yZCgpLCBQYXNzd29yZElucHV0VHlwZTo6Y3Jl
YXRlKTsKLSAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6cmFkaW8oKSwgUmFkaW9JbnB1dFR5
cGU6OmNyZWF0ZSk7Ci0gICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnJhbmdlKCksIFJhbmdl
SW5wdXRUeXBlOjpjcmVhdGUpOwotICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpyZXNldCgp
LCBSZXNldElucHV0VHlwZTo6Y3JlYXRlKTsKLSAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6
c2VhcmNoKCksIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlKTsKLSAgICBtYXAtPmFkZChJbnB1dFR5
cGVOYW1lczo6c3VibWl0KCksIFN1Ym1pdElucHV0VHlwZTo6Y3JlYXRlKTsKLSAgICBtYXAtPmFk
ZChJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKCksIFRlbGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRl
KTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCksICZOdW1iZXJJbnB1dFR5
cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnBhc3N3b3JkKCksICZQ
YXNzd29yZElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6
cmFkaW8oKSwgJlJhZGlvSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlw
ZU5hbWVzOjpyYW5nZSgpLCAmUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZSk7CisgICAgbWFwLT5hZGQo
SW5wdXRUeXBlTmFtZXM6OnJlc2V0KCksICZSZXNldElucHV0VHlwZTo6Y3JlYXRlKTsKKyAgICBt
YXAtPmFkZChJbnB1dFR5cGVOYW1lczo6c2VhcmNoKCksICZTZWFyY2hJbnB1dFR5cGU6OmNyZWF0
ZSk7CisgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCgpLCAmU3VibWl0SW5wdXRU
eXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjp0ZWxlcGhvbmUoKSwg
JlRlbGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1F
KQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVUaW1lRW5hYmxlZCgp
KQotICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dGltZSgpLCBUaW1lSW5wdXRUeXBl
OjpjcmVhdGUpOworICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dGltZSgpLCAmVGlt
ZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgotICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVz
Ojp1cmwoKSwgVVJMSW5wdXRUeXBlOjpjcmVhdGUpOworICAgIG1hcC0+YWRkKElucHV0VHlwZU5h
bWVzOjp1cmwoKSwgJlVSTElucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9XRUVLKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVXZWVrRW5h
YmxlZCgpKQotICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6d2VlaygpLCBXZWVrSW5w
dXRUeXBlOjpjcmVhdGUpOworICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6d2Vlaygp
LCAmV2Vla0lucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogICAgIC8vIE5vIG5lZWQgdG8gcmVn
aXN0ZXIgInRleHQiIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQgdHlwZS4KLSAgICByZXR1cm4g
bWFwLnJlbGVhc2UoKTsKKworICAgIHJldHVybiBtYXA7CiB9CiAKIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggNDhkMTlhZDNm
MWFmODQ0Y2UxNGExMTRlMGY5YTY5M2FmZTU4YjI5YS4uZWZjOTRmM2Y5MGYwNWI5NDRkNjNmNDNm
YTJjOTRhNTVkMzU0NmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IEhhcmZCdXp6RmFjZTo6SGFyZkJ1enpGYWNlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0
YSwgdWludDY0X3QgdW5pcXVlSUQpCiAgICAgLCBtX3VuaXF1ZUlEKHVuaXF1ZUlEKQogICAgICwg
bV9zY3JpcHRGb3JWZXJ0aWNhbFRleHQoSEJfU0NSSVBUX0lOVkFMSUQpCiB7Ci0gICAgSGFyZkJ1
enpGYWNlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBoYXJmQnV6ekZhY2VDYWNoZSgpLT5hZGQo
bV91bmlxdWVJRCwgMCk7CisgICAgSGFyZkJ1enpGYWNlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQg
PSBoYXJmQnV6ekZhY2VDYWNoZSgpLT5hZGQobV91bmlxdWVJRCwgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gRmFj
ZUNhY2hlRW50cnk6OmNyZWF0ZShjcmVhdGVGYWNlKCkpOwogICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPnJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBjZTg0Yzk0NjgwYzU3ODdi
MTliNTU1Yzc3NzhkYWI3ZWM5M2I5YTNmLi5mNzhkNmQyY2RmMGQ5YjgzMDg2ZGUyMWM2MDIxMDc0
OWM1OTAzYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtOTAsNyArOTAsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gZ2V0
U2hhZGVyUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25z
KQogICAgICAgICB7Ci0gICAgICAgICAgICBIYXNoTWFwPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpPcHRpb25zLCBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+ID46OkFkZFJl
c3VsdCByZXN1bHQgPSBtX3Byb2dyYW1zLmFkZChvcHRpb25zLCAwKTsKKyAgICAgICAgICAgIEhh
c2hNYXA8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMsIFJlZlB0cjxUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcHJvZ3JhbXMuYWRk
KG9wdGlvbnMsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6Y3JlYXRlKG1fY29udGV4dCwgb3B0aW9ucyk7CiAKQEAgLTkzNiw3ICs5MzYs
NyBAQCBib29sIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1VzaW5nQ3VzdG9tRmlsdGVyKEJpdG1hcFRl
eHR1cmUmIHRhcmdldCwgY29uc3QgQml0bWFwVAogICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVy
UHJvZ3JhbT4gcHJvZ3JhbSA9IGN1c3RvbUZpbHRlci0+cHJvZ3JhbSgpOwogICAgICAgICByZW5k
ZXJlciA9IEN1c3RvbUZpbHRlclJlbmRlcmVyOjpjcmVhdGUobV9jb250ZXh0M0QsIHByb2dyYW0t
PnByb2dyYW1UeXBlKCksIGN1c3RvbUZpbHRlci0+cGFyYW1ldGVycygpLCAKICAgICAgICAgICAg
IGN1c3RvbUZpbHRlci0+bWVzaFJvd3MoKSwgY3VzdG9tRmlsdGVyLT5tZXNoQ29sdW1ucygpLCBj
dXN0b21GaWx0ZXItPm1lc2hUeXBlKCkpOwotICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5hZGQocHJvZ3JhbS0+
cHJvZ3JhbUluZm8oKSwgMCk7CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmFkZChwcm9ncmFtLT5wcm9ncmFt
SW5mbygpLCBudWxscHRyKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3Jh
bTo6Y3JlYXRlKG1fY29udGV4dDNELCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgcHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgcHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSk7CiAg
ICAgICAgIHJlbmRlcmVyLT5zZXRDb21waWxlZFByb2dyYW0ocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSk7CkBAIC05NDksNyArOTQ5LDcgQEAgYm9vbCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdVc2luZ0N1
c3RvbUZpbHRlcihCaXRtYXBUZXh0dXJlJiB0YXJnZXQsIGNvbnN0IEJpdG1hcFQKICAgICAgICAg
cmVuZGVyZXIgPSBDdXN0b21GaWx0ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dDNELCBwcm9n
cmFtLT5wcm9ncmFtSW5mbygpLnByb2dyYW1UeXBlKCksIGN1c3RvbUZpbHRlci0+cGFyYW1ldGVy
cygpLAogICAgICAgICAgICAgY3VzdG9tRmlsdGVyLT5tZXNoUm93cygpLCBjdXN0b21GaWx0ZXIt
Pm1lc2hDb2x1bW5zKCksIGN1c3RvbUZpbHRlci0+bWVzaFR5cGUoKSk7CiAgICAgICAgIFJlZlB0
cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNvbXBpbGVkUHJvZ3JhbTsKLSAgICAgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY3VzdG9tRmlsdGVy
UHJvZ3JhbXMuYWRkKHByb2dyYW0tPnByb2dyYW1JbmZvKCksIDApOworICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jdXN0b21GaWx0ZXJQcm9ncmFt
cy5hZGQocHJvZ3JhbS0+cHJvZ3JhbUluZm8oKSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmNyZWF0ZShtX2NvbnRleHQzRCwgcHJvZ3JhbS0+dmFs
aWRhdGVkVmVydGV4U2hhZGVyKCksIHByb2dyYW0tPnZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKCks
IHByb2dyYW0tPnByb2dyYW1JbmZvKCkucHJvZ3JhbVR5cGUoKSk7CiAgICAgICAgIHJlbmRlcmVy
LT5zZXRDb21waWxlZFByb2dyYW0ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGY5OWY2NGRkMGNkZGU4OWQxMmIw
NWEwMjJjODJmYmVlNmNhOWFjYWUuLjRkYjU0YzQ4ZWU0N2I3MTQ3NmUyOTczYzE3MGYyNTM5NGQy
ZDI3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC00
NTQsNyArNDU0LDcgQEAgUmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyUmVnaW9uOjpzZXRSZW5k
ZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCogYm94LAogICAgIHJldHVybiBib3hJbmZv
LmdldCgpOwogfQogCi1QYXNzT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IFJlbmRlclJlZ2lv
bjo6dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gpCitPd25QdHI8
UmVuZGVyQm94UmVnaW9uSW5mbz4gUmVuZGVyUmVnaW9uOjp0YWtlUmVuZGVyQm94UmVnaW9uSW5m
byhjb25zdCBSZW5kZXJCb3gqIGJveCkKIHsKICAgICByZXR1cm4gbV9yZW5kZXJCb3hSZWdpb25J
bmZvLnRha2UoYm94KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApp
bmRleCBlNzljMzlmMGM2YjFhMDk5NmZiODQ4ZmI0YjExMTI2MjAzMzI0MTM5Li5kZjA1MzkxZjkx
NzA3NzYwOGJjNTM1M2ZjMzY3ODU4N2E5NWYyZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCb3hS
ZWdpb25JbmZvKiByZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCopIGNvbnN0Owog
ICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIHNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVu
ZGVyQm94KiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdEluc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxS
aWdodEluc2V0LAogICAgICAgICBib29sIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCk7Ci0g
ICAgUGFzc093blB0cjxSZW5kZXJCb3hSZWdpb25JbmZvPiB0YWtlUmVuZGVyQm94UmVnaW9uSW5m
byhjb25zdCBSZW5kZXJCb3gqKTsKKyAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gdGFr
ZVJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94Kik7CiAgICAgdm9pZCByZW1vdmVS
ZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCopOwogCiAgICAgdm9pZCBkZWxldGVB
bGxSZW5kZXJCb3hSZWdpb25JbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCmluZGV4IGY4Yzc0
NWE4OGY5MWMwZDRmNGY0YTcwYTE4YTg3MTgyYzBkZTkzZjEuLjNjOTRkOTdmNDUxYzI5MDk4Mjdh
ZmM1MmE3NGJlZmZiMzA4MDRiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6cmVnaXN0ZXJSZXNvdXJj
ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpTVkdQZW5kaW5nRWxlbWVudHM+IGNsaWVudHMoZXh0ZW5zaW9ucy5yZW1vdmVQZW5k
aW5nUmVzb3VyY2UobV9pZCkpOworICAgIE93blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNW
R1BlbmRpbmdFbGVtZW50cz4gY2xpZW50cyA9IGV4dGVuc2lvbnMucmVtb3ZlUGVuZGluZ1Jlc291
cmNlKG1faWQpOwogCiAgICAgLy8gQ2FjaGUgdXMgd2l0aCB0aGUgbmV3IGlkLgogICAgIGV4dGVu
c2lvbnMuYWRkUmVzb3VyY2UobV9pZCwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDllZTYyNTBlZDcwZDhhYTg1ZWNkN2E1YzQyYjI0
Mzk4YmU4ODc3M2IuLmJlNGNiODIzM2Y0YmQ3MDdiNDFlMmFjNzQ0ZTdmMTQ1NjhmNTY1Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0yNTAs
MTMgKzI1MCwxMyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlRWxlbWVudEZy
b21QZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgfQogfQogCi1QYXNzT3du
UHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlk
KQorT3duUHRyPFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJp
bmcmIGlkKQogewogICAgIEFTU0VSVChtX3BlbmRpbmdSZXNvdXJjZXMuY29udGFpbnMoaWQpKTsK
ICAgICByZXR1cm4gbV9wZW5kaW5nUmVzb3VyY2VzLnRha2UoaWQpOwogfQogCi1QYXNzT3duUHRy
PFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHUGVuZGluZ0VsZW1lbnRzPiBTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdSZXNvdXJjZUZvclJlbW92YWwoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCkKK093blB0cjxTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR1BlbmRpbmdFbGVtZW50
cz4gU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFs
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1Jlc291cmNl
c0ZvclJlbW92YWwuY29udGFpbnMoaWQpKTsKICAgICByZXR1cm4gbV9wZW5kaW5nUmVzb3VyY2Vz
Rm9yUmVtb3ZhbC50YWtlKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuaAppbmRleCAxNmUyMjI0OTU0ODAxMmExZmZlOTA0YzdiYjk0ZmUxMjI3MGIyMDUzLi5h
NGQ4YmY2YjA3MGY2Mzc4NzdjNmJiOGU2NzJmOWRkZTk0YWZhNGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCkBAIC05OSwxNCArOTksMTQgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNFbGVtZW50UGVuZGluZ1Jlc291cmNlKEVsZW1lbnQqLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNlc0lm
UG9zc2libGUoRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRWxlbWVudEZyb21QZW5kaW5nUmVz
b3VyY2VzKEVsZW1lbnQqKTsKLSAgICBQYXNzT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4gcmVt
b3ZlUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOworICAgIE93blB0cjxT
VkdQZW5kaW5nRWxlbWVudHM+IHJlbW92ZVBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJp
bmcmIGlkKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgdXNlZCBm
b3Igc2NoZWR1bGluZyBhIHBlbmRpbmcgcmVzb3VyY2UgdG8gYmUgcmVtb3ZlZC4KICAgICB2b2lk
IG1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAg
ICBFbGVtZW50KiByZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFsKGNv
bnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFBhc3NPd25QdHI8U1ZHUGVuZGlu
Z0VsZW1lbnRzPiByZW1vdmVQZW5kaW5nUmVzb3VyY2VGb3JSZW1vdmFsKGNvbnN0IEF0b21pY1N0
cmluZyYpOworICAgIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+IHJlbW92ZVBlbmRpbmdSZXNv
dXJjZUZvclJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJik7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg5Y2JjMzZhMDhiZjBk
Mjk4ZThhYzM0YmYzYjBiNTcyZWY5MTkwZC4uMjRmZWYyZGZmOTNkMDZiNWY4OWNjZjRjZWQwYmU1
YjlhYWRlZmJhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEzLTA5LTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgSGFzaE1hcCBzaG91bGQgd29yayB3aXRoIG1vdmUt
b25seSBrZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjEzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgIEFkZCB0ZXN0LgorCisyMDEzLTA5LTE2ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAgICAgICAgV1RGOjpEZXF1ZSBzaG91
bGQgd29yayB3aXRoIG1vdmUgb25seSB0eXBlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDQ2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaE1hcC5jcHAKaW5kZXggZWMxMzMzNGZmYmI2ZGIwNDg0ZjMwNjczZWM2NDI4OWI5NzI1
MDA0MC4uMTc0MTY1NTQyYjlkNjIyOTdhNDJiYzQ3Zjc1Zjk1MTcxZmM3MTcwZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIk1vdmVPbmx5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApA
QCAtODIsNyArODMsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBEb3VibGVIYXNoQ29sbGlzaW9ucykK
ICAgICBBU1NFUlRfRVEobWFwLmdldChuZWdhdGl2ZVplcm9LZXkpLCAzKTsKIH0KIAotVEVTVChX
VEZfSGFzaE1hcCwgTW92ZU9ubHkpCitURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seVZhbHVlcykK
IHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBNb3ZlT25seT4gbW92ZU9ubHlWYWx1ZXM7CiAKQEAg
LTk2LDEwICs5NywzNiBAQCBURVNUKFdURl9IYXNoTWFwLCBNb3ZlT25seSkKICAgICAgICAgQVNT
RVJUX0ZBTFNFKGl0ID09IG1vdmVPbmx5VmFsdWVzLmVuZCgpKTsKICAgICB9CiAKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
NTA7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKG1vdmVPbmx5VmFsdWVzLnRha2UoaSArIDEpLnZh
bHVlKCksIGkgKyAxKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyA1MCA8IDEwMDsgKytpKQog
ICAgICAgICBBU1NFUlRfVFJVRShtb3ZlT25seVZhbHVlcy5yZW1vdmUoaSArIDEpKTsKIAogICAg
IEFTU0VSVF9UUlVFKG1vdmVPbmx5VmFsdWVzLmlzRW1wdHkoKSk7CiB9CiAKK1RFU1QoV1RGX0hh
c2hNYXAsIE1vdmVPbmx5S2V5cykKK3sKKyAgICBIYXNoTWFwPE1vdmVPbmx5LCB1bnNpZ25lZD4g
bW92ZU9ubHlLZXlzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgewor
ICAgICAgICBNb3ZlT25seSBtb3ZlT25seShpICsgMSk7CisgICAgICAgIG1vdmVPbmx5S2V5cy5z
ZXQoc3RkOjptb3ZlKG1vdmVPbmx5KSwgaSArIDEpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgYXV0byBpdCA9IG1vdmVPbmx5S2V5cy5m
aW5kKE1vdmVPbmx5KGkgKyAxKSk7CisgICAgICAgIEFTU0VSVF9GQUxTRShpdCA9PSBtb3ZlT25s
eUtleXMuZW5kKCkpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyAr
K2kpCisgICAgICAgIEFTU0VSVF9GQUxTRShtb3ZlT25seUtleXMuYWRkKE1vdmVPbmx5KGkgKyAx
KSwgaSArIDEpLmlzTmV3RW50cnkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7
ICsraSkKKyAgICAgICAgQVNTRVJUX1RSVUUobW92ZU9ubHlLZXlzLnJlbW92ZShNb3ZlT25seShp
ICsgMSkpKTsKKworICAgIEFTU0VSVF9UUlVFKG1vdmVPbmx5S2V5cy5pc0VtcHR5KCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="234051"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>