<?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>145598</bug_id>
          
          <creation_ts>2015-06-02 23:19:10 -0700</creation_ts>
          <short_desc>[GTK] Get rid of GetEditorCommandsForKeyEvent sync message</short_desc>
          <delta_ts>2015-06-12 04:33:09 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145923</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gustavo</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>svillar</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099088</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-02 23:19:10 -0700</bug_when>
    <thetext>We are sending GetEditorCommandsForKeyEvent sync message from web process to the UI process for every key pressed. And if the keydown event doesn&apos;t handle the key, the message is sent again for the keypress event, so in many cases it happens twice per keypress. We can get the list of commands when the key press event happens in the web view, and send it to the web process as part of the keyboard event like mac port does. In the web process, commands not inserting text will be handled by keydown and the rest in keypress without having to use any other IPC message for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099095</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-06-02 23:28:19 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; We are sending GetEditorCommandsForKeyEvent sync message from web process to
&gt; the UI process for every key pressed. And if the keydown event doesn&apos;t
&gt; handle the key, the message is sent again for the keypress event, so in many
&gt; cases it happens twice per keypress. We can get the list of commands when
&gt; the key press event happens in the web view, and send it to the web process
&gt; as part of the keyboard event like mac port does. In the web process,
&gt; commands not inserting text will be handled by keydown and the rest in
&gt; keypress without having to use any other IPC message for that.

Wow that&apos;s really bad. Looking forward to seeing your patch for this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099099</commentid>
    <comment_count>2</comment_count>
      <attachid>254159</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-02 23:40:35 -0700</bug_when>
    <thetext>Created attachment 254159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099101</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-02 23:42:51 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100963</commentid>
    <comment_count>4</comment_count>
      <attachid>254159</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-10 02:32:13 -0700</bug_when>
    <thetext>Comment on attachment 254159
Patch

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

&gt; Source/WebCore/dom/KeyboardEvent.cpp:233
&gt; +#if PLATFORM(GTK)
&gt; +bool KeyboardEvent::handledByInputMethod() const
&gt; +{
&gt; +    return m_keyEvent ? m_keyEvent-&gt;handledByInputMethod() : false;
&gt; +}
&gt; +#endif

Why not use the m_handledByInputMethod boolean, like it&apos;s used for the Cocoa platform?

&gt; Source/WebKit2/UIProcess/gtk/InputMethodFilter.h:58
&gt; +    typedef std::function&lt;void (const WebCore::CompositionResults&amp;, InputMethodFilter::EventFakedForComposition)&gt; FilterKeyEventCompletionHandler;

using FilterKeyEventCompletionHandler = std::function&lt;...&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100964</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-10 02:36:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 254159 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254159&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/KeyboardEvent.cpp:233
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt; +bool KeyboardEvent::handledByInputMethod() const
&gt; &gt; +{
&gt; &gt; +    return m_keyEvent ? m_keyEvent-&gt;handledByInputMethod() : false;
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; Why not use the m_handledByInputMethod boolean, like it&apos;s used for the Cocoa
&gt; platform?

Because we don&apos;t need to duplicate that, this is just a convenient method, to avoid having to get the platform event, check if it&apos;s null, and then get the boolean.

&gt; &gt; Source/WebKit2/UIProcess/gtk/InputMethodFilter.h:58
&gt; &gt; +    typedef std::function&lt;void (const WebCore::CompositionResults&amp;, InputMethodFilter::EventFakedForComposition)&gt; FilterKeyEventCompletionHandler;
&gt; 
&gt; using FilterKeyEventCompletionHandler = std::function&lt;...&gt;;

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100973</commentid>
    <comment_count>6</comment_count>
      <attachid>254159</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-10 03:25:25 -0700</bug_when>
    <thetext>Comment on attachment 254159
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/KeyboardEvent.cpp:233
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; Why not use the m_handledByInputMethod boolean, like it&apos;s used for the Cocoa platform?
&gt; 
&gt; Because we don&apos;t need to duplicate that, this is just a convenient method, to avoid having to get the platform event, check if it&apos;s null, and then get the boolean.

I don&apos;t think using m_handledByInputMethod the same way it&apos;s used for PLATFORM(COCOA) &amp;&amp; USE(APPKIT) is duplicating. I do think adding a new GTK-specific method that queries some state that a KeyboardEvent constructor could already determine is duplicating.

But given that this is a Web-exposed class, any platform-specific code is regrettable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100976</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-10 03:32:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 254159 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254159&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/dom/KeyboardEvent.cpp:233
&gt; &gt;&gt;&gt; +#endif
&gt; &gt;&gt; 
&gt; &gt;&gt; Why not use the m_handledByInputMethod boolean, like it&apos;s used for the Cocoa platform?
&gt; &gt; 
&gt; &gt; Because we don&apos;t need to duplicate that, this is just a convenient method, to avoid having to get the platform event, check if it&apos;s null, and then get the boolean.
&gt; 
&gt; I don&apos;t think using m_handledByInputMethod the same way it&apos;s used for
&gt; PLATFORM(COCOA) &amp;&amp; USE(APPKIT) is duplicating.

I didn&apos;t mean duplicating code, but duplicating the value in both objects.

&gt; I do think adding a new
&gt; GTK-specific method that queries some state that a KeyboardEvent constructor
&gt; could already determine is duplicating.
&gt; 
&gt; But given that this is a Web-exposed class, any platform-specific code is
&gt; regrettable.

I can avoid that entirely and use the platform keyboard event in the callers, as I said this was just a convenient method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100993</commentid>
    <comment_count>8</comment_count>
      <attachid>254647</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-10 05:32:54 -0700</bug_when>
    <thetext>Created attachment 254647
Updated patch

Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100995</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 05:34:47 -0700</bug_when>
    <thetext>Attachment 254647 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/gtk/InputMethodFilter.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101003</commentid>
    <comment_count>10</comment_count>
      <attachid>254647</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-10 06:15:48 -0700</bug_when>
    <thetext>Comment on attachment 254647
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101008</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-06-10 06:33:06 -0700</bug_when>
    <thetext>Committed r185415: &lt;http://trac.webkit.org/changeset/185415&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254159</attachid>
            <date>2015-06-02 23:40:35 -0700</date>
            <delta_ts>2015-06-10 05:32:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-editing-commands.diff</filename>
            <type>text/plain</type>
            <size>38936</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NGI2NzZkLi4xZjJiYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTUtMDYtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEdldCByaWQgb2YgR2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVu
dCBzeW5jIG1lc3NhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudDo6aGFuZGxlZEJ5SW5wdXRNZXRob2QpOiBIZWxwZXIgdG8gZ2V0CisgICAgICAgIHdo
ZXRoZXIgZXZlbnQgd2FzIGhhbmRsZWQgYnkgdGhlIGlucHV0IG1ldGhvZCB3aXRob3V0IGhhdmlu
ZyB0bworICAgICAgICBnZXQgdGhlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBmaXJzdC4KKyAgICAg
ICAgKiBkb20vS2V5Ym9hcmRFdmVudC5oOiBBZGQgaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSBhbHNv
IGZvciBHVEsgcG9ydC4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y29t
bWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHA6
IFVzZSBhIHNpbmdsZSBsaXN0IG9mCisgICAgICAgIGN1c3RvbSBrZXkgYmluZGluZ3MuIFdlIGRv
bid0IG5lZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBrZXkgZG93biBhbmQKKyAgICAgICAga2V5
IHByZXNzIGNvbW1hbmRzLCBzaW5jZSB0aGUgd2ViIGVkaXRvciBjbGllbnQgYWxyZWFkeSBkb2Vz
IHRoYXQKKyAgICAgICAgd2hlbiBleGVjdXRpbmcgdGhlIGNvbW1hbmRzLgorICAgICAgICAoV2Vi
Q29yZTo6S2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1hbmRzRm9yS2V5RXZlbnQpOiBUaGlzIGlz
CisgICAgICAgIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoKSByZW5hbWVkIGFzIGNvbW1h
bmRzRm9yS2V5RXZlbnQoKSwKKyAgICAgICAgc2luY2UgaXQgbm93IHJldHVybnMgdGhlIGxpc3Qg
b2YgY29tbWFuZHMgdG8gc2ltcGxpZnkgdGhlCisgICAgICAgIGNvZGUuIEFsc28gc2ltcGxpZnkg
dGhlIGN1c3RvbSBrZXkgYmluZGluZ3MgaGFuZGxpbmcsIGJ5IHVzaW5nIHRoZQorICAgICAgICBn
bG9iYWwgbGlzdCBpbnN0ZWFkIG9mIG1vdmluZyBpdCB0byBhIEhhc2hNYXAuCisgICAgICAgIChX
ZWJDb3JlOjpLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9y
Lmg6CisKIDIwMTUtMDUtMTkgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBXaGVuIHZpZXdpbmcgYW4gTUpQRUcgc3RyZWFtIGFzIHRoZSBtYWlu
IHJlc291cmNlLCBvbmx5IHRoZSBmaXJzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3Bw
CmluZGV4IDY0Y2ViYTIuLmFjMTQ0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5j
cHAKQEAgLTIyNSw0ICsyMjUsMTEgQEAgS2V5Ym9hcmRFdmVudCogZmluZEtleWJvYXJkRXZlbnQo
RXZlbnQqIGV2ZW50KQogICAgIHJldHVybiBudWxscHRyOwogfQogCisjaWYgUExBVEZPUk0oR1RL
KQorYm9vbCBLZXlib2FyZEV2ZW50OjpoYW5kbGVkQnlJbnB1dE1ldGhvZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fa2V5RXZlbnQgPyBtX2tleUV2ZW50LT5oYW5kbGVkQnlJbnB1dE1ldGhvZCgp
IDogZmFsc2U7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmgKaW5kZXggN2E4Nzc3ZS4uNzkzZTY1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
S2V5Ym9hcmRFdmVudC5oCkBAIC0xMDIsNiArMTAyLDEwIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
S2V5cHJlc3NDb21tYW5kPiYga2V5cHJlc3NDb21tYW5kcygpIHsgcmV0dXJuIG1fa2V5cHJlc3ND
b21tYW5kczsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCisgICAgYm9vbCBoYW5kbGVk
QnlJbnB1dE1ldGhvZCgpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9F
WFBPUlQgS2V5Ym9hcmRFdmVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIEtleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiwgQWJzdHJhY3RWaWV3Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCmluZGV4IDRiMzJhMGIu
LjU3ODUyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoMCkKICAgICAgICAgICAgICwgbV9uYXRpdmVW
aXJ0dWFsS2V5Q29kZSgwKQogICAgICAgICAgICAgLCBtX21hY0NoYXJDb2RlKDApCi0jaWYgVVNF
KEFQUEtJVCkKKyNpZiBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCiAgICAgICAgICAgICAs
IG1faGFuZGxlZEJ5SW5wdXRNZXRob2QoZmFsc2UpCiAjZW5kaWYKICAgICAgICAgICAgICwgbV9h
dXRvUmVwZWF0KGZhbHNlKQpAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NWaXJ0dWFsS2V5Q29k
ZSkKICAgICAgICAgICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShuYXRpdmVWaXJ0dWFsS2V5
Q29kZSkKICAgICAgICAgICAgICwgbV9tYWNDaGFyQ29kZShtYWNDaGFyQ29kZSkKLSNpZiBVU0Uo
QVBQS0lUKQorI2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgICwg
bV9oYW5kbGVkQnlJbnB1dE1ldGhvZChmYWxzZSkKICNlbmRpZgogICAgICAgICAgICAgLCBtX2F1
dG9SZXBlYXQoaXNBdXRvUmVwZWF0KQpAQCAtMTE1LDkgKzExNSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlVmlydHVhbEtleUNvZGU7IH0KICAgICAgICAgaW50IG1hY0NoYXJDb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9tYWNDaGFyQ29kZTsgfQogCi0jaWYgVVNFKEFQUEtJVCkKKyNpZiBVU0Uo
QVBQS0lUKSB8fCBQTEFURk9STShHVEspCiAgICAgICAgIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRo
b2QoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZWRCeUlucHV0TWV0aG9kOyB9CisjZW5kaWYKKyNp
ZiBVU0UoQVBQS0lUKQogICAgICAgICBjb25zdCBWZWN0b3I8S2V5cHJlc3NDb21tYW5kPiYgY29t
bWFuZHMoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRzOyB9CisjZWxpZiBQTEFURk9STShHVEsp
CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb21tYW5kcygpIGNvbnN0IHsgcmV0dXJu
IG1fY29tbWFuZHM7IH0KICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNBdXRvUmVwZWF0KCkgY29u
c3QgeyByZXR1cm4gbV9hdXRvUmVwZWF0OyB9CkBAIC0xNjIsOSArMTY2LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlOwogICAgICAg
ICBpbnQgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbWFjQ2hhckNvZGU7
Ci0jaWYgVVNFKEFQUEtJVCkKKyNpZiBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCiAgICAg
ICAgIGJvb2wgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZDsKKyNlbmRpZgorI2lmIFVTRShBUFBLSVQp
CiAgICAgICAgIFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+IG1fY29tbWFuZHM7CisjZWxpZiBQTEFU
Rk9STShHVEspCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fY29tbWFuZHM7CiAjZW5kaWYKICAg
ICAgICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAgICAgICAgIGJvb2wgbV9pc0tleXBhZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3Bw
CmluZGV4IDdhMWM0NGUuLjg5YjFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcApAQCAtMTg0LDYxICsxODQsNDQgQEAg
c3RydWN0IEtleUNvbWJpbmF0aW9uRW50cnkgewogICAgIGNvbnN0IGNoYXIqIG5hbWU7CiB9Owog
Ci1zdGF0aWMgY29uc3QgS2V5Q29tYmluYXRpb25FbnRyeSBrZXlEb3duRW50cmllc1tdID0gewor
c3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9uRW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9IHsK
ICAgICB7IEdES19iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgIlRv
Z2dsZUJvbGQiICAgIH0sCiAgICAgeyBHREtfaSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAg
ICAgICAgICAgICAgICJUb2dnbGVJdGFsaWMiICB9LAogICAgIHsgR0RLX0VzY2FwZSwgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgfSwKICAgICB7IEdE
S19ncmVhdGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgIkNhbmNlbCIgICAg
ICAgIH0sCi19OwotCi0vLyBUaGVzZSBjb21tYW5kcyBhcmUgdGV4dCBpbnNlcnRpb24gY29tbWFu
ZHMsIHNvIHNob3VsZCB0YWtlIHBsYWNlCi0vLyB3aGlsZSBoYW5kbGluZyB0aGUgS2V5UHJlc3Mg
ZXZlbnQuCi1zdGF0aWMgY29uc3QgS2V5Q29tYmluYXRpb25FbnRyeSBrZXlQcmVzc0VudHJpZXNb
XSA9IHsKICAgICB7IEdES19UYWIsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkluc2VydFRhYiIgICAgIH0sCiAgICAgeyBHREtfVGFiLCAgICAgICBHREtfU0hJRlRfTUFT
SywgICAgICAgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiB9LAogfTsKIAotdm9pZCBLZXlCaW5k
aW5nVHJhbnNsYXRvcjo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChHZGtFdmVudEtleSog
ZXZlbnQsIEV2ZW50VHlwZSB0eXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb21tYW5kTGlzdCkK
K1ZlY3RvcjxTdHJpbmc+IEtleUJpbmRpbmdUcmFuc2xhdG9yOjpjb21tYW5kc0ZvcktleUV2ZW50
KEdka0V2ZW50S2V5KiBldmVudCkKIHsKLSAgICBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5jbGVh
cigpOworICAgIEFTU0VSVChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5pc0VtcHR5KCkpOwogCisg
ICAgLy8gRklYTUU6IE1vdmUgS2V5QmluZGluZ1RyYW5zbGF0b3IgdG8gV2ViS2l0IGxheWVyIGFu
ZCByZW1vdmUgdGhlIEdUSzIgY29kZS4KICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogICAgIGd0
a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHVEtfT0JKRUNUKG1fbmF0aXZlV2lkZ2V0LmdldCgp
KSwgZXZlbnQpOwogI2Vsc2UKICAgICBndGtfYmluZGluZ3NfYWN0aXZhdGVfZXZlbnQoR19PQkpF
Q1QobV9uYXRpdmVXaWRnZXQuZ2V0KCkpLCBldmVudCk7CiAjZW5kaWYKIAotICAgIGlmICghbV9w
ZW5kaW5nRWRpdG9yQ29tbWFuZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvbW1hbmRMaXN0LmFw
cGVuZFZlY3RvcihtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSW50Q29uc3RDaGFySGFz
aE1hcCwga2V5RG93bkNvbW1hbmRzTWFwLCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEludENvbnN0Q2hhckhhc2hNYXAsIGtleVByZXNzQ29tbWFuZHNNYXAsICgpKTsK
LQotICAgIGlmIChrZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5RG93bkVudHJpZXMpOyBpKyspCi0g
ICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0KGtleURvd25FbnRyaWVzW2ldLnN0YXRl
IDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0uZ2RrS2V5Q29kZSwga2V5RG93bkVudHJpZXNbaV0u
bmFtZSk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhr
ZXlQcmVzc0VudHJpZXMpOyBpKyspCi0gICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLnNl
dChrZXlQcmVzc0VudHJpZXNbaV0uc3RhdGUgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uZ2Rr
S2V5Q29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwotICAgIH0KKyAgICBpZiAoIW1fcGVu
ZGluZ0VkaXRvckNvbW1hbmRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZSht
X3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7CiAKICAgICAvLyBTcGVjaWFsLWNhc2UgZW50ZXIga2V5
cyBmb3Igd2Ugd2FudCB0aGVtIHRvIHdvcmsgcmVnYXJkbGVzcyBvZiBtb2RpZmllci4KLSAgICBp
ZiAoKGV2ZW50LT5rZXl2YWwgPT0gR0RLX1JldHVybiB8fCBldmVudC0+a2V5dmFsID09IEdES19L
UF9FbnRlciB8fCBldmVudC0+a2V5dmFsID09IEdES19JU09fRW50ZXIpICYmIHR5cGUgPT0gS2V5
UHJlc3MpIHsKLSAgICAgICAgY29tbWFuZExpc3QuYXBwZW5kKCJJbnNlcnROZXdMaW5lIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKChldmVudC0+a2V5dmFsID09IEdES19SZXR1
cm4gfHwgZXZlbnQtPmtleXZhbCA9PSBHREtfS1BfRW50ZXIgfHwgZXZlbnQtPmtleXZhbCA9PSBH
REtfSVNPX0VudGVyKSkKKyAgICAgICAgcmV0dXJuIHsgIkluc2VydE5ld0xpbmUiIH07CiAKICAg
ICAvLyBGb3Iga2V5cHJlc3MgZXZlbnRzLCB3ZSB3YW50IGNoYXJDb2RlKCksIGJ1dCBrZXlDb2Rl
KCkgZG9lcyB0aGF0LgotICAgIGludCBtYXBLZXkgPSBldmVudC0+c3RhdGUgPDwgMTYgfCBldmVu
dC0+a2V5dmFsOwotICAgIGlmIChtYXBLZXkpIHsKLSAgICAgICAgSGFzaE1hcDxpbnQsIGNvbnN0
IGNoYXIqPiogY29tbWFuZE1hcCA9IHR5cGUgPT0gS2V5RG93biA/ICAma2V5RG93bkNvbW1hbmRz
TWFwIDogJmtleVByZXNzQ29tbWFuZHNNYXA7Ci0gICAgICAgIGlmIChjb25zdCBjaGFyKiBjb21t
YW5kU3RyaW5nID0gY29tbWFuZE1hcC0+Z2V0KG1hcEtleSkpIHsKLSAgICAgICAgICAgIGNvbW1h
bmRMaXN0LmFwcGVuZChjb21tYW5kU3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQorICAgIHVuc2lnbmVkIG1hcEtleSA9IGV2ZW50LT5zdGF0ZSA8PCAxNiB8IGV2ZW50LT5r
ZXl2YWw7CisgICAgaWYgKCFtYXBLZXkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGN1c3RvbUtleUJpbmRpbmdzKTsgKytp
KSB7CisgICAgICAgIGlmIChtYXBLZXkgPT0gKGN1c3RvbUtleUJpbmRpbmdzW2ldLnN0YXRlIDw8
IDE2IHwgY3VzdG9tS2V5QmluZGluZ3NbaV0uZ2RrS2V5Q29kZSkpCisgICAgICAgICAgICByZXR1
cm4geyBjdXN0b21LZXlCaW5kaW5nc1tpXS5uYW1lIH07CiAgICAgfQorCisgICAgcmV0dXJuIHsg
fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuaAppbmRleCBjNjQzNmRlLi43MDJhYWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5z
bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5z
bGF0b3IuaApAQCAtMzEsMTMgKzMxLDEyIEBAIGNsYXNzIEtleUJpbmRpbmdUcmFuc2xhdG9yIHsK
IHB1YmxpYzoKICAgICBLZXlCaW5kaW5nVHJhbnNsYXRvcigpOwogCi0gICAgZW51bSBFdmVudFR5
cGUgeyBLZXlEb3duLCBLZXlQcmVzcyB9OwotICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JL
ZXlFdmVudChHZGtFdmVudEtleSosIEV2ZW50VHlwZSwgVmVjdG9yPFdURjo6U3RyaW5nPiYpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGNvbW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRLZXkqKTsKICAg
ICB2b2lkIGFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKGNvbnN0IGNoYXIqIGNvbW1hbmQpIHsgbV9w
ZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpOyB9CiAKIHByaXZhdGU6CiAgICAg
R1JlZlB0cjxHdGtXaWRnZXQ+IG1fbmF0aXZlV2lkZ2V0OwotICAgIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9wZW5kaW5n
RWRpdG9yQ29tbWFuZHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNzhlOTQ2Mi4uNTI2ZDIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTA2
LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBHZXQgcmlkIG9mIEdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQgc3luYyBtZXNz
YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBh
cmUgc2VuZGluZyBHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50IHN5bmMgbWVzc2FnZSBmcm9t
IHdlYgorICAgICAgICBwcm9jZXNzIHRvIHRoZSBVSSBwcm9jZXNzIGZvciBldmVyeSBrZXkgcHJl
c3NlZC4gQW5kIGlmIHRoZQorICAgICAgICBrZXlkb3duIGV2ZW50IGRvZXNuJ3QgaGFuZGxlIHRo
ZSBrZXksIHRoZSBtZXNzYWdlIGlzIHNlbnQgYWdhaW4KKyAgICAgICAgZm9yIHRoZSBrZXlwcmVz
cyBldmVudCwgc28gaW4gbWFueSBjYXNlcyBpdCBoYXBwZW5zIHR3aWNlIHBlcgorICAgICAgICBr
ZXlwcmVzcy4gV2UgY2FuIGdldCB0aGUgbGlzdCBvZiBjb21tYW5kcyB3aGVuIHRoZSBrZXkgcHJl
c3MgZXZlbnQKKyAgICAgICAgaGFwcGVucyBpbiB0aGUgd2ViIHZpZXcsIGFuZCBzZW5kIGl0IHRv
IHRoZSB3ZWIgcHJvY2VzcyBhcyBwYXJ0IG9mCisgICAgICAgIHRoZSBrZXlib2FyZCBldmVudCBs
aWtlIG1hYyBwb3J0IGRvZXMuIEluIHRoZSB3ZWIgcHJvY2VzcywKKyAgICAgICAgY29tbWFuZHMg
bm90IGluc2VydGluZyB0ZXh0IHdpbGwgYmUgaGFuZGxlZCBieSBrZXlkb3duIGFuZCB0aGUKKyAg
ICAgICAgcmVzdCBpbiBrZXlwcmVzcyB3aXRob3V0IGhhdmluZyB0byB1c2UgYW55IG90aGVyIElQ
QyBtZXNzYWdlIGZvciB0aGF0LgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYktleWJvYXJk
RXZlbnQuaDogQWRkIGNvbW1hbmQgbGlzdCBwYXJhbWV0ZXIgdG8KKyAgICAgICAgdGhlIGNvbnN0
cnVjdG9yLgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOiBBZGQgR1RLIHNwZWNpZmljIGNv
bnN0cnVjdG9yIHRoYXQgcmVjZWl2ZXMgYQorICAgICAgICBsaXN0IG9mIGNvbW1hbmRzIGFuZCB3
aGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxlZCBieSBpbnB1dCBtZXRob2RzLgorICAgICAgICAo
V2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50Ojpjb21tYW5kcyk6IFJldHVybnMgdGhlIGxpc3Qgb2Yg
Y29tbWFuZHMuCisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OldlYktpdDJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQpOgorICAgICAgICBBbHNvIGNvcHkgdGhlIGNvbW1hbmRzIGFuZCBoYW5k
bGVkQnlJbnB1dE1ldGhvZCBtZW1iZXIuCisgICAgICAgICogU2hhcmVkL1dlYktleWJvYXJkRXZl
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2
ZW50KTogSW1wbGVtZW50IEdUSworICAgICAgICBzcGVjaWZpYyBjb25zdHJ1Y3RvciB0aGF0IHJl
Y2VpdmVzIGEgbGlzdCBvZiBjb21tYW5kcyBhbmQgd2hldGhlcgorICAgICAgICB0aGUgZXZlbnQg
d2FzIGhhbmRsZWQgYnkgaW5wdXQgbWV0aG9kcy4KKyAgICAgICAgKFdlYktpdDo6V2ViS2V5Ym9h
cmRFdmVudDo6ZW5jb2RlKTogRW5jb2RlIGNvbW1hbmRzIGFuZCBoYW5kbGVkQnlJbnB1dE1ldGhv
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudDo6ZGVjb2RlKTogRGVjb2RlIGNv
bW1hbmRzIGFuZCBoYW5kbGVkQnlJbnB1dE1ldGhvZC4KKyAgICAgICAgKiBTaGFyZWQvZ3RrL05h
dGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KTogQWRkCisgICAgICAgIGNvbW1h
bmQgbGlzdCBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAqIFNoYXJlZC9n
dGsvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KTogVXNlIHRoZSBuZXcKKyAgICAgICAgV2ViS2V5Ym9h
cmRFdmVudCBjb25zdHJ1Y3RvciBhbmQgc2ltcGxpZnkgdGhlIGNvZGUuIFdlIGRvbid0IG5lZWQK
KyAgICAgICAgdG8gZXhwbGljaXRseSBzZXQgVktfUFJPQ0VTU0tFWSBhcyB3aW5kb3dzIHZpcnR1
YWwga2V5IGNvZGUgd2hlbgorICAgICAgICB0aGUgZXZlbnQgd2FzIGhhbmRsZWQgYnkgaW5wdXQg
bWV0aG9kcy4gVGhlIFdlYkNvcmUgZXZlbnQgaGFuZGxlcgorICAgICAgICBhbHJlYWR5IGRvZXMg
dGhhdC4KKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOiBBZGQgYQorICAgICAgICBL
ZXlCaW5kaW5nVHJhbnNsYXRvciBtZW1iZXIuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUtl
eVByZXNzRXZlbnQpOiBVc2UgdGhlIG5ldworICAgICAgICBJbnB1dE1ldGhvZEZpbHRlcjo6Zmls
dGVyS2V5RXZlbnQoKSBBUEkgYW5kIGdldCB0aGUgbGlzdCBvZgorICAgICAgICBjb21tYW5kcyBm
b3IgdGhlIGtleSB3aGVuIGV2ZW50cyB3YXMgbm90IGhhbmRsZWQgYnkgaW5wdXQgbWV0aG9kcy4K
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlS2V5UmVsZWFzZUV2ZW50KTogVXNlIHRoZSBuZXcK
KyAgICAgICAgSW5wdXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KCkgQVBJLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjogUmVtb3ZlIEdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQgbWVz
c2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRsZUtleWJvYXJkRXZlbnQpOiBD
YWxsIHRoZQorICAgICAgICBjb21wbGV0YXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYktpdDo6
SW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRsZUtleWJvYXJkRXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1
bHRzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjpmaWx0ZXJL
ZXlFdmVudCk6IFVzZSBhIGNvbXBsZXRpb24KKyAgICAgICAgaGFuZGxlciBmb3IgdGhlIHRhc2ss
IHNvIHRoYXQgdGhlIGNhbGxlciAodGhlIHdlYiB2aWV3KSBjYW4gaGFuZGxlCisgICAgICAgIHRo
ZSBrZXlib2FyZCBldmVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmls
dGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVk
aXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudCk6IFJldHVybiBlYXJsaWVyIGlmCisgICAgICAgIHRoZSBldmVudCB3
YXMgaGFuZGxlZCBieSBpbnB1dCBtZXRob2RzLiBBbmQgZ2V0IHRoZSBsaXN0IG9mCisgICAgICAg
IGNvbW1hbmRzIGZyb20gdGhlIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBpbnN0ZWFkIG9mIHNlbmRp
bmcgYSBzeW5jCisgICAgICAgIG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKTogSWYgdGhl
IGV2ZW50CisgICAgICAgIHdhcyBoYW5kbGVkIGJ5IGlucG91dCBtZXRob2RzLCBzZXQgdGhlIGV2
ZW50IGFzIGRlZmF1bHQgaGFuZGxlZCBzbworICAgICAgICB0aGF0IHRoZSBXZWJDb3JlIGV2ZW50
IGhhbmRsZXIgc2V0cyBWS19QUk9DRVNTS0VZIGFzIHdpbmRvd3MKKyAgICAgICAgdmlydHVhbCBr
ZXkgY29kZS4KKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRFZGl0b3JDb21t
YW5kc0ZvcktleUV2ZW50KTogRGVsZXRlZC4KKwogMjAxNS0wNS0yOCAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgRml4IGJ1aWxk
IGJyZWFrIHNpbmNlIHIxODQ5MzAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YktleWJvYXJkRXZlbnQuaAppbmRleCAwMDU5N2QzLi4yM2NjNzRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoTlNFdmVudCAqLCBib29sIGhhbmRs
ZWRCeUlucHV0TWV0aG9kLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYp
OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwotICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2Rr
RXZlbnQqLCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMmLCBJbnB1dE1ldGhvZEZp
bHRlcjo6RXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uKTsKKyAgICBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJiwgSW5wdXRN
ZXRob2RGaWx0ZXI6OkV2ZW50RmFrZWRGb3JDb21wb3NpdGlvbiwgVmVjdG9yPFN0cmluZz4mJiBj
b21tYW5kcyk7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiwgYm9vbCk7CiAgICAgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQu
aAppbmRleCAzOTYzN2U0Li5jMDA0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaApAQCAt
MjM1LDYgKzIzNSw4IEBAIHB1YmxpYzoKIAogI2lmIFVTRShBUFBLSVQpCiAgICAgV2ViS2V5Ym9h
cmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgdW5tb2RpZmll
ZFRleHQsIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5
Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBpbnQgbWFjQ2hhckNvZGUsIGJvb2wgaGFu
ZGxlZEJ5SW5wdXRNZXRob2QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+
JiwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXksIE1v
ZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisjZWxpZiBQTEFURk9STShHVEspCisgICAgV2Vi
S2V5Ym9hcmRFdmVudChUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5
SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxL
ZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1h
bmRzLCBib29sIGlzS2V5cGFkLCBNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2Vsc2UK
ICAgICBXZWJLZXlib2FyZEV2ZW50KFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFy
Q29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXks
IE1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKQEAgLTI0NSw5ICsyNDcsMTMg
QEAgcHVibGljOgogICAgIGludDMyX3Qgd2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV93aW5kb3dzVmlydHVhbEtleUNvZGU7IH0KICAgICBpbnQzMl90IG5hdGl2ZVZpcnR1
YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsgfQogICAg
IGludDMyX3QgbWFjQ2hhckNvZGUoKSBjb25zdCB7IHJldHVybiBtX21hY0NoYXJDb2RlOyB9Ci0j
aWYgVVNFKEFQUEtJVCkKKyNpZiBVU0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCiAgICAgYm9v
bCBoYW5kbGVkQnlJbnB1dE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlZEJ5SW5wdXRN
ZXRob2Q7IH0KKyNlbmRpZgorI2lmIFVTRShBUFBLSVQpCiAgICAgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4mIGNvbW1hbmRzKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5k
czsgfQorI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb21t
YW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZHM7IH0KICNlbmRpZgogICAgIGJvb2wgaXNB
dXRvUmVwZWF0KCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dG9SZXBlYXQ7IH0KICAgICBib29sIGlz
S2V5cGFkKCkgY29uc3QgeyByZXR1cm4gbV9pc0tleXBhZDsgfQpAQCAtMjY1LDkgKzI3MSwxMyBA
QCBwcml2YXRlOgogICAgIGludDMyX3QgbV93aW5kb3dzVmlydHVhbEtleUNvZGU7CiAgICAgaW50
MzJfdCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlOwogICAgIGludDMyX3QgbV9tYWNDaGFyQ29kZTsK
LSNpZiBVU0UoQVBQS0lUKQorI2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICBi
b29sIG1faGFuZGxlZEJ5SW5wdXRNZXRob2Q7CisjZW5kaWYKKyNpZiBVU0UoQVBQS0lUKQogICAg
IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IG1fY29tbWFuZHM7CisjZWxpZiBQTEFU
Rk9STShHVEspCisgICAgVmVjdG9yPFN0cmluZz4gbV9jb21tYW5kczsKICNlbmRpZgogICAgIGJv
b2wgbV9pc0F1dG9SZXBlYXQ7CiAgICAgYm9vbCBtX2lzS2V5cGFkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCA2MGEwYmU5Li40NTFkZWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApAQCAtMjA0
LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSB3
ZWJFdmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKTsKICAgICAgICAgbV9uYXRpdmVWaXJ0dWFs
S2V5Q29kZSA9IHdlYkV2ZW50Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCk7CiAgICAgICAgIG1fbWFj
Q2hhckNvZGUgPSB3ZWJFdmVudC5tYWNDaGFyQ29kZSgpOwotI2lmIFVTRShBUFBLSVQpCisjaWYg
VVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICBtX2hhbmRsZWRCeUlucHV0TWV0
aG9kID0gd2ViRXZlbnQuaGFuZGxlZEJ5SW5wdXRNZXRob2QoKTsKICAgICAgICAgbV9jb21tYW5k
cyA9IHdlYkV2ZW50LmNvbW1hbmRzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJLZXlib2FyZEV2ZW50LmNwcAppbmRleCAwYWM2N2UzLi44MGRlNTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCkBAIC01NCw2ICs1NCwyNSBAQCBXZWJL
ZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmCiAgICAgQVNTRVJUKGlzS2V5Ym9hcmRFdmVudFR5cGUodHlwZSkp
OwogfQogCisjZWxpZiBQTEFURk9STShHVEspCisKK1dlYktleWJvYXJkRXZlbnQ6OldlYktleWJv
YXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYga2V5
SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxL
ZXlDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1h
bmRzLCBib29sIGlzS2V5cGFkLCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1w
KQorICAgIDogV2ViRXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCisgICAgLCBtX3Rl
eHQodGV4dCkKKyAgICAsIG1fdW5tb2RpZmllZFRleHQodGV4dCkKKyAgICAsIG1fa2V5SWRlbnRp
ZmllcihrZXlJZGVudGlmaWVyKQorICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93
c1ZpcnR1YWxLZXlDb2RlKQorICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShuYXRpdmVWaXJ0
dWFsS2V5Q29kZSkKKyAgICAsIG1fbWFjQ2hhckNvZGUoMCkKKyAgICAsIG1faGFuZGxlZEJ5SW5w
dXRNZXRob2QoaGFuZGxlZEJ5SW5wdXRNZXRob2QpCisgICAgLCBtX2NvbW1hbmRzKFdURjo6bW92
ZShjb21tYW5kcykpCisgICAgLCBtX2lzQXV0b1JlcGVhdChmYWxzZSkKKyAgICAsIG1faXNLZXlw
YWQoaXNLZXlwYWQpCisgICAgLCBtX2lzU3lzdGVtS2V5KGZhbHNlKQoreworICAgIEFTU0VSVChp
c0tleWJvYXJkRXZlbnRUeXBlKHR5cGUpKTsKK30KKwogI2Vsc2UKIAogV2ViS2V5Ym9hcmRFdmVu
dDo6V2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
U3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQg
d2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWND
aGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1L
ZXksIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCkBAIC04Nyw3ICsxMDYs
NyBAQCB2b2lkIFdlYktleWJvYXJkRXZlbnQ6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlOwog
ICAgIGVuY29kZXIgPDwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsKICAgICBlbmNvZGVyIDw8IG1f
bWFjQ2hhckNvZGU7Ci0jaWYgVVNFKEFQUEtJVCkKKyNpZiBVU0UoQVBQS0lUKSB8fCBQTEFURk9S
TShHVEspCiAgICAgZW5jb2RlciA8PCBtX2hhbmRsZWRCeUlucHV0TWV0aG9kOwogICAgIGVuY29k
ZXIgPDwgbV9jb21tYW5kczsKICNlbmRpZgpAQCAtMTEzLDcgKzEzMiw3IEBAIGJvb2wgV2ViS2V5
Ym9hcmRFdmVudDo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJLZXli
b2FyZEV2ZW50JiByCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX21hY0NoYXJDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmIFVT
RShBUFBLSVQpCisjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1faGFuZGxlZEJ5SW5wdXRNZXRob2QpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9jb21tYW5kcykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZl
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50R3RrLmNwcAppbmRleCA3ZmRhY2QyLi5iOGVkMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKQEAgLTM1
LDggKzM1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1OYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2
ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJiBjb21wb3NpdGlv
blJlc3VsdHMsIElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZha2VkRm9yQ29tcG9zaXRpb24gZmFr
ZWQpCi0gICAgOiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5
Ym9hcmRFdmVudChldmVudCwgY29tcG9zaXRpb25SZXN1bHRzKSkKK05hdGl2ZVdlYktleWJvYXJk
RXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJD
b3JlOjpDb21wb3NpdGlvblJlc3VsdHMmIGNvbXBvc2l0aW9uUmVzdWx0cywgSW5wdXRNZXRob2RG
aWx0ZXI6OkV2ZW50RmFrZWRGb3JDb21wb3NpdGlvbiBmYWtlZCwgVmVjdG9yPFN0cmluZz4mJiBj
b21tYW5kcykKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJLZXlib2FyZEV2ZW50KGV2ZW50LCBjb21wb3NpdGlvblJlc3VsdHMsIFdURjo6bW92ZShjb21t
YW5kcykpKQogICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCiAgICAg
LCBtX2NvbXBvc2l0aW9uUmVzdWx0cyhjb21wb3NpdGlvblJlc3VsdHMpCiAgICAgLCBtX2Zha2VF
dmVudEZvckNvbXBvc2l0aW9uKGZha2VkID09IElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZha2Vk
KQpAQCAtNDQsNyArNDQsNyBAQCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6QwogfQogCiBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQmIGV2ZW50KQotICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQuY29t
cG9zaXRpb25SZXN1bHRzKCkpKQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgZXZlbnQuY29t
cG9zaXRpb25SZXN1bHRzKCksIFZlY3RvcjxTdHJpbmc+KGV2ZW50LmNvbW1hbmRzKCkpKSkKICAg
ICAsIG1fbmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQubmF0aXZlRXZlbnQoKSkpCiAg
ICAgLCBtX2NvbXBvc2l0aW9uUmVzdWx0cyhldmVudC5jb21wb3NpdGlvblJlc3VsdHMoKSkKICAg
ICAsIG1fZmFrZUV2ZW50Rm9yQ29tcG9zaXRpb24oZXZlbnQuaXNGYWtlRXZlbnRGb3JDb21wb3Np
dGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3Bw
CmluZGV4IDU1OTkyZDQuLjg2OTliNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTE4MSwyNyArMTgxLDE5IEBAIFdlYldoZWVsRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVu
dCkKICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsK
IH0KIAotV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJk
RXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJl
c3VsdHMmIGNvbXBvc2l0aW9uUmVzdWx0cykKK1dlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29uc3Qg
V2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJiBjb21wb3NpdGlvblJlc3VsdHMsIFZlY3RvcjxT
dHJpbmc+JiYgY29tbWFuZHMpCiB7Ci0gICAgdW5zaWduZWQgaW50IGtleVZhbHVlID0gZXZlbnQt
PmtleS5rZXl2YWw7Ci0gICAgU3RyaW5nIHRleHQgPSBjb21wb3NpdGlvblJlc3VsdHMuc2ltcGxl
U3RyaW5nLmxlbmd0aCgpID8KLSAgICAgICAgIGNvbXBvc2l0aW9uUmVzdWx0cy5zaW1wbGVTdHJp
bmcgOiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OnNpbmdsZUNoYXJhY3RlclN0cmluZyhrZXlWYWx1
ZSk7Ci0KLSAgICBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gY29tcG9zaXRpb25SZXN1bHRz
LmNvbXBvc2l0aW9uVXBkYXRlZCgpID8KLSAgICAgICAgIFZLX1BST0NFU1NLRVkgOiBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OndpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29kZShldmVudC0+a2V5Lmtl
eXZhbCk7Ci0KLSAgICByZXR1cm4gV2ViS2V5Ym9hcmRFdmVudCgoZXZlbnQtPnR5cGUgPT0gR0RL
X0tFWV9SRUxFQVNFKSA/IFdlYkV2ZW50OjpLZXlVcCA6IFdlYkV2ZW50OjpLZXlEb3duLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKGtleVZhbHVlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5kb3dzVmlydHVhbEtleUNvZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihrZXlWYWx1ZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCAvKiBtYWNDaGFyQ29kZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSAvKiBpc0F1dG9SZXBlYXQgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXNHZGtLZXlDb2RlRnJvbUtleVBhZChrZXlWYWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UgLyogaXNTeXN0ZW1LZXkgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdka19ldmVudF9nZXRfdGltZShldmVudCkpOworICAgIHJldHVybiBXZWJLZXlib2FyZEV2ZW50
KAorICAgICAgICBldmVudC0+dHlwZSA9PSBHREtfS0VZX1JFTEVBU0UgPyBXZWJFdmVudDo6S2V5
VXAgOiBXZWJFdmVudDo6S2V5RG93biwKKyAgICAgICAgY29tcG9zaXRpb25SZXN1bHRzLnNpbXBs
ZVN0cmluZy5sZW5ndGgoKSA/IGNvbXBvc2l0aW9uUmVzdWx0cy5zaW1wbGVTdHJpbmcgOiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OnNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5LmtleXZh
bCksCisgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvckdka0tl
eUNvZGUoZXZlbnQtPmtleS5rZXl2YWwpLAorICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OndpbmRvd3NLZXlDb2RlRm9yR2RrS2V5Q29kZShldmVudC0+a2V5LmtleXZhbCksCisgICAgICAg
IHN0YXRpY19jYXN0PGludD4oZXZlbnQtPmtleS5rZXl2YWwpLAorICAgICAgICBjb21wb3NpdGlv
blJlc3VsdHMuY29tcG9zaXRpb25VcGRhdGVkKCksCisgICAgICAgIFdURjo6bW92ZShjb21tYW5k
cyksCisgICAgICAgIGlzR2RrS2V5Q29kZUZyb21LZXlQYWQoZXZlbnQtPmtleS5rZXl2YWwpLAor
ICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudCksCisgICAgICAgIGdka19ldmVudF9nZXRf
dGltZShldmVudCkpOwogfQogCiBXZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIFZlY3RvcjxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+JiYgdG91Y2hQb2ludHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuaAppbmRleCAyNTExYjVkLi4yOTA5MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2Vi
RXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVX
ZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiwgaW50KTsKICAgICBzdGF0aWMgV2ViV2hlZWxF
dmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50Kik7Ci0gICAgc3RhdGljIFdl
YktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBHZGtFdmVudCosIGNv
bnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYpOworICAgIHN0YXRpYyBXZWJLZXlib2Fy
ZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJD
b3JlOjpDb21wb3NpdGlvblJlc3VsdHMmLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKTsKICAg
ICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEdka0V2ZW50
KiwgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4mJik7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYjMx
ZDhhYi4uMzNjZWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNTYsMTUgKzU2LDYgQEAgUGFnZUNsaWVudEltcGw6
OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dpZGdldCkKIHsKIH0KIAotdm9pZCBQYWdl
Q2xpZW50SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFZlY3Rv
cjxXVEY6OlN0cmluZz4mIGNvbW1hbmRMaXN0KQotewotICAgIEFTU0VSVChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmtleWRvd25FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmtl
eXByZXNzRXZlbnQpOwotCi0gICAgS2V5QmluZGluZ1RyYW5zbGF0b3I6OkV2ZW50VHlwZSB0eXBl
ID0gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgPwotICAgICAgICBLZXlC
aW5kaW5nVHJhbnNsYXRvcjo6S2V5RG93biA6IEtleUJpbmRpbmdUcmFuc2xhdG9yOjpLZXlQcmVz
czsKLSAgICBtX2tleUJpbmRpbmdUcmFuc2xhdG9yLmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZl
bnQoY29uc3RfY2FzdDxHZGtFdmVudEtleSo+KCZldmVudC5uYXRpdmVFdmVudCgpLT5rZXkpLCB0
eXBlLCBjb21tYW5kTGlzdCk7Ci19Ci0KIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVu
Y3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNWMyYzI3YS4uMmFkYjk2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
CkBAIC0yOSwxMSArMjksOSBAQAogI2RlZmluZSBQYWdlQ2xpZW50SW1wbF9oCiAKICNpbmNsdWRl
ICJEZWZhdWx0VW5kb0NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJLZXlCaW5kaW5nVHJhbnNsYXRv
ci5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtOTEsNyArODksNiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dElu
ZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBj
bGVhclRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlv
biA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jl
c3MoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0Zv
cktleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBjb25zdCBBdG9taWNTdHJp
bmcmLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHRJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiwgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSkgb3ZlcnJpZGU7CkBAIC0xMzgsNyAr
MTM1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBNZW1iZXJzIG9mIFBhZ2VDbGllbnRJbXBsIGNsYXNz
CiAgICAgR3RrV2lkZ2V0KiBtX3ZpZXdXaWRnZXQ7CiAgICAgRGVmYXVsdFVuZG9Db250cm9sbGVy
IG1fdW5kb0NvbnRyb2xsZXI7Ci0gICAgV2ViQ29yZTo6S2V5QmluZGluZ1RyYW5zbGF0b3IgbV9r
ZXlCaW5kaW5nVHJhbnNsYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCmluZGV4IDFkNzMwMWYuLmQ3MTBhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiSW5wdXRN
ZXRob2RGaWx0ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgpAQCAtNTIsNiArNTMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRp
bGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9LZXlCaW5kaW5nVHJhbnNsYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRIZWxwZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgpAQCAtMTYzLDYgKzE2NSw3IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBj
b250ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsqIGFjdGl2ZUNvbnRl
eHRNZW51UHJveHk7CiAgICAgSW5wdXRNZXRob2RGaWx0ZXIgaW5wdXRNZXRob2RGaWx0ZXI7Cisg
ICAgS2V5QmluZGluZ1RyYW5zbGF0b3Iga2V5QmluZGluZ1RyYW5zbGF0b3I7CiAgICAgVG91Y2hF
dmVudHNNYXAgdG91Y2hFdmVudHM7CiAKICAgICBHdGtXaW5kb3cqIHRvcGxldmVsT25TY3JlZW5X
aW5kb3c7CkBAIC03NDksNyArNzUyLDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3
QmFzZUtleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBlCiAgICAg
ICAgIHByaXYtPnNob3VsZEZvcndhcmROZXh0S2V5RXZlbnQgPSBGQUxTRTsKICAgICAgICAgcmV0
dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+
a2V5X3ByZXNzX2V2ZW50KHdpZGdldCwgZXZlbnQpOwogICAgIH0KLSAgICBwcml2LT5pbnB1dE1l
dGhvZEZpbHRlci5maWx0ZXJLZXlFdmVudChldmVudCk7CisKKyAgICBwcml2LT5pbnB1dE1ldGhv
ZEZpbHRlci5maWx0ZXJLZXlFdmVudChldmVudCwgW3ByaXYsIGV2ZW50XShjb25zdCBXZWJDb3Jl
OjpDb21wb3NpdGlvblJlc3VsdHMmIGNvbXBvc2l0aW9uUmVzdWx0cywgSW5wdXRNZXRob2RGaWx0
ZXI6OkV2ZW50RmFrZWRGb3JDb21wb3NpdGlvbiBmYWtlZCkgeworICAgICAgICBwcml2LT5wYWdl
UHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCBjb21wb3NpdGlvblJlc3VsdHMsIGZha2VkLAor
ICAgICAgICAgICAgIWNvbXBvc2l0aW9uUmVzdWx0cy5jb21wb3NpdGlvblVwZGF0ZWQoKSA/IHBy
aXYtPmtleUJpbmRpbmdUcmFuc2xhdG9yLmNvbW1hbmRzRm9yS2V5RXZlbnQoZXZlbnQpIDogVmVj
dG9yPFN0cmluZz4oKSkpOworICAgIH0pOworCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTc2
Miw3ICs3NzAsMTEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlS2V5UmVsZWFz
ZUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSoKICAgICAgICAgcHJpdi0+c2hv
dWxkRm9yd2FyZE5leHRLZXlFdmVudCA9IEZBTFNFOwogICAgICAgICByZXR1cm4gR1RLX1dJREdF
VF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5rZXlfcmVsZWFzZV9l
dmVudCh3aWRnZXQsIGV2ZW50KTsKICAgICB9Ci0gICAgcHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIu
ZmlsdGVyS2V5RXZlbnQoZXZlbnQpOworCisgICAgcHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIuZmls
dGVyS2V5RXZlbnQoZXZlbnQsIFtwcml2LCBldmVudF0oY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRp
b25SZXN1bHRzJiBjb21wb3NpdGlvblJlc3VsdHMsIElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZh
a2VkRm9yQ29tcG9zaXRpb24gZmFrZWQpIHsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5k
bGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQocmVpbnRlcnByZXRfY2FzdDxH
ZGtFdmVudCo+KGV2ZW50KSwgY29tcG9zaXRpb25SZXN1bHRzLCBmYWtlZCwgeyB9KSk7CisgICAg
fSk7CisKICAgICByZXR1cm4gVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggNjBlZjdiMi4uZGUyNGQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCkBAIC0xOTYsOSArMTk2LDYgQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5n
JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpID0gMDsKLSNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3Bh
Y2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGRiODJhNzIuLmQ0NGFmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjA0LDkgKzIwNCw2IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUGx1Z2luWm9vbUZhY3RvckRpZENoYW5nZShkb3VibGUg
em9vbUZhY3RvcikKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAjIFN1cHBvcnQgZm9yIEdUSysg
cGxhdGZvcm0ga2V5YmluZGluZ3MKLSAgICBHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KEF0
b21pY1N0cmluZyBldmVudFR5cGUpIC0+IChWZWN0b3I8U3RyaW5nPiBjb21tYW5kc0xpc3QpCi0K
ICAgICAjIFN1cHBvcnQgZm9yIGNvbm5lY3RpbmcgdGhlIEFjY2Vzc2liaWxpdHkgd29ybGRzIG9m
IHRoZSBVSSBhbmQgdGhlIFdlYiBwcm9jZXNzZXMKICAgICBCaW5kQWNjZXNzaWJpbGl0eVRyZWUo
U3RyaW5nIHBsdWdJRCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCA2OTZiODY0Li4wNDg5MjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMjAs
NyArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmls
dGVyLmgiCiAKLSNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CkBAIC0xMjIsNyArMTIxLDEwIEBAIHZvaWQgSW5w
dXRNZXRob2RGaWx0ZXI6OmhhbmRsZUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50LCBj
b25zdCBTdHJpbmcmIHNpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBtX3Bh
Z2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChyZWludGVycHJl
dF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpLCBDb21wb3NpdGlvblJlc3VsdHMoc2ltcGxlU3RyaW5n
KSwgZmFrZWQpKTsKKworICAgIEFTU0VSVChtX2ZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhhbmRs
ZXIpOworICAgIG1fZmlsdGVyS2V5RXZlbnRDb21wbGV0aW9uSGFuZGxlcihDb21wb3NpdGlvblJl
c3VsdHMoc2ltcGxlU3RyaW5nKSwgZmFrZWQpOworICAgIG1fZmlsdGVyS2V5RXZlbnRDb21wbGV0
aW9uSGFuZGxlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRs
ZUtleWJvYXJkRXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdka0V2ZW50S2V5KiBldmVudCwg
UmVzdWx0c1RvU2VuZCByZXN1bHRzVG9TZW5kLCBFdmVudEZha2VkRm9yQ29tcG9zaXRpb24gZmFr
ZWQpCkBAIC0xMzMsNyArMTM1LDEwIEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRsZUtl
eWJvYXJkRXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdka0V2ZW50S2V5KiBlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBtX3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQo
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQp
LCBDb21wb3NpdGlvblJlc3VsdHMoQ29tcG9zaXRpb25SZXN1bHRzOjpXaWxsU2VuZENvbXBvc2l0
aW9uUmVzdWx0c1Nvb24pLCBmYWtlZCkpOworCisgICAgQVNTRVJUKG1fZmlsdGVyS2V5RXZlbnRD
b21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9maWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVy
KENvbXBvc2l0aW9uUmVzdWx0cyhDb21wb3NpdGlvblJlc3VsdHM6OldpbGxTZW5kQ29tcG9zaXRp
b25SZXN1bHRzU29vbiksIGZha2VkKTsKKyAgICBtX2ZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhh
bmRsZXIgPSBudWxscHRyOwogCiAgICAgaWYgKHJlc3VsdHNUb1NlbmQgJiBDb21wb3NpdGlvbiAm
JiAhbV9jb25maXJtZWRDb21wb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgbV9wYWdlLT5jb25m
aXJtQ29tcG9zaXRpb24obV9jb25maXJtZWRDb21wb3NpdGlvbiwgLTEsIDApOwpAQCAtMTQ0LDEz
ICsxNDksMTQgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlS2V5Ym9hcmRFdmVudFdp
dGhDb21wb3NpdGlvblJlc3VsdHMoR2RrRXZlbnRLZXkqIGUKICAgICB9CiB9CiAKLXZvaWQgSW5w
dXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKK3ZvaWQg
SW5wdXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KEdka0V2ZW50S2V5KiBldmVudCwgRmls
dGVyS2V5RXZlbnRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lm
IEVOQUJMRShBUElfVEVTVFMpCiAgICAgQVNTRVJUKG1fcGFnZSB8fCBtX3Rlc3RpbmdNb2RlKTsK
ICNlbHNlCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAjZW5kaWYKKyAgICBtX2ZpbHRlcktleUV2ZW50
Q29tcGxldGlvbkhhbmRsZXIgPSBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGlm
ICghbV9lbmFibGVkKSB7CiAgICAgICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lu
cHV0TWV0aG9kRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0
aG9kRmlsdGVyLmgKaW5kZXggMzdkZTgzZS4uMDNjZWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuaApAQCAtMjksNiArMjksNyBAQCB0
eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRLZXkgR2RrRXZlbnRLZXk7CiB0eXBlZGVmIHN0cnVjdCBf
R3RrSU1Db250ZXh0IEd0a0lNQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q29tcG9zaXRpb25SZXN1bHRzOwogY2xhc3MgSW50UmVjdDsKIH0KIApAQCAtNTQsNyArNTUsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0Q3Vyc29y
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKLSAgICB2b2lkIGZpbHRlcktleUV2ZW50
KEdka0V2ZW50S2V5Kik7CisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdl
YkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYsIElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZha2Vk
Rm9yQ29tcG9zaXRpb24pPiBGaWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyOworICAgIHZv
aWQgZmlsdGVyS2V5RXZlbnQoR2RrRXZlbnRLZXkqLCBGaWx0ZXJLZXlFdmVudENvbXBsZXRpb25I
YW5kbGVyJiYgPSBudWxscHRyKTsKICAgICB2b2lkIG5vdGlmeUZvY3VzZWRJbigpOwogICAgIHZv
aWQgbm90aWZ5Rm9jdXNlZE91dCgpOwogICAgIHZvaWQgbm90aWZ5TW91c2VCdXR0b25QcmVzcygp
OwpAQCAtMTExLDYgKzExMyw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY29uZmlybWVkQ29t
cG9zaXRpb247CiAgICAgU3RyaW5nIG1fcHJlZWRpdDsKIAorICAgIEZpbHRlcktleUV2ZW50Q29t
cGxldGlvbkhhbmRsZXIgbV9maWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyOworCiAjaWYg
RU5BQkxFKEFQSV9URVNUUykKICAgICBib29sIG1fdGVzdGluZ01vZGU7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ldmVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKaW5kZXggNDMyODA3MC4uZDFiODJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMjcsNyArMjcsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCi0jaW5j
bHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaCIKQEAgLTUzLDE0ICs1Miw2IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0
YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
CiAgICAgcmV0dXJuIFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRFZGl0b3JDb21tYW5kc0Zv
cktleUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBjb21tYW5kc0xpc3QpCi17Ci0gICAgLy8gV2hlbiB0aGUga2V5Ym9hcmQgZXZlbnQgaXMg
c3RhcnRlZCBpbiB0aGUgV2ViUHJvY2VzcyBzaWRlIChlLmcuIGZyb20gdGhlIEluc3BlY3RvcikK
LSAgICAvLyBpdCB3aWxsIGFycml2ZSB3aXRob3V0IGEgR2RrRXZlbnQgYXNzb2NpYXRlZCwgc28g
dGhlIGtleUV2ZW50UXVldWUgd2lsbCBiZSBlbXB0eS4KLSAgICBpZiAoIW1fa2V5RXZlbnRRdWV1
ZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcGFnZUNsaWVudC5nZXRFZGl0b3JDb21tYW5kc0Zvcktl
eUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpLCBldmVudFR5cGUsIGNvbW1hbmRzTGlzdCk7
Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3QgU3Ry
aW5nJiBwbHVnSUQpCiB7CiAgICAgbV9hY2Nlc3NpYmlsaXR5UGx1Z0lEID0gcGx1Z0lEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2Vi
RWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNzY5ZDc4Yy4uOTQyZjViYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yMSwxNiArMjEsMTMg
QEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFPYmplY3RHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0tleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1dpbmRvd3NLZXlib2FyZENvZGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9t
YXJrdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKQEAgLTM4LDE3ICsz
NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3Qg
S2V5Ym9hcmRFdmVudCogZXZlbnQsIFZlY3RvcjxXVEY6OlN0cmluZz4mIHBlbmRpbmdFZGl0b3JD
b21tYW5kcykKLXsKLSAgICBBU1NFUlQoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5
ZG93bkV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQp
OwotCi0gICAgLyogRmlyc3QgdHJ5IHRvIGludGVycHJldCB0aGUgY29tbWFuZCBpbiB0aGUgVUkg
YW5kIGdldCB0aGUgY29tbWFuZHMuCi0gICAgICAgVUkgbmVlZHMgdG8gcmVjZWl2ZSBldmVudCB0
eXBlIGJlY2F1c2Ugb25seSBrbm93cyBjdXJyZW50IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuKi8K
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2
ZW50KGV2ZW50LT50eXBlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0RWRpdG9yQ29tbWFuZHNGb3JL
ZXlFdmVudDo6UmVwbHkocGVuZGluZ0VkaXRvckNvbW1hbmRzKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHM6Om1heCgpKTsKLX0KLQogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmV4
ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGJvb2wgYWxsb3dUZXh0SW5zZXJ0aW9u
KQogewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOwpAQCAtNzAsMjEgKzU2
LDIwIEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRz
KEZyYW1lKiBmcmFtZSwgY29uc3QgVmVjdG9yPFdUCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIE5vZGUqIG5v
ZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwotICAgIEFTU0VSVChub2RlKTsKLSAgICBG
cmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgQVNTRVJUKGZyYW1l
KTsKKyAgICAvLyBJZiB0aGlzIHdhcyBhbiBJTUUgZXZlbnQgZG9uJ3QgZG8gYW55dGhpbmcuCisg
ICAgaWYgKGV2ZW50LT5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKQorICAgICAgICByZXR1cm47CiAK
ICAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+
a2V5RXZlbnQoKTsKICAgICBpZiAoIXBsYXRmb3JtRXZlbnQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIElmIHRoaXMgd2FzIGFuIElNRSBldmVudCBkb24ndCBkbyBhbnl0aGluZy4KLSAgICBp
ZiAocGxhdGZvcm1FdmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgPT0gVktfUFJPQ0VTU0tF
WSkKLSAgICAgICAgcmV0dXJuOworICAgIE5vZGUqIG5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRv
Tm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1
bWVudCgpLmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKIAotICAgIFZlY3RvcjxXVEY6OlN0
cmluZz4gcGVuZGluZ0VkaXRvckNvbW1hbmRzOwotICAgIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5
RXZlbnQoZXZlbnQsIHBlbmRpbmdFZGl0b3JDb21tYW5kcyk7CisgICAgY29uc3QgVmVjdG9yPFN0
cmluZz4gcGVuZGluZ0VkaXRvckNvbW1hbmRzID0gcGxhdGZvcm1FdmVudC0+Y29tbWFuZHMoKTsK
ICAgICBpZiAoIXBlbmRpbmdFZGl0b3JDb21tYW5kcy5pc0VtcHR5KCkpIHsKIAogICAgICAgICAv
LyBEdXJpbmcgUmF3S2V5RG93biBldmVudHMgaWYgYW4gZWRpdG9yIGNvbW1hbmQgd2lsbCBpbnNl
cnQgdGV4dCwgZGVmZXIKQEAgLTEyOCw5ICsxMTMsOCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIAogdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkK
IHsKLSAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVu
dC0+a2V5RXZlbnQoKTsKLSAgICBpZiAocGxhdGZvcm1FdmVudCAmJiBwbGF0Zm9ybUV2ZW50LT53
aW5kb3dzVmlydHVhbEtleUNvZGUoKSA9PSBWS19QUk9DRVNTS0VZKQotICAgICAgICBldmVudC0+
cHJldmVudERlZmF1bHQoKTsKKyAgICBpZiAoZXZlbnQtPmhhbmRsZWRCeUlucHV0TWV0aG9kKCkp
CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiAjaWYgUExBVEZPUk0o
WDExKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254647</attachid>
            <date>2015-06-10 05:32:54 -0700</date>
            <delta_ts>2015-06-10 06:15:48 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-editing-commands.diff</filename>
            <type>text/plain</type>
            <size>37566</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNmY4ODRlLi45NWFkZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTUtMDYtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEdldCByaWQgb2YgR2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVu
dCBzeW5jIG1lc3NhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmNvbW1hbmRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwOiBVc2UgYSBzaW5nbGUgbGlz
dCBvZgorICAgICAgICBjdXN0b20ga2V5IGJpbmRpbmdzLiBXZSBkb24ndCBuZWVkIHRvIGRpc3Rp
bmd1aXNoIGJldHdlZW4ga2V5IGRvd24gYW5kCisgICAgICAgIGtleSBwcmVzcyBjb21tYW5kcywg
c2luY2UgdGhlIHdlYiBlZGl0b3IgY2xpZW50IGFscmVhZHkgZG9lcyB0aGF0CisgICAgICAgIHdo
ZW4gZXhlY3V0aW5nIHRoZSBjb21tYW5kcy4KKyAgICAgICAgKFdlYkNvcmU6OktleUJpbmRpbmdU
cmFuc2xhdG9yOjpjb21tYW5kc0ZvcktleUV2ZW50KTogVGhpcyBpcworICAgICAgICBnZXRFZGl0
b3JDb21tYW5kc0ZvcktleUV2ZW50KCkgcmVuYW1lZCBhcyBjb21tYW5kc0ZvcktleUV2ZW50KCks
CisgICAgICAgIHNpbmNlIGl0IG5vdyByZXR1cm5zIHRoZSBsaXN0IG9mIGNvbW1hbmRzIHRvIHNp
bXBsaWZ5IHRoZQorICAgICAgICBjb2RlLiBBbHNvIHNpbXBsaWZ5IHRoZSBjdXN0b20ga2V5IGJp
bmRpbmdzIGhhbmRsaW5nLCBieSB1c2luZyB0aGUKKyAgICAgICAgZ2xvYmFsIGxpc3QgaW5zdGVh
ZCBvZiBtb3ZpbmcgaXQgdG8gYSBIYXNoTWFwLgorICAgICAgICAoV2ViQ29yZTo6S2V5QmluZGlu
Z1RyYW5zbGF0b3I6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5oOgorCiAyMDE1LTA2LTEw
ICBQZXIgQXJuZSBWb2xsYW4gIDxwZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fp
cm9dIENyYXNoIG9uIGV4aXQgd2hlbiB0ZXJtaW5hdGluZyBlZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKaW5kZXggNGIzMmEwYi4uNTc4NTI2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmgKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBt
X3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgwKQogICAgICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxL
ZXlDb2RlKDApCiAgICAgICAgICAgICAsIG1fbWFjQ2hhckNvZGUoMCkKLSNpZiBVU0UoQVBQS0lU
KQorI2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgICwgbV9oYW5k
bGVkQnlJbnB1dE1ldGhvZChmYWxzZSkKICNlbmRpZgogICAgICAgICAgICAgLCBtX2F1dG9SZXBl
YXQoZmFsc2UpCkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c1ZpcnR1YWxLZXlDb2RlKQogICAg
ICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2ZVZpcnR1YWxLZXlDb2RlKQog
ICAgICAgICAgICAgLCBtX21hY0NoYXJDb2RlKG1hY0NoYXJDb2RlKQotI2lmIFVTRShBUFBLSVQp
CisjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgLCBtX2hhbmRs
ZWRCeUlucHV0TWV0aG9kKGZhbHNlKQogI2VuZGlmCiAgICAgICAgICAgICAsIG1fYXV0b1JlcGVh
dChpc0F1dG9SZXBlYXQpCkBAIC0xMTUsOSArMTE1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVWaXJ0dWFsS2V5Q29kZTsgfQogICAgICAgICBpbnQgbWFjQ2hhckNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX21hY0NoYXJDb2RlOyB9CiAKLSNpZiBVU0UoQVBQS0lUKQorI2lmIFVTRShBUFBLSVQp
IHx8IFBMQVRGT1JNKEdUSykKICAgICAgICAgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlZEJ5SW5wdXRNZXRob2Q7IH0KKyNlbmRpZgorI2lmIFVTRShB
UFBLSVQpCiAgICAgICAgIGNvbnN0IFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+JiBjb21tYW5kcygp
IGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZHM7IH0KKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICAg
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvbW1hbmRzKCkgY29uc3QgeyByZXR1cm4gbV9jb21t
YW5kczsgfQogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQoKSBjb25zdCB7IHJl
dHVybiBtX2F1dG9SZXBlYXQ7IH0KQEAgLTE2Miw5ICsxNjYsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBpbnQgbV93aW5kb3dzVmlydHVhbEtleUNvZGU7CiAgICAgICAgIGludCBt
X25hdGl2ZVZpcnR1YWxLZXlDb2RlOwogICAgICAgICBpbnQgbV9tYWNDaGFyQ29kZTsKLSNpZiBV
U0UoQVBQS0lUKQorI2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICAgICAgYm9v
bCBtX2hhbmRsZWRCeUlucHV0TWV0aG9kOworI2VuZGlmCisjaWYgVVNFKEFQUEtJVCkKICAgICAg
ICAgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4gbV9jb21tYW5kczsKKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9jb21tYW5kczsKICNlbmRpZgogICAgICAgICBi
b29sIG1fYXV0b1JlcGVhdDsKICAgICAgICAgYm9vbCBtX2lzS2V5cGFkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKaW5kZXgg
N2ExYzQ0ZS4uODliMWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCkBAIC0xODQsNjEgKzE4NCw0NCBAQCBzdHJ1Y3Qg
S2V5Q29tYmluYXRpb25FbnRyeSB7CiAgICAgY29uc3QgY2hhciogbmFtZTsKIH07CiAKLXN0YXRp
YyBjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IGtleURvd25FbnRyaWVzW10gPSB7CitzdGF0aWMg
Y29uc3QgS2V5Q29tYmluYXRpb25FbnRyeSBjdXN0b21LZXlCaW5kaW5nc1tdID0gewogICAgIHsg
R0RLX2IsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAiVG9nZ2xlQm9s
ZCIgICAgfSwKICAgICB7IEdES19pLCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAg
ICAgICAgIlRvZ2dsZUl0YWxpYyIgIH0sCiAgICAgeyBHREtfRXNjYXBlLCAgICAwLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJDYW5jZWwiICAgICAgICB9LAogICAgIHsgR0RLX2dyZWF0
ZXIsICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgfSwK
LX07Ci0KLS8vIFRoZXNlIGNvbW1hbmRzIGFyZSB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgc28g
c2hvdWxkIHRha2UgcGxhY2UKLS8vIHdoaWxlIGhhbmRsaW5nIHRoZSBLZXlQcmVzcyBldmVudC4K
LXN0YXRpYyBjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IGtleVByZXNzRW50cmllc1tdID0gewog
ICAgIHsgR0RLX1RhYiwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0VGFiIiAgICAgfSwKICAgICB7IEdES19UYWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiIH0sCiB9OwogCi12b2lkIEtleUJpbmRpbmdUcmFu
c2xhdG9yOjpnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KEdka0V2ZW50S2V5KiBldmVudCwg
RXZlbnRUeXBlIHR5cGUsIFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvbW1hbmRMaXN0KQorVmVjdG9y
PFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZl
bnRLZXkqIGV2ZW50KQogewotICAgIG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmNsZWFyKCk7Cisg
ICAgQVNTRVJUKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmlzRW1wdHkoKSk7CiAKKyAgICAvLyBG
SVhNRTogTW92ZSBLZXlCaW5kaW5nVHJhbnNsYXRvciB0byBXZWJLaXQgbGF5ZXIgYW5kIHJlbW92
ZSB0aGUgR1RLMiBjb2RlLgogI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCiAgICAgZ3RrX2JpbmRp
bmdzX2FjdGl2YXRlX2V2ZW50KEdUS19PQkpFQ1QobV9uYXRpdmVXaWRnZXQuZ2V0KCkpLCBldmVu
dCk7CiAjZWxzZQogICAgIGd0a19iaW5kaW5nc19hY3RpdmF0ZV9ldmVudChHX09CSkVDVChtX25h
dGl2ZVdpZGdldC5nZXQoKSksIGV2ZW50KTsKICNlbmRpZgogCi0gICAgaWYgKCFtX3BlbmRpbmdF
ZGl0b3JDb21tYW5kcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY29tbWFuZExpc3QuYXBwZW5kVmVj
dG9yKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChJbnRDb25zdENoYXJIYXNoTWFwLCBr
ZXlEb3duQ29tbWFuZHNNYXAsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoSW50Q29uc3RDaGFySGFzaE1hcCwga2V5UHJlc3NDb21tYW5kc01hcCwgKCkpOwotCi0gICAg
aWYgKGtleURvd25Db21tYW5kc01hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKLSAgICAgICAg
ICAgIGtleURvd25Db21tYW5kc01hcC5zZXQoa2V5RG93bkVudHJpZXNbaV0uc3RhdGUgPDwgMTYg
fCBrZXlEb3duRW50cmllc1tpXS5nZGtLZXlDb2RlLCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsK
LQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtleVByZXNz
RW50cmllcyk7IGkrKykKLSAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAuc2V0KGtleVBy
ZXNzRW50cmllc1tpXS5zdGF0ZSA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5nZGtLZXlDb2Rl
LCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7Ci0gICAgfQorICAgIGlmICghbV9wZW5kaW5nRWRp
dG9yQ29tbWFuZHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG1fcGVuZGlu
Z0VkaXRvckNvbW1hbmRzKTsKIAogICAgIC8vIFNwZWNpYWwtY2FzZSBlbnRlciBrZXlzIGZvciB3
ZSB3YW50IHRoZW0gdG8gd29yayByZWdhcmRsZXNzIG9mIG1vZGlmaWVyLgotICAgIGlmICgoZXZl
bnQtPmtleXZhbCA9PSBHREtfUmV0dXJuIHx8IGV2ZW50LT5rZXl2YWwgPT0gR0RLX0tQX0VudGVy
IHx8IGV2ZW50LT5rZXl2YWwgPT0gR0RLX0lTT19FbnRlcikgJiYgdHlwZSA9PSBLZXlQcmVzcykg
ewotICAgICAgICBjb21tYW5kTGlzdC5hcHBlbmQoIkluc2VydE5ld0xpbmUiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAoKGV2ZW50LT5rZXl2YWwgPT0gR0RLX1JldHVybiB8fCBl
dmVudC0+a2V5dmFsID09IEdES19LUF9FbnRlciB8fCBldmVudC0+a2V5dmFsID09IEdES19JU09f
RW50ZXIpKQorICAgICAgICByZXR1cm4geyAiSW5zZXJ0TmV3TGluZSIgfTsKIAogICAgIC8vIEZv
ciBrZXlwcmVzcyBldmVudHMsIHdlIHdhbnQgY2hhckNvZGUoKSwgYnV0IGtleUNvZGUoKSBkb2Vz
IHRoYXQuCi0gICAgaW50IG1hcEtleSA9IGV2ZW50LT5zdGF0ZSA8PCAxNiB8IGV2ZW50LT5rZXl2
YWw7Ci0gICAgaWYgKG1hcEtleSkgewotICAgICAgICBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+
KiBjb21tYW5kTWFwID0gdHlwZSA9PSBLZXlEb3duID8gICZrZXlEb3duQ29tbWFuZHNNYXAgOiAm
a2V5UHJlc3NDb21tYW5kc01hcDsKLSAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGNvbW1hbmRTdHJp
bmcgPSBjb21tYW5kTWFwLT5nZXQobWFwS2V5KSkgewotICAgICAgICAgICAgY29tbWFuZExpc3Qu
YXBwZW5kKGNvbW1hbmRTdHJpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgdW5zaWduZWQgbWFwS2V5ID0gZXZlbnQtPnN0YXRlIDw8IDE2IHwgZXZlbnQtPmtleXZhbDsK
KyAgICBpZiAoIW1hcEtleSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoY3VzdG9tS2V5QmluZGluZ3MpOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1hcEtleSA9PSAoY3VzdG9tS2V5QmluZGluZ3NbaV0uc3RhdGUgPDwgMTYgfCBj
dXN0b21LZXlCaW5kaW5nc1tpXS5nZGtLZXlDb2RlKSkKKyAgICAgICAgICAgIHJldHVybiB7IGN1
c3RvbUtleUJpbmRpbmdzW2ldLm5hbWUgfTsKICAgICB9CisKKyAgICByZXR1cm4geyB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5oCmluZGV4IGM2NDM2ZGUuLjcwMmFhYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5o
CkBAIC0zMSwxMyArMzEsMTIgQEAgY2xhc3MgS2V5QmluZGluZ1RyYW5zbGF0b3IgewogcHVibGlj
OgogICAgIEtleUJpbmRpbmdUcmFuc2xhdG9yKCk7CiAKLSAgICBlbnVtIEV2ZW50VHlwZSB7IEtl
eURvd24sIEtleVByZXNzIH07Ci0gICAgdm9pZCBnZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50
KEdka0V2ZW50S2V5KiwgRXZlbnRUeXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+Jik7CisgICAgVmVj
dG9yPFN0cmluZz4gY29tbWFuZHNGb3JLZXlFdmVudChHZGtFdmVudEtleSopOwogICAgIHZvaWQg
YWRkUGVuZGluZ0VkaXRvckNvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCkgeyBtX3BlbmRpbmdF
ZGl0b3JDb21tYW5kcy5hcHBlbmQoY29tbWFuZCk7IH0KIAogcHJpdmF0ZToKICAgICBHUmVmUHRy
PEd0a1dpZGdldD4gbV9uYXRpdmVXaWRnZXQ7Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX3Bl
bmRpbmdFZGl0b3JDb21tYW5kczsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3BlbmRpbmdFZGl0b3JD
b21tYW5kczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3NjFk
NTc5Li5jNTMyMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTUtMDYtMDIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEdldCByaWQgb2YgR2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCBzeW5jIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTU5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBzZW5k
aW5nIEdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQgc3luYyBtZXNzYWdlIGZyb20gd2ViCisg
ICAgICAgIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MgZm9yIGV2ZXJ5IGtleSBwcmVzc2VkLiBB
bmQgaWYgdGhlCisgICAgICAgIGtleWRvd24gZXZlbnQgZG9lc24ndCBoYW5kbGUgdGhlIGtleSwg
dGhlIG1lc3NhZ2UgaXMgc2VudCBhZ2FpbgorICAgICAgICBmb3IgdGhlIGtleXByZXNzIGV2ZW50
LCBzbyBpbiBtYW55IGNhc2VzIGl0IGhhcHBlbnMgdHdpY2UgcGVyCisgICAgICAgIGtleXByZXNz
LiBXZSBjYW4gZ2V0IHRoZSBsaXN0IG9mIGNvbW1hbmRzIHdoZW4gdGhlIGtleSBwcmVzcyBldmVu
dAorICAgICAgICBoYXBwZW5zIGluIHRoZSB3ZWIgdmlldywgYW5kIHNlbmQgaXQgdG8gdGhlIHdl
YiBwcm9jZXNzIGFzIHBhcnQgb2YKKyAgICAgICAgdGhlIGtleWJvYXJkIGV2ZW50IGxpa2UgbWFj
IHBvcnQgZG9lcy4gSW4gdGhlIHdlYiBwcm9jZXNzLAorICAgICAgICBjb21tYW5kcyBub3QgaW5z
ZXJ0aW5nIHRleHQgd2lsbCBiZSBoYW5kbGVkIGJ5IGtleWRvd24gYW5kIHRoZQorICAgICAgICBy
ZXN0IGluIGtleXByZXNzIHdpdGhvdXQgaGF2aW5nIHRvIHVzZSBhbnkgb3RoZXIgSVBDIG1lc3Nh
Z2UgZm9yIHRoYXQuCisKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
OiBBZGQgY29tbWFuZCBsaXN0IHBhcmFtZXRlciB0bworICAgICAgICB0aGUgY29uc3RydWN0b3Iu
CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Lmg6IEFkZCBHVEsgc3BlY2lmaWMgY29uc3RydWN0
b3IgdGhhdCByZWNlaXZlcyBhCisgICAgICAgIGxpc3Qgb2YgY29tbWFuZHMgYW5kIHdoZXRoZXIg
dGhlIGV2ZW50IHdhcyBoYW5kbGVkIGJ5IGlucHV0IG1ldGhvZHMuCisgICAgICAgIChXZWJLaXQ6
OldlYktleWJvYXJkRXZlbnQ6OmNvbW1hbmRzKTogUmV0dXJucyB0aGUgbGlzdCBvZiBjb21tYW5k
cy4KKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9h
cmRFdmVudCk6CisgICAgICAgIEFsc28gY29weSB0aGUgY29tbWFuZHMgYW5kIGhhbmRsZWRCeUlu
cHV0TWV0aG9kIG1lbWJlci4KKyAgICAgICAgKiBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQ6OldlYktleWJvYXJkRXZlbnQpOiBJ
bXBsZW1lbnQgR1RLCisgICAgICAgIHNwZWNpZmljIGNvbnN0cnVjdG9yIHRoYXQgcmVjZWl2ZXMg
YSBsaXN0IG9mIGNvbW1hbmRzIGFuZCB3aGV0aGVyCisgICAgICAgIHRoZSBldmVudCB3YXMgaGFu
ZGxlZCBieSBpbnB1dCBtZXRob2RzLgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50
OjplbmNvZGUpOiBFbmNvZGUgY29tbWFuZHMgYW5kIGhhbmRsZWRCeUlucHV0TWV0aG9kLgorICAg
ICAgICAoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50OjpkZWNvZGUpOiBEZWNvZGUgY29tbWFuZHMg
YW5kIGhhbmRsZWRCeUlucHV0TWV0aG9kLgorICAgICAgICAqIFNoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJk
RXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQpOiBBZGQKKyAgICAgICAgY29tbWFuZCBsaXN0
IHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IuCisgICAgICAgICogU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYktleWJvYXJkRXZlbnQpOiBVc2UgdGhlIG5ldworICAgICAgICBXZWJLZXlib2FyZEV2ZW50
IGNvbnN0cnVjdG9yIGFuZCBzaW1wbGlmeSB0aGUgY29kZS4gV2UgZG9uJ3QgbmVlZAorICAgICAg
ICB0byBleHBsaWNpdGx5IHNldCBWS19QUk9DRVNTS0VZIGFzIHdpbmRvd3MgdmlydHVhbCBrZXkg
Y29kZSB3aGVuCisgICAgICAgIHRoZSBldmVudCB3YXMgaGFuZGxlZCBieSBpbnB1dCBtZXRob2Rz
LiBUaGUgV2ViQ29yZSBldmVudCBoYW5kbGVyCisgICAgICAgIGFscmVhZHkgZG9lcyB0aGF0Lgor
ICAgICAgICAqIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6IEFkZCBhCisgICAgICAgIEtleUJpbmRp
bmdUcmFuc2xhdG9yIG1lbWJlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlS2V5UHJlc3NF
dmVudCk6IFVzZSB0aGUgbmV3CisgICAgICAgIElucHV0TWV0aG9kRmlsdGVyOjpmaWx0ZXJLZXlF
dmVudCgpIEFQSSBhbmQgZ2V0IHRoZSBsaXN0IG9mCisgICAgICAgIGNvbW1hbmRzIGZvciB0aGUg
a2V5IHdoZW4gZXZlbnRzIHdhcyBub3QgaGFuZGxlZCBieSBpbnB1dCBtZXRob2RzLgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VLZXlSZWxlYXNlRXZlbnQpOiBVc2UgdGhlIG5ldworICAgICAg
ICBJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQoKSBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOiBSZW1vdmUgR2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCBtZXNzYWdlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IENhbGwgdGhl
CisgICAgICAgIGNvbXBsZXRhdGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1l
dGhvZEZpbHRlcjo6aGFuZGxlS2V5Ym9hcmRFdmVudFdpdGhDb21wb3NpdGlvblJlc3VsdHMpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50
KTogVXNlIGEgY29tcGxldGlvbgorICAgICAgICBoYW5kbGVyIGZvciB0aGUgdGFzaywgc28gdGhh
dCB0aGUgY2FsbGVyICh0aGUgd2ViIHZpZXcpIGNhbiBoYW5kbGUKKyAgICAgICAgdGhlIGtleWJv
YXJkIGV2ZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudCk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXli
b2FyZEV2ZW50KTogUmV0dXJuIGVhcmxpZXIgaWYKKyAgICAgICAgdGhlIGV2ZW50IHdhcyBoYW5k
bGVkIGJ5IGlucHV0IG1ldGhvZHMuIEFuZCBnZXQgdGhlIGxpc3Qgb2YKKyAgICAgICAgY29tbWFu
ZHMgZnJvbSB0aGUgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGluc3RlYWQgb2Ygc2VuZGluZyBhIHN5
bmMKKyAgICAgICAgbWVzc2FnZSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOiBJZiB0aGUgZXZlbnQK
KyAgICAgICAgd2FzIGhhbmRsZWQgYnkgaW5wb3V0IG1ldGhvZHMsIHNldCB0aGUgZXZlbnQgYXMg
ZGVmYXVsdCBoYW5kbGVkIHNvCisgICAgICAgIHRoYXQgdGhlIFdlYkNvcmUgZXZlbnQgaGFuZGxl
ciBzZXRzIFZLX1BST0NFU1NLRVkgYXMgd2luZG93cworICAgICAgICB2aXJ0dWFsIGtleSBjb2Rl
LgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldEVkaXRvckNvbW1hbmRzRm9y
S2V5RXZlbnQpOiBEZWxldGVkLgorCiAyMDE1LTA2LTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWIgSW5zcGVjdG9yIGlzIGJyb2tlbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXgg
MDA1OTdkMy4uMjNjYzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KE5TRXZlbnQgKiwgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mKTsKICNlbGlmIFBMQVRGT1JNKEdUSykK
ICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
KTsKLSAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6
Q29tcG9zaXRpb25SZXN1bHRzJiwgSW5wdXRNZXRob2RGaWx0ZXI6OkV2ZW50RmFrZWRGb3JDb21w
b3NpdGlvbik7CisgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtFdmVudCosIGNvbnN0IFdl
YkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYsIElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZha2Vk
Rm9yQ29tcG9zaXRpb24sIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMpOwogI2VsaWYgUExBVEZP
Uk0oRUZMKQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biosIGJvb2wpOwogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9LZXlfVXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKaW5kZXggMzk2MzdlNC4uYzAwNDcx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKQEAgLTIzNSw2ICsyMzUsOCBAQCBwdWJsaWM6
CiAKICNpZiBVU0UoQVBQS0lUKQogICAgIFdlYktleWJvYXJkRXZlbnQoVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHVubW9kaWZpZWRUZXh0LCBjb25zdCBTdHJpbmcmIGtl
eUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFs
S2V5Q29kZSwgaW50IG1hY0NoYXJDb2RlLCBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYsIGJvb2wgaXNBdXRvUmVwZWF0LCBi
b29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3Rh
bXApOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIFdlYktleWJvYXJkRXZlbnQoVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dz
VmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJ
bnB1dE1ldGhvZCwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgTW9k
aWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKICNlbHNlCiAgICAgV2ViS2V5Ym9hcmRFdmVudChU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgdW5tb2RpZmllZFRleHQsIGNv
bnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50
IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBpbnQgbWFjQ2hhckNvZGUsIGJvb2wgaXNBdXRvUmVwZWF0
LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBNb2RpZmllcnMsIGRvdWJsZSB0aW1l
c3RhbXApOwogI2VuZGlmCkBAIC0yNDUsOSArMjQ3LDEzIEBAIHB1YmxpYzoKICAgICBpbnQzMl90
IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93c1ZpcnR1YWxL
ZXlDb2RlOyB9CiAgICAgaW50MzJfdCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmF0aXZlVmlydHVhbEtleUNvZGU7IH0KICAgICBpbnQzMl90IG1hY0NoYXJDb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9tYWNDaGFyQ29kZTsgfQotI2lmIFVTRShBUFBLSVQpCisjaWYgVVNF
KEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogICAgIGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2Qo
KSBjb25zdCB7IHJldHVybiBtX2hhbmRsZWRCeUlucHV0TWV0aG9kOyB9CisjZW5kaWYKKyNpZiBV
U0UoQVBQS0lUKQogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+JiBj
b21tYW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZHM7IH0KKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBt
X2NvbW1hbmRzOyB9CiAjZW5kaWYKICAgICBib29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNBdXRvUmVwZWF0OyB9CiAgICAgYm9vbCBpc0tleXBhZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNLZXlwYWQ7IH0KQEAgLTI2NSw5ICsyNzEsMTMgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90
IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlOwogICAgIGludDMyX3QgbV9uYXRpdmVWaXJ0dWFsS2V5
Q29kZTsKICAgICBpbnQzMl90IG1fbWFjQ2hhckNvZGU7Ci0jaWYgVVNFKEFQUEtJVCkKKyNpZiBV
U0UoQVBQS0lUKSB8fCBQTEFURk9STShHVEspCiAgICAgYm9vbCBtX2hhbmRsZWRCeUlucHV0TWV0
aG9kOworI2VuZGlmCisjaWYgVVNFKEFQUEtJVCkKICAgICBWZWN0b3I8V2ViQ29yZTo6S2V5cHJl
c3NDb21tYW5kPiBtX2NvbW1hbmRzOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIFZlY3RvcjxT
dHJpbmc+IG1fY29tbWFuZHM7CiAjZW5kaWYKICAgICBib29sIG1faXNBdXRvUmVwZWF0OwogICAg
IGJvb2wgbV9pc0tleXBhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJF
dmVudENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVy
c2lvbi5jcHAKaW5kZXggNjBhMGJlOS4uNDUxZGVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gd2ViRXZlbnQud2luZG93c1ZpcnR1YWxL
ZXlDb2RlKCk7CiAgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSB3ZWJFdmVudC5uYXRp
dmVWaXJ0dWFsS2V5Q29kZSgpOwogICAgICAgICBtX21hY0NoYXJDb2RlID0gd2ViRXZlbnQubWFj
Q2hhckNvZGUoKTsKLSNpZiBVU0UoQVBQS0lUKQorI2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JN
KEdUSykKICAgICAgICAgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZCA9IHdlYkV2ZW50LmhhbmRsZWRC
eUlucHV0TWV0aG9kKCk7CiAgICAgICAgIG1fY29tbWFuZHMgPSB3ZWJFdmVudC5jb21tYW5kcygp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKaW5k
ZXggMGFjNjdlMy4uODBkZTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YktleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcApAQCAtNTQsNiArNTQsMjUgQEAgV2ViS2V5Ym9hcmRFdmVudDo6V2ViS2V5Ym9h
cmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJgogICAg
IEFTU0VSVChpc0tleWJvYXJkRXZlbnRUeXBlKHR5cGUpKTsKIH0KIAorI2VsaWYgUExBVEZPUk0o
R1RLKQorCitXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dz
VmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBoYW5kbGVkQnlJ
bnB1dE1ldGhvZCwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgTW9k
aWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICA6IFdlYkV2ZW50KHR5cGUs
IG1vZGlmaWVycywgdGltZXN0YW1wKQorICAgICwgbV90ZXh0KHRleHQpCisgICAgLCBtX3VubW9k
aWZpZWRUZXh0KHRleHQpCisgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllcikKKyAg
ICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSkKKyAgICAs
IG1fbmF0aXZlVmlydHVhbEtleUNvZGUobmF0aXZlVmlydHVhbEtleUNvZGUpCisgICAgLCBtX21h
Y0NoYXJDb2RlKDApCisgICAgLCBtX2hhbmRsZWRCeUlucHV0TWV0aG9kKGhhbmRsZWRCeUlucHV0
TWV0aG9kKQorICAgICwgbV9jb21tYW5kcyhXVEY6Om1vdmUoY29tbWFuZHMpKQorICAgICwgbV9p
c0F1dG9SZXBlYXQoZmFsc2UpCisgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkKQorICAgICwgbV9p
c1N5c3RlbUtleShmYWxzZSkKK3sKKyAgICBBU1NFUlQoaXNLZXlib2FyZEV2ZW50VHlwZSh0eXBl
KSk7Cit9CisKICNlbHNlCiAKIFdlYktleWJvYXJkRXZlbnQ6OldlYktleWJvYXJkRXZlbnQoVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgdW5tb2RpZmllZFRleHQs
IGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwg
aW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBpbnQgbWFjQ2hhckNvZGUsIGJvb2wgaXNBdXRvUmVw
ZWF0LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBNb2RpZmllcnMgbW9kaWZpZXJz
LCBkb3VibGUgdGltZXN0YW1wKQpAQCAtODcsNyArMTA2LDcgQEAgdm9pZCBXZWJLZXlib2FyZEV2
ZW50OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICBlbmNvZGVyIDw8IG1fbmF0aXZl
VmlydHVhbEtleUNvZGU7CiAgICAgZW5jb2RlciA8PCBtX21hY0NoYXJDb2RlOwotI2lmIFVTRShB
UFBLSVQpCisjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RLKQogICAgIGVuY29kZXIgPDwg
bV9oYW5kbGVkQnlJbnB1dE1ldGhvZDsKICAgICBlbmNvZGVyIDw8IG1fY29tbWFuZHM7CiAjZW5k
aWYKQEAgLTExMyw3ICsxMzIsNyBAQCBib29sIFdlYktleWJvYXJkRXZlbnQ6OmRlY29kZShJUEM6
OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViS2V5Ym9hcmRFdmVudCYgcgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9tYWNDaGFyQ29k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBVU0UoQVBQS0lUKQorI2lmIFVTRShBUFBL
SVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2hh
bmRsZWRCeUlucHV0TWV0aG9kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fY29tbWFuZHMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKaW5kZXggN2ZkYWNk
Mi4uYjhlZDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVX
ZWJLZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05h
dGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCkBAIC0zNSw4ICszNSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNv
cmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYgY29tcG9zaXRpb25SZXN1bHRzLCBJbnB1dE1ldGhvZEZp
bHRlcjo6RXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uIGZha2VkKQotICAgIDogV2ViS2V5Ym9hcmRF
dmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIGNvbXBv
c2l0aW9uUmVzdWx0cykpCitOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRz
JiBjb21wb3NpdGlvblJlc3VsdHMsIElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZha2VkRm9yQ29t
cG9zaXRpb24gZmFrZWQsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMpCisgICAgOiBXZWJLZXli
b2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChldmVudCwg
Y29tcG9zaXRpb25SZXN1bHRzLCBXVEY6Om1vdmUoY29tbWFuZHMpKSkKICAgICAsIG1fbmF0aXZl
RXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQogICAgICwgbV9jb21wb3NpdGlvblJlc3VsdHMo
Y29tcG9zaXRpb25SZXN1bHRzKQogICAgICwgbV9mYWtlRXZlbnRGb3JDb21wb3NpdGlvbihmYWtl
ZCA9PSBJbnB1dE1ldGhvZEZpbHRlcjo6RXZlbnRGYWtlZCkKQEAgLTQ0LDcgKzQ0LDcgQEAgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtFdmVudCogZXZl
bnQsIGNvbnN0IFdlYkNvcmU6OkMKIH0KIAogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZl
V2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKLSAg
ICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2
ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNvbXBvc2l0aW9uUmVzdWx0cygpKSkKKyAg
ICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2
ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIGV2ZW50LmNvbXBvc2l0aW9uUmVzdWx0cygpLCBWZWN0
b3I8U3RyaW5nPihldmVudC5jb21tYW5kcygpKSkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGdka19l
dmVudF9jb3B5KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKQogICAgICwgbV9jb21wb3NpdGlvblJlc3Vs
dHMoZXZlbnQuY29tcG9zaXRpb25SZXN1bHRzKCkpCiAgICAgLCBtX2Zha2VFdmVudEZvckNvbXBv
c2l0aW9uKGV2ZW50LmlzRmFrZUV2ZW50Rm9yQ29tcG9zaXRpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCA1NTk5MmQ0Li44Njk5YjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCkBA
IC0xODEsMjcgKzE4MSwxOSBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CiB9CiAKLVdlYktleWJvYXJkRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEdka0V2ZW50KiBl
dmVudCwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJiBjb21wb3NpdGlvblJlc3Vs
dHMpCitXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRF
dmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVz
dWx0cyYgY29tcG9zaXRpb25SZXN1bHRzLCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRzKQogewot
ICAgIHVuc2lnbmVkIGludCBrZXlWYWx1ZSA9IGV2ZW50LT5rZXkua2V5dmFsOwotICAgIFN0cmlu
ZyB0ZXh0ID0gY29tcG9zaXRpb25SZXN1bHRzLnNpbXBsZVN0cmluZy5sZW5ndGgoKSA/Ci0gICAg
ICAgICBjb21wb3NpdGlvblJlc3VsdHMuc2ltcGxlU3RyaW5nIDogUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpzaW5nbGVDaGFyYWN0ZXJTdHJpbmcoa2V5VmFsdWUpOwotCi0gICAgaW50IHdpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9IGNvbXBvc2l0aW9uUmVzdWx0cy5jb21wb3NpdGlvblVwZGF0ZWQoKSA/
Ci0gICAgICAgICBWS19QUk9DRVNTS0VZIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3aW5kb3dz
S2V5Q29kZUZvckdka0tleUNvZGUoZXZlbnQtPmtleS5rZXl2YWwpOwotCi0gICAgcmV0dXJuIFdl
YktleWJvYXJkRXZlbnQoKGV2ZW50LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkgPyBXZWJFdmVu
dDo6S2V5VXAgOiBXZWJFdmVudDo6S2V5RG93biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVyRm9yR2Rr
S2V5Q29kZShrZXlWYWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93c1Zp
cnR1YWxLZXlDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4oa2V5VmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogbWFjQ2hhckNv
ZGUgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNBdXRvUmVwZWF0
ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzR2RrS2V5Q29kZUZyb21LZXlQYWQo
a2V5VmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGlzU3lzdGVt
S2V5ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2
ZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZl
bnQpKTsKKyAgICByZXR1cm4gV2ViS2V5Ym9hcmRFdmVudCgKKyAgICAgICAgZXZlbnQtPnR5cGUg
PT0gR0RLX0tFWV9SRUxFQVNFID8gV2ViRXZlbnQ6OktleVVwIDogV2ViRXZlbnQ6OktleURvd24s
CisgICAgICAgIGNvbXBvc2l0aW9uUmVzdWx0cy5zaW1wbGVTdHJpbmcubGVuZ3RoKCkgPyBjb21w
b3NpdGlvblJlc3VsdHMuc2ltcGxlU3RyaW5nIDogUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzaW5n
bGVDaGFyYWN0ZXJTdHJpbmcoZXZlbnQtPmtleS5rZXl2YWwpLAorICAgICAgICBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXkua2V5dmFs
KSwKKyAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3aW5kb3dzS2V5Q29kZUZvckdka0tl
eUNvZGUoZXZlbnQtPmtleS5rZXl2YWwpLAorICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50
LT5rZXkua2V5dmFsKSwKKyAgICAgICAgY29tcG9zaXRpb25SZXN1bHRzLmNvbXBvc2l0aW9uVXBk
YXRlZCgpLAorICAgICAgICBXVEY6Om1vdmUoY29tbWFuZHMpLAorICAgICAgICBpc0dka0tleUNv
ZGVGcm9tS2V5UGFkKGV2ZW50LT5rZXkua2V5dmFsKSwKKyAgICAgICAgbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQpLAorICAgICAgICBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsKIH0KIAogV2Vi
VG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgR2Rr
RXZlbnQqIGV2ZW50LCBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiYmIHRvdWNoUG9pbnRz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggMjUx
MWI1ZC4uMjkwOTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYkV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtF
dmVudCosIGludCk7CiAgICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVu
dChjb25zdCBHZGtFdmVudCopOwotICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlv
blJlc3VsdHMmKTsKKyAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRz
JiwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcyk7CiAgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQg
Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBHZGtFdmVudCosIFZlY3RvcjxXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ+JiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGIzMWQ4YWIuLjMzY2VjZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAK
QEAgLTU2LDE1ICs1Niw2IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRn
ZXQqIHZpZXdXaWRnZXQpCiB7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmdldEVkaXRvckNv
bW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb21tYW5k
TGlzdCkKLXsKLSAgICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZl
bnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKLQotICAgIEtl
eUJpbmRpbmdUcmFuc2xhdG9yOjpFdmVudFR5cGUgdHlwZSA9IGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50ID8KLSAgICAgICAgS2V5QmluZGluZ1RyYW5zbGF0b3I6OktleURv
d24gOiBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6S2V5UHJlc3M7Ci0gICAgbV9rZXlCaW5kaW5nVHJh
bnNsYXRvci5nZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0X2Nhc3Q8R2RrRXZlbnRL
ZXkqPigmZXZlbnQubmF0aXZlRXZlbnQoKS0+a2V5KSwgdHlwZSwgY29tbWFuZExpc3QpOwotfQot
CiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRy
PERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5
KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDVjMmMyN2EuLjJhZGI5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMjksMTEgKzI5LDkgQEAKICNk
ZWZpbmUgUGFnZUNsaWVudEltcGxfaAogCiAjaW5jbHVkZSAiRGVmYXVsdFVuZG9Db250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUg
PG1lbW9yeT4KQEAgLTkxLDcgKzg5LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VGV4dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFu
ZW50KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFdURjo6U3RyaW5n
PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBkcmFnSW1hZ2UpIG92ZXJyaWRlOwpAQCAtMTM4LDcgKzEzNSw2IEBAIHByaXZhdGU6CiAgICAg
Ly8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0a1dpZGdldCogbV92aWV3
V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwotICAg
IFdlYkNvcmU6OktleUJpbmRpbmdUcmFuc2xhdG9yIG1fa2V5QmluZGluZ1RyYW5zbGF0b3I7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCAxZDczMDFmLi5kNzEw
YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCisjaW5jbHVk
ZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNs
aWVudEltcGwuaCIKQEAgLTUyLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQ
dHJHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3RrVmVyc2lvbmluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS2V5QmluZGluZ1RyYW5z
bGF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYXN0ZWJvYXJkSGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXkuaD4KQEAgLTE2Myw2ICsxNjUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSB7CiAgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gY29udGV4dE1lbnVFdmVudDsKICAgICBX
ZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250ZXh0TWVudVByb3h5OwogICAgIElucHV0
TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOworICAgIEtleUJpbmRpbmdUcmFuc2xhdG9y
IGtleUJpbmRpbmdUcmFuc2xhdG9yOwogICAgIFRvdWNoRXZlbnRzTWFwIHRvdWNoRXZlbnRzOwog
CiAgICAgR3RrV2luZG93KiB0b3BsZXZlbE9uU2NyZWVuV2luZG93OwpAQCAtNzQ5LDcgKzc1Miwx
MiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VLZXlQcmVzc0V2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZQogICAgICAgICBwcml2LT5zaG91bGRGb3J3YXJk
TmV4dEtleUV2ZW50ID0gRkFMU0U7CiAgICAgICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPmtleV9wcmVzc19ldmVudCh3aWRnZXQs
IGV2ZW50KTsKICAgICB9Ci0gICAgcHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIuZmlsdGVyS2V5RXZl
bnQoZXZlbnQpOworCisgICAgcHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIuZmlsdGVyS2V5RXZlbnQo
ZXZlbnQsIFtwcml2LCBldmVudF0oY29uc3QgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzJiBj
b21wb3NpdGlvblJlc3VsdHMsIElucHV0TWV0aG9kRmlsdGVyOjpFdmVudEZha2VkRm9yQ29tcG9z
aXRpb24gZmFrZWQpIHsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2
ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2
ZW50KSwgY29tcG9zaXRpb25SZXN1bHRzLCBmYWtlZCwKKyAgICAgICAgICAgICFjb21wb3NpdGlv
blJlc3VsdHMuY29tcG9zaXRpb25VcGRhdGVkKCkgPyBwcml2LT5rZXlCaW5kaW5nVHJhbnNsYXRv
ci5jb21tYW5kc0ZvcktleUV2ZW50KGV2ZW50KSA6IFZlY3RvcjxTdHJpbmc+KCkpKTsKKyAgICB9
KTsKKwogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC03NjIsNyArNzcwLDExIEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUtleVJlbGVhc2VFdmVudChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRLZXkqCiAgICAgICAgIHByaXYtPnNob3VsZEZvcndhcmROZXh0S2V5RXZlbnQg
PSBGQUxTRTsKICAgICAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3
X2Jhc2VfcGFyZW50X2NsYXNzKS0+a2V5X3JlbGVhc2VfZXZlbnQod2lkZ2V0LCBldmVudCk7CiAg
ICAgfQotICAgIHByaXYtPmlucHV0TWV0aG9kRmlsdGVyLmZpbHRlcktleUV2ZW50KGV2ZW50KTsK
KworICAgIHByaXYtPmlucHV0TWV0aG9kRmlsdGVyLmZpbHRlcktleUV2ZW50KGV2ZW50LCBbcHJp
diwgZXZlbnRdKGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYgY29tcG9zaXRpb25S
ZXN1bHRzLCBJbnB1dE1ldGhvZEZpbHRlcjo6RXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uIGZha2Vk
KSB7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIGNvbXBv
c2l0aW9uUmVzdWx0cywgZmFrZWQsIHsgfSkpOworICAgIH0pOworCiAgICAgcmV0dXJuIFRSVUU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDYwZWY3YjIuLmRl
MjRkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTk2LDkgKzE5
Niw2IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCi0gICAg
dmlydHVhbCB2b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYsIFZlY3RvcjxXVEY6OlN0cmluZz4m
KSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9E
ZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhODVjMmQ2Li45ZGI5NzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTIwNCw5ICsyMDQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IFBsdWdpblpvb21GYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHpvb21GYWN0b3IpCiAKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgIyBTdXBwb3J0IGZvciBHVEsrIHBsYXRmb3JtIGtleWJpbmRpbmdzCi0g
ICAgR2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChBdG9taWNTdHJpbmcgZXZlbnRUeXBlKSAt
PiAoVmVjdG9yPFN0cmluZz4gY29tbWFuZHNMaXN0KQotCiAgICAgIyBTdXBwb3J0IGZvciBjb25u
ZWN0aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IHdvcmxkcyBvZiB0aGUgVUkgYW5kIHRoZSBXZWIgcHJv
Y2Vzc2VzCiAgICAgQmluZEFjY2Vzc2liaWxpdHlUcmVlKFN0cmluZyBwbHVnSUQpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5k
ZXggNjk2Yjg2NC4uMDQ4OTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbnB1dE1ldGhvZEZpbHRlci5oIgogCi0jaW5jbHVkZSAiTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uUmVzdWx0
cy5oPgpAQCAtMTIyLDcgKzEyMSwxMCBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpoYW5kbGVL
ZXlib2FyZEV2ZW50KEdka0V2ZW50S2V5KiBldmVudCwgY29uc3QgU3RyaW5nJiBzaQogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgbV9wYWdlLT5oYW5kbGVLZXlib2FyZEV2ZW50
KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50
KSwgQ29tcG9zaXRpb25SZXN1bHRzKHNpbXBsZVN0cmluZyksIGZha2VkKSk7CisKKyAgICBBU1NF
UlQobV9maWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2ZpbHRlcktleUV2
ZW50Q29tcGxldGlvbkhhbmRsZXIoQ29tcG9zaXRpb25SZXN1bHRzKHNpbXBsZVN0cmluZyksIGZh
a2VkKTsKKyAgICBtX2ZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOwog
fQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpoYW5kbGVLZXlib2FyZEV2ZW50V2l0aENvbXBv
c2l0aW9uUmVzdWx0cyhHZGtFdmVudEtleSogZXZlbnQsIFJlc3VsdHNUb1NlbmQgcmVzdWx0c1Rv
U2VuZCwgRXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uIGZha2VkKQpAQCAtMTMzLDcgKzEzNSwxMCBA
QCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpoYW5kbGVLZXlib2FyZEV2ZW50V2l0aENvbXBvc2l0
aW9uUmVzdWx0cyhHZGtFdmVudEtleSogZQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
Ci0gICAgbV9wYWdlLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
cmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgQ29tcG9zaXRpb25SZXN1bHRzKENv
bXBvc2l0aW9uUmVzdWx0czo6V2lsbFNlbmRDb21wb3NpdGlvblJlc3VsdHNTb29uKSwgZmFrZWQp
KTsKKworICAgIEFTU0VSVChtX2ZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhhbmRsZXIpOworICAg
IG1fZmlsdGVyS2V5RXZlbnRDb21wbGV0aW9uSGFuZGxlcihDb21wb3NpdGlvblJlc3VsdHMoQ29t
cG9zaXRpb25SZXN1bHRzOjpXaWxsU2VuZENvbXBvc2l0aW9uUmVzdWx0c1Nvb24pLCBmYWtlZCk7
CisgICAgbV9maWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKIAogICAg
IGlmIChyZXN1bHRzVG9TZW5kICYgQ29tcG9zaXRpb24gJiYgIW1fY29uZmlybWVkQ29tcG9zaXRp
b24uaXNOdWxsKCkpCiAgICAgICAgIG1fcGFnZS0+Y29uZmlybUNvbXBvc2l0aW9uKG1fY29uZmly
bWVkQ29tcG9zaXRpb24sIC0xLCAwKTsKQEAgLTE0NCwxMyArMTQ5LDE0IEBAIHZvaWQgSW5wdXRN
ZXRob2RGaWx0ZXI6OmhhbmRsZUtleWJvYXJkRXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdk
a0V2ZW50S2V5KiBlCiAgICAgfQogfQogCi12b2lkIElucHV0TWV0aG9kRmlsdGVyOjpmaWx0ZXJL
ZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQpCit2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpmaWx0
ZXJLZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQsIEZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoQVBJX1RFU1RTKQogICAg
IEFTU0VSVChtX3BhZ2UgfHwgbV90ZXN0aW5nTW9kZSk7CiAjZWxzZQogICAgIEFTU0VSVChtX3Bh
Z2UpOwogI2VuZGlmCisgICAgbV9maWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyID0gV1RG
Ojptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAg
ICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5oCmluZGV4IDM3ZGU4
M2UuLjVjNTQzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvSW5w
dXRNZXRob2RGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0
TWV0aG9kRmlsdGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50
S2V5IEdka0V2ZW50S2V5OwogdHlwZWRlZiBzdHJ1Y3QgX0d0a0lNQ29udGV4dCBHdGtJTUNvbnRl
eHQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbXBvc2l0aW9uUmVzdWx0czsKIGNs
YXNzIEludFJlY3Q7CiB9CiAKQEAgLTU0LDcgKzU1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RW5hYmxlZChib29sKTsKICAgICB2b2lkIHNldEN1cnNvclJlY3QoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogCi0gICAgdm9pZCBmaWx0ZXJLZXlFdmVudChHZGtFdmVudEtleSopOworICAgIHVz
aW5nIEZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkNvbXBvc2l0aW9uUmVzdWx0cyYsIElucHV0TWV0aG9kRmlsdGVyOjpF
dmVudEZha2VkRm9yQ29tcG9zaXRpb24pPjsKKyAgICB2b2lkIGZpbHRlcktleUV2ZW50KEdka0V2
ZW50S2V5KiwgRmlsdGVyS2V5RXZlbnRDb21wbGV0aW9uSGFuZGxlciYmID0gbnVsbHB0cik7CiAg
ICAgdm9pZCBub3RpZnlGb2N1c2VkSW4oKTsKICAgICB2b2lkIG5vdGlmeUZvY3VzZWRPdXQoKTsK
ICAgICB2b2lkIG5vdGlmeU1vdXNlQnV0dG9uUHJlc3MoKTsKQEAgLTExMSw2ICsxMTMsOCBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX2NvbmZpcm1lZENvbXBvc2l0aW9uOwogICAgIFN0cmluZyBt
X3ByZWVkaXQ7CiAKKyAgICBGaWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyIG1fZmlsdGVy
S2V5RXZlbnRDb21wbGV0aW9uSGFuZGxlcjsKKwogI2lmIEVOQUJMRShBUElfVEVTVFMpCiAgICAg
Ym9vbCBtX3Rlc3RpbmdNb2RlOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZXZlbnRzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDQz
MjgwNzAuLmQxYjgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAotI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJk
RXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCkBAIC01Mywx
NCArNTIsNiBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudAogICAgIHJldHVybiBXZWJDb3JlOjpz
dGFuZGFyZFVzZXJBZ2VudChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29tbWFuZHNMaXN0KQotewot
ICAgIC8vIFdoZW4gdGhlIGtleWJvYXJkIGV2ZW50IGlzIHN0YXJ0ZWQgaW4gdGhlIFdlYlByb2Nl
c3Mgc2lkZSAoZS5nLiBmcm9tIHRoZSBJbnNwZWN0b3IpCi0gICAgLy8gaXQgd2lsbCBhcnJpdmUg
d2l0aG91dCBhIEdka0V2ZW50IGFzc29jaWF0ZWQsIHNvIHRoZSBrZXlFdmVudFF1ZXVlIHdpbGwg
YmUgZW1wdHkuCi0gICAgaWYgKCFtX2tleUV2ZW50UXVldWUuaXNFbXB0eSgpKQotICAgICAgICBt
X3BhZ2VDbGllbnQuZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChtX2tleUV2ZW50UXVldWUu
Zmlyc3QoKSwgZXZlbnRUeXBlLCBjb21tYW5kc0xpc3QpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YmluZEFjY2Vzc2liaWxpdHlUcmVlKGNvbnN0IFN0cmluZyYgcGx1Z0lEKQogewogICAgIG1f
YWNjZXNzaWJpbGl0eVBsdWdJRCA9IHBsdWdJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGll
bnRHdGsuY3BwCmluZGV4IDc2OWQ3OGMuLjJiMDJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRp
dG9yQ2xpZW50R3RrLmNwcApAQCAtMjEsMTYgKzIxLDEzIEBACiAjaW5jbHVkZSAiV2ViRWRpdG9y
Q2xpZW50LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRl
ICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzS2V5
Ym9hcmRDb2Rlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogCkBAIC0zOCwxNyArMzUsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRFZGl0b3JDb21tYW5kc0ZvcktleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50LCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwZW5kaW5nRWRpdG9yQ29tbWFuZHMpCi17Ci0gICAgQVNTRVJU
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCB8fCBldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKLQotICAgIC8qIEZpcnN0IHRyeSB0
byBpbnRlcnByZXQgdGhlIGNvbW1hbmQgaW4gdGhlIFVJIGFuZCBnZXQgdGhlIGNvbW1hbmRzLgot
ICAgICAgIFVJIG5lZWRzIHRvIHJlY2VpdmUgZXZlbnQgdHlwZSBiZWNhdXNlIG9ubHkga25vd3Mg
Y3VycmVudCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LiovCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChldmVudC0+dHlwZSgpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQ6OlJlcGx5KHBlbmRpbmdF
ZGl0b3JDb21tYW5kcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgo
KSk7Ci19Ci0KIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1h
bmRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGVuZGluZ0VkaXRv
ckNvbW1hbmRzLCBib29sIGFsbG93VGV4dEluc2VydGlvbikKIHsKICAgICBWZWN0b3I8RWRpdG9y
OjpDb21tYW5kPiBjb21tYW5kczsKQEAgLTcwLDIxICs1NiwyMCBAQCBib29sIFdlYkVkaXRvckNs
aWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGNvbnN0IFZl
Y3RvcjxXVAogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50
b05vZGUoKTsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9j
dW1lbnQoKS5mcmFtZSgpOwotICAgIEFTU0VSVChmcmFtZSk7Ci0KICAgICBjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsKICAgICBp
ZiAoIXBsYXRmb3JtRXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoaXMgd2Fz
IGFuIElNRSBldmVudCBkb24ndCBkbyBhbnl0aGluZy4KLSAgICBpZiAocGxhdGZvcm1FdmVudC0+
d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgPT0gVktfUFJPQ0VTU0tFWSkKKyAgICBpZiAocGxhdGZv
cm1FdmVudC0+aGFuZGxlZEJ5SW5wdXRNZXRob2QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBwZW5kaW5nRWRpdG9yQ29tbWFuZHM7Ci0gICAgZ2V0RWRpdG9y
Q29tbWFuZHNGb3JLZXlFdmVudChldmVudCwgcGVuZGluZ0VkaXRvckNvbW1hbmRzKTsKKyAgICBO
b2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIEFTU0VS
VChmcmFtZSk7CisKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBwZW5kaW5nRWRpdG9yQ29tbWFu
ZHMgPSBwbGF0Zm9ybUV2ZW50LT5jb21tYW5kcygpOwogICAgIGlmICghcGVuZGluZ0VkaXRvckNv
bW1hbmRzLmlzRW1wdHkoKSkgewogCiAgICAgICAgIC8vIER1cmluZyBSYXdLZXlEb3duIGV2ZW50
cyBpZiBhbiBlZGl0b3IgY29tbWFuZCB3aWxsIGluc2VydCB0ZXh0LCBkZWZlcgpAQCAtMTI5LDgg
KzExNCw4IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9k
S2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsKLSAgICBpZiAocGxh
dGZvcm1FdmVudCAmJiBwbGF0Zm9ybUV2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSA9PSBW
S19QUk9DRVNTS0VZKQotICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKKyAgICBpZiAo
cGxhdGZvcm1FdmVudCAmJiBwbGF0Zm9ybUV2ZW50LT5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKQor
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAogI2lmIFBMQVRGT1JNKFgx
MSkK
</data>
<flag name="review"
          id="279631"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>