<?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>162918</bug_id>
          
          <creation_ts>2016-10-04 10:29:01 -0700</creation_ts>
          <short_desc>[GStreamer][EME] ClearKey decryption support</short_desc>
          <delta_ts>2016-10-26 01:49:34 -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>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>157314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236235</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 10:29:01 -0700</bug_when>
    <thetext>Add ClearKey encryption subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236237</commentid>
    <comment_count>1</comment_count>
      <attachid>290613</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 10:35:22 -0700</bug_when>
    <thetext>Created attachment 290613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236239</commentid>
    <comment_count>2</comment_count>
      <attachid>290613</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 10:37:05 -0700</bug_when>
    <thetext>Comment on attachment 290613
Patch

Wait until all the patches in 157314 are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236240</commentid>
    <comment_count>3</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 10:37:26 -0700</bug_when>
    <thetext>The style failures are on purpose, because of gobject macro machinery requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236241</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 10:37:29 -0700</bug_when>
    <thetext>Attachment 290613 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.h:41:  webkit_media_clear_key_decrypt_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:66:  webkit_media_clear_key_decrypt_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:96:  webkit_media_clear_key_decrypt_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 3 in 3 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>1237975</commentid>
    <comment_count>5</comment_count>
      <attachid>290613</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-08 09:05:50 -0700</bug_when>
    <thetext>Comment on attachment 290613
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:70
&gt; +    WebKitMediaCommonEncryptionDecryptClass* cencClass = WEBKIT_MEDIA_CENC_DECRYPT_CLASS(klass);
&gt; +    GstElementClass* elementClass = GST_ELEMENT_CLASS(klass);
&gt; +    GObjectClass* gobjectClass = G_OBJECT_CLASS(klass);

You can move this to the latest place before they are used.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:188
&gt; +    WebKitMediaClearKeyDecryptPrivate* priv = WEBKIT_MEDIA_CK_DECRYPT_GET_PRIVATE(WEBKIT_MEDIA_CK_DECRYPT(self));
&gt; +    GstMapInfo map, ivMap, subSamplesMap;
&gt; +    unsigned position = 0;
&gt; +    unsigned sampleIndex = 0;
&gt; +    uint8_t ctr[CLEARKEY_SIZE];
&gt; +    GstByteReader* reader = nullptr;
&gt; +    gboolean bufferMapped, subsamplesBufferMapped;
&gt; +    gcry_error_t error;

Move these to the latest place where they are first used. reader should be GRefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240773</commentid>
    <comment_count>6</comment_count>
      <attachid>291771</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-16 12:12:25 -0700</bug_when>
    <thetext>Created attachment 291771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240779</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-16 12:15:24 -0700</bug_when>
    <thetext>Attachment 291771 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.h:40:  webkit_media_clear_key_decrypt_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:66:  webkit_media_clear_key_decrypt_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:95:  webkit_media_clear_key_decrypt_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 3 in 3 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>1244683</commentid>
    <comment_count>8</comment_count>
      <attachid>292901</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:23:51 -0700</bug_when>
    <thetext>Created attachment 292901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244690</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-26 01:30:19 -0700</bug_when>
    <thetext>Attachment 292901 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.h:40:  webkit_media_clear_key_decrypt_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:66:  webkit_media_clear_key_decrypt_class_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:95:  webkit_media_clear_key_decrypt_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 3 in 3 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>1244724</commentid>
    <comment_count>10</comment_count>
      <attachid>292901</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:49:26 -0700</bug_when>
    <thetext>Comment on attachment 292901
Patch

Clearing flags on attachment: 292901

Committed r207888: &lt;http://trac.webkit.org/changeset/207888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244725</commentid>
    <comment_count>11</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:49:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290613</attachid>
            <date>2016-10-04 10:35:22 -0700</date>
            <delta_ts>2016-10-16 12:12:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162918-20161004173211.patch</filename>
            <type>text/plain</type>
            <size>16087</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE5MmE3NDllZDYxYWI0
OTdmNjg3MjI0OTQ0M2ViYTlhZTNmOGI5Yi4uZWIxYTRlYjNhNmE4NjQ5Zjg4MDg0ODIxZDZkMGEz
YjFkNjQzOGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDbGVhcktleSBkZWNyeXB0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYXV0aG9yZWQg
YnkgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVh
bWVyLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfaW5p
dCk6CisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUpOgorICAg
ICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlcXVlc3REZWNyeXB0aW9uS2V5KToK
KyAgICAgICAgKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25zZSk6
CisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOgorICAg
ICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQpOgorICAgICAgICAod2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBoZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFt
ZXIuaDogQWRkZWQuCisKKzIwMTYtMTAtMDQgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVv
Y2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtFTUVdIEJhc2UgY2xhc3Mg
Zm9yIGRlY3J5cHRpb24gc3VwcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyOTE1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9X
ZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkwOTAxMTZk
MTY2ZThhZWViNDlhZTUyZjc5MTc2OGViMGRkMzdkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlE
ZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsMjczIEBACisvKiBHU3RyZWFtZXIgQ2xl
YXJLZXkgY29tbW9uIGVuY3J5cHRpb24gZGVjcnlwdG9yCisgKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IE1ldHJvbG9naWNhbAorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMzNSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJL
aXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQV9WMikgJiYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIu
aCIKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RieXRlcmVhZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworI2RlZmluZSBDTEVBUktFWV9TSVpFIDE2
CisKKyNkZWZpbmUgV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUob2JqKSAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9NRURJQV9DS19ERUNS
WVBULCBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUpKQorc3RydWN0IF9XZWJLaXRN
ZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUgeworICAgIEdSZWZQdHI8R3N0QnVmZmVyPiBrZXk7
CisgICAgZ2NyeV9jaXBoZXJfaGRfdCBoYW5kbGU7Cit9OworCitzdGF0aWMgdm9pZCB3ZWJLaXRN
ZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUoR09iamVjdCopOworc3RhdGljIHZvaWQgd2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlcXVlc3REZWNyeXB0aW9uS2V5KFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlciopOworc3RhdGljIGdib29s
ZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25zZShXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RFdmVudCopOworc3RhdGljIGdi
b29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JTZXR1cENpcGhlcihXZWJLaXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Kik7CitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFD
bGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dCosIEdzdEJ1ZmZlciogaXYsIEdzdEJ1ZmZlciogc2FtcGxlLCB1bnNpZ25lZCBzdWJTYW1wbGVz
Q291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7CitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNs
ZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0Kik7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X21lZGlhX2NsZWFy
X2tleV9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdl
YmtpdF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeQorCisjZGVmaW5lIENM
RUFSX0tFWV9QUk9URUNUSU9OX1NZU1RFTV9JRCAiNTgxNDdlYzgtMDQyMy00NjU5LTkyZTYtZjUy
YzVjZThjM2NjIgorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBsYXRlID0g
R1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBH
U1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMoImFwcGxpY2F0aW9uL3gtY2VuYywg
b3JpZ2luYWwtbWVkaWEtdHlwZT0oc3RyaW5nKXZpZGVvL3gtaDI2NCwgcHJvdGVjdGlvbi1zeXN0
ZW09KHN0cmluZykiIENMRUFSX0tFWV9QUk9URUNUSU9OX1NZU1RFTV9JRCAiOyAiCisgICAgImFw
cGxpY2F0aW9uL3gtY2VuYywgb3JpZ2luYWwtbWVkaWEtdHlwZT0oc3RyaW5nKWF1ZGlvL21wZWcs
IHByb3RlY3Rpb24tc3lzdGVtPShzdHJpbmcpIiBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1f
SUQpKTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY1RlbXBsYXRlID0gR1NUX1NU
QVRJQ19QQURfVEVNUExBVEUoInNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9B
TFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTKCJ2aWRlby94LWgyNjQ7IGF1ZGlvL21wZWciKSk7
CisKKyNkZWZpbmUgd2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X3BhcmVudF9jbGFzcyBw
YXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEUoV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHQsIHdl
YmtpdF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdCwgV0VCS0lUX1RZUEVfTUVESUFfQ0VOQ19ERUNS
WVBUKTsKKworc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2NsYXNz
X2luaXQoV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcyoga2xhc3MpCit7CisgICAgV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdENsYXNzKiBjZW5jQ2xhc3MgPSBXRUJLSVRf
TUVESUFfQ0VOQ19ERUNSWVBUX0NMQVNTKGtsYXNzKTsKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVs
ZW1lbnRDbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKyAgICBHT2JqZWN0Q2xhc3Mq
IGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIGdvYmplY3RDbGFz
cy0+ZmluYWxpemUgPSB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemU7CisKKyAg
ICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRDbGFzcywgZ3N0X3N0
YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzaW5rVGVtcGxhdGUpKTsKKyAgICBnc3RfZWxlbWVudF9j
bGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRDbGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxh
dGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOworCisgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRp
Y19tZXRhZGF0YShlbGVtZW50Q2xhc3MsCisgICAgICAgICJEZWNyeXB0IGNvbnRlbnQgZW5jcnlw
dGVkIHVzaW5nIElTT0JNRkYgQ2xlYXJLZXkgQ29tbW9uIEVuY3J5cHRpb24iLAorICAgICAgICBH
U1RfRUxFTUVOVF9GQUNUT1JZX0tMQVNTX0RFQ1JZUFRPUiwKKyAgICAgICAgIkRlY3J5cHRzIG1l
ZGlhIHRoYXQgaGFzIGJlZW4gZW5jcnlwdGVkIHVzaW5nIElTT0JNRkYgQ2xlYXJLZXkgQ29tbW9u
IEVuY3J5cHRpb24uIiwKKyAgICAgICAgIlBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5j
b20+Iik7CisKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbWVkaWFfY2xlYXJf
a2V5X2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksCisgICAgICAgICJ3ZWJraXRjbGVhcmtleSIsIDAs
ICJDbGVhcktleSBkZWNyeXB0b3IiKTsKKworICAgIGNlbmNDbGFzcy0+cHJvdGVjdGlvblN5c3Rl
bUlkID0gQ0xFQVJfS0VZX1BST1RFQ1RJT05fU1lTVEVNX0lEOworICAgIGNlbmNDbGFzcy0+cmVx
dWVzdERlY3J5cHRpb25LZXkgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5
RGVjcnlwdG9yUmVxdWVzdERlY3J5cHRpb25LZXkpOworICAgIGNlbmNDbGFzcy0+aGFuZGxlS2V5
UmVzcG9uc2UgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9y
SGFuZGxlS2V5UmVzcG9uc2UpOworICAgIGNlbmNDbGFzcy0+c2V0dXBDaXBoZXIgPSBHU1RfREVC
VUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOworICAg
IGNlbmNDbGFzcy0+ZGVjcnlwdCA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0b3JEZWNyeXB0KTsKKyAgICBjZW5jQ2xhc3MtPnJlbGVhc2VDaXBoZXIgPSBHU1Rf
REVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcik7
CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRNZWRp
YUNsZWFyS2V5RGVjcnlwdFByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X21lZGlh
X2NsZWFyX2tleV9kZWNyeXB0X2luaXQoV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHQqIHNlbGYp
Cit7CisgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lU
X01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7CisKKyAgICBpZiAoIWdjcnlfY2hl
Y2tfdmVyc2lvbihHQ1JZUFRfVkVSU0lPTikpCisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2Vs
ZiwgIkxpYmdjcnlwdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZSIpOworCisgICAgLy8gQWxsb2NhdGUg
YSBwb29sIG9mIDE2ayBzZWN1cmUgbWVtb3J5LiBUaGlzIG1ha2UgdGhlIHNlY3VyZSBtZW1vcnkK
KyAgICAvLyBhdmFpbGFibGUgYW5kIGFsc28gZHJvcHMgcHJpdmlsZWdlcyB3aGVyZSBuZWVkZWQu
CisgICAgZ2NyeV9jb250cm9sKEdDUllDVExfSU5JVF9TRUNNRU0sIDE2Mzg0LCAwKTsKKworICAg
IGdjcnlfY29udHJvbChHQ1JZQ1RMX0lOSVRJQUxJWkFUSU9OX0ZJTklTSEVELCAwKTsKKworICAg
IHNlbGYtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0TWVkaWFDbGVhcktleURl
Y3J5cHRQcml2YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNy
eXB0b3JGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0TWVkaWFDbGVhcktl
eURlY3J5cHQqIHNlbGYgPSBXRUJLSVRfTUVESUFfQ0tfREVDUllQVChvYmplY3QpOworICAgIFdl
YktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZSogcHJpdiA9IHNlbGYtPnByaXY7CisKKyAg
ICBwcml2LT5+V2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKCk7CisKKyAgICBHU1Rf
Q0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZXF1ZXN0RGVjcnlwdGlvbktl
eShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RCdWZmZXIqIGlu
aXREYXRhQnVmZmVyKQoreworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVO
VChzZWxmKSwKKyAgICAgICAgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVChzZWxm
KSwKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3KCJkcm0ta2V5LW5lZWRlZCIsICJkYXRh
IiwgR1NUX1RZUEVfQlVGRkVSLCBpbml0RGF0YUJ1ZmZlciwKKyAgICAgICAgICAgICAgICAia2V5
LXN5c3RlbS1pZCIsIEdfVFlQRV9TVFJJTkcsICJvcmcudzMuY2xlYXJrZXkiLCBudWxscHRyKSkp
OworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckhhbmRs
ZUtleVJlc3BvbnNlKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdz
dEV2ZW50KiBldmVudCkKK3sKKyAgICBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUq
IHByaXYgPSBXRUJLSVRfTUVESUFfQ0tfREVDUllQVF9HRVRfUFJJVkFURShXRUJLSVRfTUVESUFf
Q0tfREVDUllQVChzZWxmKSk7CisgICAgY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
c3RfZXZlbnRfZ2V0X3N0cnVjdHVyZShldmVudCk7CisKKyAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVf
aGFzX25hbWUoc3RydWN0dXJlLCAiZHJtLWNpcGhlciIpKQorICAgICAgICByZXR1cm4gRkFMU0U7
CisKKyAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoc3Ry
dWN0dXJlLCAia2V5Iik7CisgICAgcHJpdi0+a2V5LmNsZWFyKCk7CisgICAgcHJpdi0+a2V5ID0g
YWRvcHRHUmVmKGdzdF9idWZmZXJfY29weShnc3RfdmFsdWVfZ2V0X2J1ZmZlcih2YWx1ZSkpKTsK
KyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0b3JTZXR1cENpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
KiBzZWxmKQoreworICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKFdFQktJVF9NRURJQV9DS19ERUNS
WVBUKHNlbGYpKTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3I7CisKKyAgICBBU1NFUlQocHJpdi0+
a2V5KTsKKyAgICBpZiAoIXByaXYtPmtleSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNl
bGYsICJEZWNyeXB0aW9uIGtleSBub3QgcHJvdmlkZWQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmKHByaXYtPmhhbmRsZSks
IEdDUllfQ0lQSEVSX0FFUzEyOCwgR0NSWV9DSVBIRVJfTU9ERV9DVFIsIEdDUllfQ0lQSEVSX1NF
Q1VSRSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwg
IkZhaWxlZCB0byBjcmVhdGUgQUVTIDEyOCBDVFIgY2lwaGVyIGhhbmRsZTogJXMiLCBncGdfc3Ry
ZXJyb3IoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdzdE1h
cEluZm8ga2V5TWFwOworICAgIGlmICghZ3N0X2J1ZmZlcl9tYXAocHJpdi0+a2V5LmdldCgpLCAm
a2V5TWFwLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwg
IkZhaWxlZCB0byBtYXAgZGVjcnlwdGlvbiBrZXkiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIEFTU0VSVChrZXlNYXAuc2l6ZSA9PSBDTEVBUktFWV9TSVpFKTsKKyAgICBl
cnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShwcml2LT5oYW5kbGUsIGtleU1hcC5kYXRhLCBrZXlN
YXAuc2l6ZSk7CisgICAgZ3N0X2J1ZmZlcl91bm1hcChwcml2LT5rZXkuZ2V0KCksICZrZXlNYXAp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJnY3J5
X2NpcGhlcl9zZXRrZXkgZmFpbGVkOiAlcyIsIGdwZ19zdHJlcnJvcihlcnJvcikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRGVjcnlwdChXZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RCdWZmZXIqIGl2QnVmZmVyLCBHc3RCdWZm
ZXIqIGJ1ZmZlciwgdW5zaWduZWQgc3ViU2FtcGxlQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxl
c0J1ZmZlcikKK3sKKyAgICBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHByaXYg
PSBXRUJLSVRfTUVESUFfQ0tfREVDUllQVF9HRVRfUFJJVkFURShXRUJLSVRfTUVESUFfQ0tfREVD
UllQVChzZWxmKSk7CisgICAgR3N0TWFwSW5mbyBtYXAsIGl2TWFwLCBzdWJTYW1wbGVzTWFwOwor
ICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICB1bnNpZ25lZCBzYW1wbGVJbmRleCA9IDA7
CisgICAgdWludDhfdCBjdHJbQ0xFQVJLRVlfU0laRV07CisgICAgR3N0Qnl0ZVJlYWRlciogcmVh
ZGVyID0gbnVsbHB0cjsKKyAgICBnYm9vbGVhbiBidWZmZXJNYXBwZWQsIHN1YnNhbXBsZXNCdWZm
ZXJNYXBwZWQ7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yOworCisgICAgaWYgKCFnc3RfYnVmZmVy
X21hcChpdkJ1ZmZlciwgJml2TWFwLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgICAgIEdTVF9FUlJP
Ul9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBtYXAgSVYiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChpdk1hcC5zaXplID09IDgpIHsKKyAgICAgICAgbWVtc2V0KGN0
ciArIDgsIDAsIDgpOworICAgICAgICBtZW1jcHkoY3RyLCBpdk1hcC5kYXRhLCA4KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBBU1NFUlQoaXZNYXAuc2l6ZSA9PSBDTEVBUktFWV9TSVpFKTsKKyAg
ICAgICAgbWVtY3B5KGN0ciwgaXZNYXAuZGF0YSwgQ0xFQVJLRVlfU0laRSk7CisgICAgfQorICAg
IGdzdF9idWZmZXJfdW5tYXAoaXZCdWZmZXIsICZpdk1hcCk7CisgICAgZXJyb3IgPSBnY3J5X2Np
cGhlcl9zZXRjdHIocHJpdi0+aGFuZGxlLCBjdHIsIENMRUFSS0VZX1NJWkUpOworICAgIGlmIChl
cnJvcikgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJnY3J5X2NpcGhlcl9zZXRj
dHIgZmFpbGVkOiAlcyIsIGdwZ19zdHJlcnJvcihlcnJvcikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgYnVmZmVyTWFwcGVkID0gZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCAm
bWFwLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEV1JJVEUpKTsKKyAgICBp
ZiAoIWJ1ZmZlck1hcHBlZCkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWls
ZWQgdG8gbWFwIGJ1ZmZlciIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3Vic2FtcGxlc0J1ZmZlck1hcHBlZCA9IGdzdF9idWZmZXJfbWFwKHN1YlNhbXBsZXNCdWZmZXIs
ICZzdWJTYW1wbGVzTWFwLCBHU1RfTUFQX1JFQUQpOworICAgIGlmICghc3Vic2FtcGxlc0J1ZmZl
ck1hcHBlZCkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gbWFw
IHN1YnNhbXBsZSBidWZmZXIiKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsICZt
YXApOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmVhZGVyID0gZ3N0X2J5
dGVfcmVhZGVyX25ldyhzdWJTYW1wbGVzTWFwLmRhdGEsIHN1YlNhbXBsZXNNYXAuc2l6ZSk7CisK
KyAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJwb3NpdGlvbjogJWQsIHNpemU6ICVkIiwgcG9z
aXRpb24sIG1hcC5zaXplKTsKKyAgICB3aGlsZSAocG9zaXRpb24gPCBtYXAuc2l6ZSkgeworICAg
ICAgICBndWludDE2IG5CeXRlc0NsZWFyID0gMDsKKyAgICAgICAgZ3VpbnQzMiBuQnl0ZXNFbmNy
eXB0ZWQgPSAwOworCisgICAgICAgIGlmIChzYW1wbGVJbmRleCA8IHN1YlNhbXBsZUNvdW50KSB7
CisgICAgICAgICAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDE2X2JlKHJlYWRlciwg
Jm5CeXRlc0NsZWFyKQorICAgICAgICAgICAgICAgIHx8ICFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3Vp
bnQzMl9iZShyZWFkZXIsICZuQnl0ZXNFbmNyeXB0ZWQpKSB7CisgICAgICAgICAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChzZWxmLCAidW5zdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgICAgICBnc3Rf
Ynl0ZV9yZWFkZXJfZnJlZShyZWFkZXIpOworICAgICAgICAgICAgICAgIGdzdF9idWZmZXJfdW5t
YXAoYnVmZmVyLCAmbWFwKTsKKyAgICAgICAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwKHN1YlNh
bXBsZXNCdWZmZXIsICZzdWJTYW1wbGVzTWFwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNhbXBsZUluZGV4Kys7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBuQnl0ZXNDbGVhciA9IDA7CisgICAgICAgICAgICBuQnl0
ZXNFbmNyeXB0ZWQgPSBtYXAuc2l6ZSAtIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAg
R1NUX1RSQUNFX09CSkVDVChzZWxmLCAiJWQgYnl0ZXMgY2xlYXIgKHRvZG89JWQpIiwgbkJ5dGVz
Q2xlYXIsIG1hcC5zaXplIC0gcG9zaXRpb24pOworICAgICAgICBwb3NpdGlvbiArPSBuQnl0ZXND
bGVhcjsKKyAgICAgICAgaWYgKG5CeXRlc0VuY3J5cHRlZCkgeworICAgICAgICAgICAgR1NUX1RS
QUNFX09CSkVDVChzZWxmLCAiJWQgYnl0ZXMgZW5jcnlwdGVkICh0b2RvPSVkKSIsIG5CeXRlc0Vu
Y3J5cHRlZCwgbWFwLnNpemUgLSBwb3NpdGlvbik7CisgICAgICAgICAgICBlcnJvciA9IGdjcnlf
Y2lwaGVyX2RlY3J5cHQocHJpdi0+aGFuZGxlLCBtYXAuZGF0YSArIHBvc2l0aW9uLCBuQnl0ZXNF
bmNyeXB0ZWQsIDAsIDApOworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZGVjcnlwdGlvbiBmYWlsZWQ6ICVzIiwgZ3BnX3N0
cmVycm9yKGVycm9yKSk7CisgICAgICAgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUocmVh
ZGVyKTsKKyAgICAgICAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7Cisg
ICAgICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2Ft
cGxlc01hcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcG9zaXRpb24gKz0gbkJ5dGVzRW5jcnlwdGVkOworICAgICAgICB9CisgICAg
fQorCisgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUocmVhZGVyKTsKKyAgICBnc3RfYnVmZmVyX3Vu
bWFwKGJ1ZmZlciwgJm1hcCk7CisgICAgZ3N0X2J1ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVy
LCAmc3ViU2FtcGxlc01hcCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZWxlYXNlQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5
cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUoV0VC
S0lUX01FRElBX0NLX0RFQ1JZUFQoc2VsZikpOworICAgIGdjcnlfY2lwaGVyX2Nsb3NlKHByaXYt
PmhhbmRsZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBV
U0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktl
eURlY3J5cHRvckdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiZDAxYTQ1MDIwZjAxMWNlYzE1Yjk1
ZmI1MGViZmNlZTMyYTFiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVh
bWVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyogR1N0cmVhbWVyIENsZWFyS2V5IGNvbW1vbiBlbmNy
eXB0aW9uIGRlY3J5cHRvcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNZXRyb2xvZ2ljYWwK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBXZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lcl9oCisjZGVmaW5lIFdl
YktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyX2gKKworI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpICYmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJXZWJLaXRDb21tb25FbmNy
eXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9NRURJQV9DS19ERUNSWVBUICAgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJf
a2V5X2RlY3J5cHRfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQo
b2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9U
WVBFX01FRElBX0NLX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0KSkKKyNkZWZp
bmUgV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfQ0xBU1Moa2xhc3MpICAoR19UWVBFX0NIRUNLX0NM
QVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfTUVESUFfQ0tfREVDUllQVCwgV2ViS2l0TWVk
aWFDbGVhcktleURlY3J5cHRDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19NRURJQV9DS19ERUNS
WVBUKG9iaikgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9NRURJQV9DS19ERUNSWVBUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX01FRElBX0NLX0RFQ1JZ
UFRfQ0xBU1Mob2JqKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZ
UEVfTUVESUFfQ0tfREVDUllQVCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRNZWRpYUNsZWFy
S2V5RGVjcnlwdCAgICAgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHQ7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcyAgIFdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5
cHRQcml2YXRlIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZTsKKworR1R5cGUgd2Vi
a2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2dldF90eXBlKHZvaWQpOworCitzdHJ1Y3QgX1dl
YktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0IHsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRp
b25EZWNyeXB0IHBhcmVudDsKKworICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0
ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcyB7
CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdENsYXNzIHBhcmVudENsYXNz
OworfTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpICYmIFVTRShHU1RSRUFNRVIpCisKKyNlbmRpZiAvLyBXZWJLaXRDbGVhcktleURlY3J5cHRv
ckdTdHJlYW1lcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291771</attachid>
            <date>2016-10-16 12:12:25 -0700</date>
            <delta_ts>2016-10-26 01:23:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162918-20161016190853.patch</filename>
            <type>text/plain</type>
            <size>15947</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdmYzhjNTllNjFkNWRi
M2MwZWU5OGMxOGYyOTdlNTFhY2YwMjU3OS4uMmVhNzlmMGRmNDQzNjgwODQ0ZGMwZDA2YjE2Zjlh
NDljN2ZiMmE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDbGVhcktleSBkZWNyeXB0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYXV0aG9yZWQg
YnkgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVh
bWVyLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfaW5p
dCk6CisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUpOgorICAg
ICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlcXVlc3REZWNyeXB0aW9uS2V5KToK
KyAgICAgICAgKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25zZSk6
CisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOgorICAg
ICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQpOgorICAgICAgICAod2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBoZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFt
ZXIuaDogQWRkZWQuCisKKzIwMTYtMTAtMDQgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVv
Y2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtFTUVdIEJhc2UgY2xhc3Mg
Zm9yIGRlY3J5cHRpb24gc3VwcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyOTE1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9X
ZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIyMGRhMmI1
OWViZTMyZTkyMmM3ZWVhMGFiYjliOWZkMjA5MjBjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlE
ZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisvKiBHU3RyZWFtZXIgQ2xl
YXJLZXkgY29tbW9uIGVuY3J5cHRpb24gZGVjcnlwdG9yCisgKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IE1ldHJvbG9naWNhbAorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMzNSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJL
aXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJHUmVmUHRyR1N0cmVh
bWVyLmgiCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXJl
YWRlci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKyNkZWZpbmUgQ0xFQVJLRVlfU0la
RSAxNgorCisjZGVmaW5lIFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKG9iaikg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfTUVESUFfQ0tf
REVDUllQVCwgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKSkKK3N0cnVjdCBfV2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlIHsKKyAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4g
a2V5OworICAgIGdjcnlfY2lwaGVyX2hkX3QgaGFuZGxlOworfTsKKworc3RhdGljIHZvaWQgd2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmFsaXplKEdPYmplY3QqKTsKK3N0YXRpYyB2b2lk
IHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZXF1ZXN0RGVjcnlwdGlvbktleShXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RCdWZmZXIqKTsKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9ySGFuZGxlS2V5UmVzcG9uc2UoV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0RXZlbnQqKTsKK3N0YXRp
YyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIoV2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCopOworc3RhdGljIGdib29sZWFuIHdlYktpdE1l
ZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHQqLCBHc3RCdWZmZXIqIGl2LCBHc3RCdWZmZXIqIHNhbXBsZSwgdW5zaWduZWQgc3ViU2Ft
cGxlc0NvdW50LCBHc3RCdWZmZXIqIHN1YlNhbXBsZXMpOworc3RhdGljIHZvaWQgd2ViS2l0TWVk
aWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBoZXIoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdCopOworCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtpdF9tZWRpYV9j
bGVhcl9rZXlfZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVM
VCB3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkKKworI2RlZmlu
ZSBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1fSUQgIjU4MTQ3ZWM4LTA0MjMtNDY1OS05MmU2
LWY1MmM1Y2U4YzNjYyIKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtUZW1wbGF0
ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisg
ICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTKCJhcHBsaWNhdGlvbi94LWNl
bmMsIG9yaWdpbmFsLW1lZGlhLXR5cGU9KHN0cmluZyl2aWRlby94LWgyNjQsIHByb3RlY3Rpb24t
c3lzdGVtPShzdHJpbmcpIiBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1fSUQgIjsgIgorICAg
ICJhcHBsaWNhdGlvbi94LWNlbmMsIG9yaWdpbmFsLW1lZGlhLXR5cGU9KHN0cmluZylhdWRpby9t
cGVnLCBwcm90ZWN0aW9uLXN5c3RlbT0oc3RyaW5nKSIgQ0xFQVJfS0VZX1BST1RFQ1RJT05fU1lT
VEVNX0lEKSk7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1wbGF0ZSA9IEdT
VF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9Q
QURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUygidmlkZW8veC1oMjY0OyBhdWRpby9tcGVn
IikpOworCisjZGVmaW5lIHdlYmtpdF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9wYXJlbnRfY2xh
c3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFKFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0
LCB3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHQsIFdFQktJVF9UWVBFX01FRElBX0NFTkNf
REVDUllQVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9j
bGFzc19pbml0KFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0Q2xhc3MqIGtsYXNzKQoreworICAg
IEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAg
IGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmlu
YWxpemU7CisKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcyA9IEdTVF9FTEVNRU5U
X0NMQVNTKGtsYXNzKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVs
ZW1lbnRDbGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzaW5rVGVtcGxhdGUpKTsK
KyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRDbGFzcywgZ3N0
X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOworCisgICAgZ3N0X2VsZW1l
bnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YShlbGVtZW50Q2xhc3MsCisgICAgICAgICJEZWNy
eXB0IGNvbnRlbnQgZW5jcnlwdGVkIHVzaW5nIElTT0JNRkYgQ2xlYXJLZXkgQ29tbW9uIEVuY3J5
cHRpb24iLAorICAgICAgICBHU1RfRUxFTUVOVF9GQUNUT1JZX0tMQVNTX0RFQ1JZUFRPUiwKKyAg
ICAgICAgIkRlY3J5cHRzIG1lZGlhIHRoYXQgaGFzIGJlZW4gZW5jcnlwdGVkIHVzaW5nIElTT0JN
RkYgQ2xlYXJLZXkgQ29tbW9uIEVuY3J5cHRpb24uIiwKKyAgICAgICAgIlBoaWxpcHBlIE5vcm1h
bmQgPHBoaWxuQGlnYWxpYS5jb20+Iik7CisKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3
ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksCisgICAgICAgICJ3
ZWJraXRjbGVhcmtleSIsIDAsICJDbGVhcktleSBkZWNyeXB0b3IiKTsKKworICAgIFdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyogY2VuY0NsYXNzID0gV0VCS0lUX01FRElB
X0NFTkNfREVDUllQVF9DTEFTUyhrbGFzcyk7CisgICAgY2VuY0NsYXNzLT5wcm90ZWN0aW9uU3lz
dGVtSWQgPSBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1fSUQ7CisgICAgY2VuY0NsYXNzLT5y
ZXF1ZXN0RGVjcnlwdGlvbktleSA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0b3JSZXF1ZXN0RGVjcnlwdGlvbktleSk7CisgICAgY2VuY0NsYXNzLT5oYW5kbGVL
ZXlSZXNwb25zZSA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0
b3JIYW5kbGVLZXlSZXNwb25zZSk7CisgICAgY2VuY0NsYXNzLT5zZXR1cENpcGhlciA9IEdTVF9E
RUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JTZXR1cENpcGhlcik7Cisg
ICAgY2VuY0NsYXNzLT5kZWNyeXB0ID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0TWVkaWFDbGVh
cktleURlY3J5cHRvckRlY3J5cHQpOworICAgIGNlbmNDbGFzcy0+cmVsZWFzZUNpcGhlciA9IEdT
VF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZWxlYXNlQ2lwaGVy
KTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdE1l
ZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfbWVk
aWFfY2xlYXJfa2V5X2RlY3J5cHRfaW5pdChXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdCogc2Vs
ZikKK3sKKyAgICBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfTUVESUFfQ0tfREVDUllQVF9HRVRfUFJJVkFURShzZWxmKTsKKworICAgIGlmICghZ2NyeV9j
aGVja192ZXJzaW9uKEdDUllQVF9WRVJTSU9OKSkKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChz
ZWxmLCAiTGliZ2NyeXB0IGZhaWxlZCB0byBpbml0aWFsaXplIik7CisKKyAgICAvLyBBbGxvY2F0
ZSBhIHBvb2wgb2YgMTZrIHNlY3VyZSBtZW1vcnkuIFRoaXMgbWFrZSB0aGUgc2VjdXJlIG1lbW9y
eQorICAgIC8vIGF2YWlsYWJsZSBhbmQgYWxzbyBkcm9wcyBwcml2aWxlZ2VzIHdoZXJlIG5lZWRl
ZC4KKyAgICBnY3J5X2NvbnRyb2woR0NSWUNUTF9JTklUX1NFQ01FTSwgMTYzODQsIDApOworCisg
ICAgZ2NyeV9jb250cm9sKEdDUllDVExfSU5JVElBTElaQVRJT05fRklOSVNIRUQsIDApOworCisg
ICAgc2VsZi0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJLaXRNZWRpYUNsZWFyS2V5
RGVjcnlwdFByaXZhdGUoKTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFDbGVhcktleURl
Y3J5cHRvckZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRNZWRpYUNsZWFy
S2V5RGVjcnlwdCogc2VsZiA9IFdFQktJVF9NRURJQV9DS19ERUNSWVBUKG9iamVjdCk7CisgICAg
V2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gc2VsZi0+cHJpdjsKKwor
ICAgIHByaXYtPn5XZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUoKTsKKworICAgIEdT
VF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsIChvYmplY3QpKTsKK30KKwor
c3RhdGljIHZvaWQgd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlcXVlc3REZWNyeXB0aW9u
S2V5KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlciog
aW5pdERhdGFCdWZmZXIpCit7CisgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVN
RU5UKHNlbGYpLAorICAgICAgICBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUKHNl
bGYpLAorICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoImRybS1rZXktbmVlZGVkIiwgImRh
dGEiLCBHU1RfVFlQRV9CVUZGRVIsIGluaXREYXRhQnVmZmVyLAorICAgICAgICAgICAgICAgICJr
ZXktc3lzdGVtLWlkIiwgR19UWVBFX1NUUklORywgIm9yZy53My5jbGVhcmtleSIsIG51bGxwdHIp
KSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9ySGFu
ZGxlS2V5UmVzcG9uc2UoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwg
R3N0RXZlbnQqIGV2ZW50KQoreworICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKFdFQktJVF9NRURJ
QV9DS19ERUNSWVBUKHNlbGYpKTsKKyAgICBjb25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdzdF9ldmVudF9nZXRfc3RydWN0dXJlKGV2ZW50KTsKKworICAgIGlmICghZ3N0X3N0cnVjdHVy
ZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0tY2lwaGVyIikpCisgICAgICAgIHJldHVybiBGQUxT
RTsKKworICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShz
dHJ1Y3R1cmUsICJrZXkiKTsKKyAgICBwcml2LT5rZXkuY2xlYXIoKTsKKyAgICBwcml2LT5rZXkg
PSBhZG9wdEdSZWYoZ3N0X2J1ZmZlcl9jb3B5KGdzdF92YWx1ZV9nZXRfYnVmZmVyKHZhbHVlKSkp
OworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVh
cktleURlY3J5cHRvclNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2
ID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUoV0VCS0lUX01FRElBX0NLX0RF
Q1JZUFQoc2VsZikpOworICAgIGdjcnlfZXJyb3JfdCBlcnJvcjsKKworICAgIEFTU0VSVChwcml2
LT5rZXkpOworICAgIGlmICghcHJpdi0+a2V5KSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qo
c2VsZiwgIkRlY3J5cHRpb24ga2V5IG5vdCBwcm92aWRlZCIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCYocHJpdi0+aGFuZGxl
KSwgR0NSWV9DSVBIRVJfQUVTMTI4LCBHQ1JZX0NJUEhFUl9NT0RFX0NUUiwgR0NSWV9DSVBIRVJf
U0VDVVJFKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxm
LCAiRmFpbGVkIHRvIGNyZWF0ZSBBRVMgMTI4IENUUiBjaXBoZXIgaGFuZGxlOiAlcyIsIGdwZ19z
dHJlcnJvcihlcnJvcikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgR3N0
TWFwSW5mbyBrZXlNYXA7CisgICAgaWYgKCFnc3RfYnVmZmVyX21hcChwcml2LT5rZXkuZ2V0KCks
ICZrZXlNYXAsIEdTVF9NQVBfUkVBRCkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxm
LCAiRmFpbGVkIHRvIG1hcCBkZWNyeXB0aW9uIGtleSIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgQVNTRVJUKGtleU1hcC5zaXplID09IENMRUFSS0VZX1NJWkUpOworICAg
IGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KHByaXYtPmhhbmRsZSwga2V5TWFwLmRhdGEsIGtl
eU1hcC5zaXplKTsKKyAgICBnc3RfYnVmZmVyX3VubWFwKHByaXYtPmtleS5nZXQoKSwgJmtleU1h
cCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgImdj
cnlfY2lwaGVyX3NldGtleSBmYWlsZWQ6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9yKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlciogaXZCdWZmZXIsIEdzdEJ1
ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBzdWJTYW1wbGVDb3VudCwgR3N0QnVmZmVyKiBzdWJTYW1w
bGVzQnVmZmVyKQoreworICAgIEdzdE1hcEluZm8gaXZNYXA7CisgICAgaWYgKCFnc3RfYnVmZmVy
X21hcChpdkJ1ZmZlciwgJml2TWFwLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgICAgIEdTVF9FUlJP
Ul9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBtYXAgSVYiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHVpbnQ4X3QgY3RyW0NMRUFSS0VZX1NJWkVdOworICAgIGlmIChpdk1h
cC5zaXplID09IDgpIHsKKyAgICAgICAgbWVtc2V0KGN0ciArIDgsIDAsIDgpOworICAgICAgICBt
ZW1jcHkoY3RyLCBpdk1hcC5kYXRhLCA4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
aXZNYXAuc2l6ZSA9PSBDTEVBUktFWV9TSVpFKTsKKyAgICAgICAgbWVtY3B5KGN0ciwgaXZNYXAu
ZGF0YSwgQ0xFQVJLRVlfU0laRSk7CisgICAgfQorICAgIGdzdF9idWZmZXJfdW5tYXAoaXZCdWZm
ZXIsICZpdk1hcCk7CisKKyAgICBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfTUVESUFfQ0tfREVDUllQVF9HRVRfUFJJVkFURShXRUJLSVRfTUVESUFfQ0tf
REVDUllQVChzZWxmKSk7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0
Y3RyKHByaXYtPmhhbmRsZSwgY3RyLCBDTEVBUktFWV9TSVpFKTsKKyAgICBpZiAoZXJyb3IpIHsK
KyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZ2NyeV9jaXBoZXJfc2V0Y3RyIGZhaWxl
ZDogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIEdzdE1hcEluZm8gbWFwOworICAgIGdib29sZWFuIGJ1ZmZlck1hcHBlZCA9IGdz
dF9idWZmZXJfbWFwKGJ1ZmZlciwgJm1hcCwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxhZ3M+KEdTVF9N
QVBfUkVBRFdSSVRFKSk7CisgICAgaWYgKCFidWZmZXJNYXBwZWQpIHsKKyAgICAgICAgR1NUX0VS
Uk9SX09CSkVDVChzZWxmLCAiRmFpbGVkIHRvIG1hcCBidWZmZXIiKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIEdzdE1hcEluZm8gc3ViU2FtcGxlc01hcDsKKyAgICBnYm9v
bGVhbiBzdWJzYW1wbGVzQnVmZmVyTWFwcGVkID0gZ3N0X2J1ZmZlcl9tYXAoc3ViU2FtcGxlc0J1
ZmZlciwgJnN1YlNhbXBsZXNNYXAsIEdTVF9NQVBfUkVBRCk7CisgICAgaWYgKCFzdWJzYW1wbGVz
QnVmZmVyTWFwcGVkKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0
byBtYXAgc3Vic2FtcGxlIGJ1ZmZlciIpOworICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZl
ciwgJm1hcCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHc3RCeXRlUmVh
ZGVyKiByZWFkZXIgPSBnc3RfYnl0ZV9yZWFkZXJfbmV3KHN1YlNhbXBsZXNNYXAuZGF0YSwgc3Vi
U2FtcGxlc01hcC5zaXplKTsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisgICAgdW5zaWdu
ZWQgc2FtcGxlSW5kZXggPSAwOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicG9zaXRp
b246ICVkLCBzaXplOiAlenUiLCBwb3NpdGlvbiwgbWFwLnNpemUpOworCisgICAgd2hpbGUgKHBv
c2l0aW9uIDwgbWFwLnNpemUpIHsKKyAgICAgICAgZ3VpbnQxNiBuQnl0ZXNDbGVhciA9IDA7Cisg
ICAgICAgIGd1aW50MzIgbkJ5dGVzRW5jcnlwdGVkID0gMDsKKworICAgICAgICBpZiAoc2FtcGxl
SW5kZXggPCBzdWJTYW1wbGVDb3VudCkgeworICAgICAgICAgICAgaWYgKCFnc3RfYnl0ZV9yZWFk
ZXJfZ2V0X3VpbnQxNl9iZShyZWFkZXIsICZuQnl0ZXNDbGVhcikKKyAgICAgICAgICAgICAgICB8
fCAhZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUocmVhZGVyLCAmbkJ5dGVzRW5jcnlwdGVk
KSkgeworICAgICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgInVuc3VwcG9ydGVk
Iik7CisgICAgICAgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUocmVhZGVyKTsKKyAgICAg
ICAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7CisgICAgICAgICAgICAg
ICAgZ3N0X2J1ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2FtcGxlc01hcCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBzYW1wbGVJbmRleCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbkJ5dGVzQ2xl
YXIgPSAwOworICAgICAgICAgICAgbkJ5dGVzRW5jcnlwdGVkID0gbWFwLnNpemUgLSBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc2VsZiwgIiVkIGJ5dGVz
IGNsZWFyICh0b2RvPSV6dSkiLCBuQnl0ZXNDbGVhciwgbWFwLnNpemUgLSBwb3NpdGlvbik7Cisg
ICAgICAgIHBvc2l0aW9uICs9IG5CeXRlc0NsZWFyOworICAgICAgICBpZiAobkJ5dGVzRW5jcnlw
dGVkKSB7CisgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICIlZCBieXRlcyBlbmNy
eXB0ZWQgKHRvZG89JXp1KSIsIG5CeXRlc0VuY3J5cHRlZCwgbWFwLnNpemUgLSBwb3NpdGlvbik7
CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2RlY3J5cHQocHJpdi0+aGFuZGxlLCBt
YXAuZGF0YSArIHBvc2l0aW9uLCBuQnl0ZXNFbmNyeXB0ZWQsIDAsIDApOworICAgICAgICAgICAg
aWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZGVj
cnlwdGlvbiBmYWlsZWQ6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9yKSk7CisgICAgICAgICAgICAg
ICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUocmVhZGVyKTsKKyAgICAgICAgICAgICAgICBnc3RfYnVm
ZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7CisgICAgICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1h
cChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2FtcGxlc01hcCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zaXRpb24gKz0gbkJ5dGVz
RW5jcnlwdGVkOworICAgICAgICB9CisgICAgfQorCisgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUo
cmVhZGVyKTsKKyAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7CisgICAgZ3N0X2J1
ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2FtcGxlc01hcCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZWxl
YXNlQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCit7Cisg
ICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElB
X0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUoV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQoc2VsZikpOwor
ICAgIGdjcnlfY2lwaGVyX2Nsb3NlKHByaXYtPmhhbmRsZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xl
YXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZWFmYzlmNTI1ZThiMzgwMGUxMzgwMGY0Y2I5ODljMWQyYWY5M2MwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
IEdTdHJlYW1lciBDbGVhcktleSBjb21tb24gZW5jcnlwdGlvbiBkZWNyeXB0b3IKKyAqCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgTWV0cm9sb2dpY2FsCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRl
ICJXZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmgiCisKK0dfQkVHSU5f
REVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9NRURJQV9DS19ERUNSWVBUICAgICAgICAgICh3
ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lU
X01FRElBX0NLX0RFQ1JZUFQob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NB
U1QoKG9iaiksIFdFQktJVF9UWVBFX01FRElBX0NLX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0KSkKKyNkZWZpbmUgV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfQ0xBU1Moa2xhc3Mp
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfTUVESUFfQ0tf
REVDUllQVCwgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcykpCisjZGVmaW5lIFdFQktJ
VF9JU19NRURJQV9DS19ERUNSWVBUKG9iaikgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfVFlQRV9NRURJQV9DS19ERUNSWVBUKSkKKyNkZWZpbmUgV0VCS0lU
X0lTX01FRElBX0NLX0RFQ1JZUFRfQ0xBU1Mob2JqKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgV0VCS0lUX1RZUEVfTUVESUFfQ0tfREVDUllQVCkpCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdCAgICAgICAgV2ViS2l0TWVkaWFDbGVhcktleURl
Y3J5cHQ7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcyAg
IFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJp
dmF0ZTsKKworR1R5cGUgd2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2dldF90eXBlKHZv
aWQpOworCitzdHJ1Y3QgX1dlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0IHsKKyAgICBXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0IHBhcmVudDsKKworICAgIFdlYktpdE1lZGlhQ2xl
YXJLZXlEZWNyeXB0UHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0TWVkaWFDbGVh
cktleURlY3J5cHRDbGFzcyB7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dENsYXNzIHBhcmVudENsYXNzOworfTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292901</attachid>
            <date>2016-10-26 01:23:51 -0700</date>
            <delta_ts>2016-10-26 01:49:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162918-20161026082003.patch</filename>
            <type>text/plain</type>
            <size>15956</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEyZWUzODBjY2YyMzBi
N2ZmMjE1ZDdmM2ExMThmY2Q4NjMwNWRjZi4uMmUwMDdhNjExMzZjNjU1NWQ1MTdlMjU5YzA5OWNm
ZDA3ZjVhOGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE2LTEwLTI2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDbGVhcktleSBkZWNyeXB0aW9uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkxOAorCisgICAgICAgIFJldmll
d2VkIGJ5IFhhYmllciBSb2RyaWd1ZXotQ2FsdmFyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMg
YXV0aG9yZWQgYnkgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENsZWFyS2V5RGVjcnlw
dG9yR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5
X2RlY3J5cHRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2Rl
Y3J5cHRfaW5pdCk6CisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxp
emUpOgorICAgICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlcXVlc3REZWNyeXB0
aW9uS2V5KToKKyAgICAgICAgKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlS
ZXNwb25zZSk6CisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBo
ZXIpOgorICAgICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQpOgorICAg
ICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBoZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0
b3JHU3RyZWFtZXIuaDogQWRkZWQuCisKKzIwMTYtMTAtMjYgIEVucmlxdWUgT2Nhw7FhIEdvbnrD
oWxleiAgPGVvY2FuaGFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1N0cmVhbWVyXVtFTUVdIEJh
c2UgY2xhc3MgZm9yIGRlY3J5cHRpb24gc3VwcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTE1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0
b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDIyMGRhMmI1OWViZTMyZTkyMmM3ZWVhMGFiYjliOWZkMjA5MjBjNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0
Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisvKiBHU3Ry
ZWFtZXIgQ2xlYXJLZXkgY29tbW9uIGVuY3J5cHRpb24gZGVjcnlwdG9yCisgKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IE1ldHJvbG9naWNhbAorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBT
LkwKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMzNSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5oIgorCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJHUmVm
UHRyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2Uv
Z3N0Ynl0ZXJlYWRlci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKyNkZWZpbmUgQ0xF
QVJLRVlfU0laRSAxNgorCisjZGVmaW5lIFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklW
QVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVf
TUVESUFfQ0tfREVDUllQVCwgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKSkKK3N0
cnVjdCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlIHsKKyAgICBHUmVmUHRyPEdz
dEJ1ZmZlcj4ga2V5OworICAgIGdjcnlfY2lwaGVyX2hkX3QgaGFuZGxlOworfTsKKworc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmFsaXplKEdPYmplY3QqKTsKK3N0
YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZXF1ZXN0RGVjcnlwdGlvbktl
eShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RCdWZmZXIqKTsK
K3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9ySGFuZGxlS2V5UmVz
cG9uc2UoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0RXZlbnQq
KTsKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBo
ZXIoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCopOworc3RhdGljIGdib29sZWFu
IHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlhQ29tbW9uRW5j
cnlwdGlvbkRlY3J5cHQqLCBHc3RCdWZmZXIqIGl2LCBHc3RCdWZmZXIqIHNhbXBsZSwgdW5zaWdu
ZWQgc3ViU2FtcGxlc0NvdW50LCBHc3RCdWZmZXIqIHN1YlNhbXBsZXMpOworc3RhdGljIHZvaWQg
d2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBoZXIoV2ViS2l0TWVkaWFDb21t
b25FbmNyeXB0aW9uRGVjcnlwdCopOworCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDKHdlYmtp
dF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSk7CisjZGVmaW5lIEdTVF9D
QVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkK
KworI2RlZmluZSBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1fSUQgIjU4MTQ3ZWM4LTA0MjMt
NDY1OS05MmU2LWY1MmM1Y2U4YzNjYyIKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNp
bmtUZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzaW5rIiwKKyAgICBHU1RfUEFE
X1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTKCJhcHBsaWNh
dGlvbi94LWNlbmMsIG9yaWdpbmFsLW1lZGlhLXR5cGU9KHN0cmluZyl2aWRlby94LWgyNjQsIHBy
b3RlY3Rpb24tc3lzdGVtPShzdHJpbmcpIiBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1fSUQg
IjsgIgorICAgICJhcHBsaWNhdGlvbi94LWNlbmMsIG9yaWdpbmFsLW1lZGlhLXR5cGU9KHN0cmlu
ZylhdWRpby9tcGVnLCBwcm90ZWN0aW9uLXN5c3RlbT0oc3RyaW5nKSIgQ0xFQVJfS0VZX1BST1RF
Q1RJT05fU1lTVEVNX0lEKSk7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNUZW1w
bGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAor
ICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUygidmlkZW8veC1oMjY0OyBh
dWRpby9tcGVnIikpOworCisjZGVmaW5lIHdlYmtpdF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9w
YXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFKFdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0LCB3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHQsIFdFQktJVF9UWVBFX01F
RElBX0NFTkNfREVDUllQVCk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9jbGVhcl9rZXlf
ZGVjcnlwdF9jbGFzc19pbml0KFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0Q2xhc3MqIGtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVj
cnlwdG9yRmluYWxpemU7CisKKyAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcyA9IEdT
VF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3Rl
bXBsYXRlKGVsZW1lbnRDbGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzaW5rVGVt
cGxhdGUpKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRD
bGFzcywgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzcmNUZW1wbGF0ZSkpOworCisgICAg
Z3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YShlbGVtZW50Q2xhc3MsCisgICAg
ICAgICJEZWNyeXB0IGNvbnRlbnQgZW5jcnlwdGVkIHVzaW5nIElTT0JNRkYgQ2xlYXJLZXkgQ29t
bW9uIEVuY3J5cHRpb24iLAorICAgICAgICBHU1RfRUxFTUVOVF9GQUNUT1JZX0tMQVNTX0RFQ1JZ
UFRPUiwKKyAgICAgICAgIkRlY3J5cHRzIG1lZGlhIHRoYXQgaGFzIGJlZW4gZW5jcnlwdGVkIHVz
aW5nIElTT0JNRkYgQ2xlYXJLZXkgQ29tbW9uIEVuY3J5cHRpb24uIiwKKyAgICAgICAgIlBoaWxp
cHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Iik7CisKKyAgICBHU1RfREVCVUdfQ0FURUdP
UllfSU5JVCh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksCisg
ICAgICAgICJ3ZWJraXRjbGVhcmtleSIsIDAsICJDbGVhcktleSBkZWNyeXB0b3IiKTsKKworICAg
IFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyogY2VuY0NsYXNzID0gV0VC
S0lUX01FRElBX0NFTkNfREVDUllQVF9DTEFTUyhrbGFzcyk7CisgICAgY2VuY0NsYXNzLT5wcm90
ZWN0aW9uU3lzdGVtSWQgPSBDTEVBUl9LRVlfUFJPVEVDVElPTl9TWVNURU1fSUQ7CisgICAgY2Vu
Y0NsYXNzLT5yZXF1ZXN0RGVjcnlwdGlvbktleSA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1l
ZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZXF1ZXN0RGVjcnlwdGlvbktleSk7CisgICAgY2VuY0NsYXNz
LT5oYW5kbGVLZXlSZXNwb25zZSA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJL
ZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25zZSk7CisgICAgY2VuY0NsYXNzLT5zZXR1cENpcGhl
ciA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JTZXR1cENp
cGhlcik7CisgICAgY2VuY0NsYXNzLT5kZWNyeXB0ID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQpOworICAgIGNlbmNDbGFzcy0+cmVsZWFzZUNp
cGhlciA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZWxl
YXNlQ2lwaGVyKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9m
KFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfaW5pdChXZWJLaXRNZWRpYUNsZWFyS2V5RGVj
cnlwdCogc2VsZikKK3sKKyAgICBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfTUVESUFfQ0tfREVDUllQVF9HRVRfUFJJVkFURShzZWxmKTsKKworICAgIGlm
ICghZ2NyeV9jaGVja192ZXJzaW9uKEdDUllQVF9WRVJTSU9OKSkKKyAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChzZWxmLCAiTGliZ2NyeXB0IGZhaWxlZCB0byBpbml0aWFsaXplIik7CisKKyAgICAv
LyBBbGxvY2F0ZSBhIHBvb2wgb2YgMTZrIHNlY3VyZSBtZW1vcnkuIFRoaXMgbWFrZSB0aGUgc2Vj
dXJlIG1lbW9yeQorICAgIC8vIGF2YWlsYWJsZSBhbmQgYWxzbyBkcm9wcyBwcml2aWxlZ2VzIHdo
ZXJlIG5lZWRlZC4KKyAgICBnY3J5X2NvbnRyb2woR0NSWUNUTF9JTklUX1NFQ01FTSwgMTYzODQs
IDApOworCisgICAgZ2NyeV9jb250cm9sKEdDUllDVExfSU5JVElBTElaQVRJT05fRklOSVNIRUQs
IDApOworCisgICAgc2VsZi0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJLaXRNZWRp
YUNsZWFyS2V5RGVjcnlwdFByaXZhdGUoKTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFD
bGVhcktleURlY3J5cHRvckZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRN
ZWRpYUNsZWFyS2V5RGVjcnlwdCogc2VsZiA9IFdFQktJVF9NRURJQV9DS19ERUNSWVBUKG9iamVj
dCk7CisgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gc2VsZi0+
cHJpdjsKKworICAgIHByaXYtPn5XZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUoKTsK
KworICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsIChvYmplY3Qp
KTsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlcXVlc3RE
ZWNyeXB0aW9uS2V5KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdz
dEJ1ZmZlciogaW5pdERhdGFCdWZmZXIpCit7CisgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdl
KEdTVF9FTEVNRU5UKHNlbGYpLAorICAgICAgICBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudChHU1Rf
T0JKRUNUKHNlbGYpLAorICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoImRybS1rZXktbmVl
ZGVkIiwgImRhdGEiLCBHU1RfVFlQRV9CVUZGRVIsIGluaXREYXRhQnVmZmVyLAorICAgICAgICAg
ICAgICAgICJrZXktc3lzdGVtLWlkIiwgR19UWVBFX1NUUklORywgIm9yZy53My5jbGVhcmtleSIs
IG51bGxwdHIpKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVj
cnlwdG9ySGFuZGxlS2V5UmVzcG9uc2UoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dCogc2VsZiwgR3N0RXZlbnQqIGV2ZW50KQoreworICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNy
eXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKFdF
QktJVF9NRURJQV9DS19ERUNSWVBUKHNlbGYpKTsKKyAgICBjb25zdCBHc3RTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdzdF9ldmVudF9nZXRfc3RydWN0dXJlKGV2ZW50KTsKKworICAgIGlmICghZ3N0
X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0tY2lwaGVyIikpCisgICAgICAgIHJl
dHVybiBGQUxTRTsKKworICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dl
dF92YWx1ZShzdHJ1Y3R1cmUsICJrZXkiKTsKKyAgICBwcml2LT5rZXkuY2xlYXIoKTsKKyAgICBw
cml2LT5rZXkgPSBhZG9wdEdSZWYoZ3N0X2J1ZmZlcl9jb3B5KGdzdF92YWx1ZV9nZXRfYnVmZmVy
KHZhbHVlKSkpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRvclNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2
YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUoV0VCS0lUX01F
RElBX0NLX0RFQ1JZUFQoc2VsZikpOworICAgIGdjcnlfZXJyb3JfdCBlcnJvcjsKKworICAgIEFT
U0VSVChwcml2LT5rZXkpOworICAgIGlmICghcHJpdi0+a2V5KSB7CisgICAgICAgIEdTVF9FUlJP
Ul9PQkpFQ1Qoc2VsZiwgIkRlY3J5cHRpb24ga2V5IG5vdCBwcm92aWRlZCIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCYocHJp
di0+aGFuZGxlKSwgR0NSWV9DSVBIRVJfQUVTMTI4LCBHQ1JZX0NJUEhFUl9NT0RFX0NUUiwgR0NS
WV9DSVBIRVJfU0VDVVJFKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgR1NUX0VSUk9SX09C
SkVDVChzZWxmLCAiRmFpbGVkIHRvIGNyZWF0ZSBBRVMgMTI4IENUUiBjaXBoZXIgaGFuZGxlOiAl
cyIsIGdwZ19zdHJlcnJvcihlcnJvcikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgR3N0TWFwSW5mbyBrZXlNYXA7CisgICAgaWYgKCFnc3RfYnVmZmVyX21hcChwcml2LT5r
ZXkuZ2V0KCksICZrZXlNYXAsIEdTVF9NQVBfUkVBRCkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09C
SkVDVChzZWxmLCAiRmFpbGVkIHRvIG1hcCBkZWNyeXB0aW9uIGtleSIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgQVNTRVJUKGtleU1hcC5zaXplID09IENMRUFSS0VZX1NJ
WkUpOworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KHByaXYtPmhhbmRsZSwga2V5TWFw
LmRhdGEsIGtleU1hcC5zaXplKTsKKyAgICBnc3RfYnVmZmVyX3VubWFwKHByaXYtPmtleS5nZXQo
KSwgJmtleU1hcCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qo
c2VsZiwgImdjcnlfY2lwaGVyX3NldGtleSBmYWlsZWQ6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9y
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdl
YktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlciogaXZCdWZm
ZXIsIEdzdEJ1ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBzdWJTYW1wbGVDb3VudCwgR3N0QnVmZmVy
KiBzdWJTYW1wbGVzQnVmZmVyKQoreworICAgIEdzdE1hcEluZm8gaXZNYXA7CisgICAgaWYgKCFn
c3RfYnVmZmVyX21hcChpdkJ1ZmZlciwgJml2TWFwLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgICAg
IEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBtYXAgSVYiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHVpbnQ4X3QgY3RyW0NMRUFSS0VZX1NJWkVdOworICAg
IGlmIChpdk1hcC5zaXplID09IDgpIHsKKyAgICAgICAgbWVtc2V0KGN0ciArIDgsIDAsIDgpOwor
ICAgICAgICBtZW1jcHkoY3RyLCBpdk1hcC5kYXRhLCA4KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBBU1NFUlQoaXZNYXAuc2l6ZSA9PSBDTEVBUktFWV9TSVpFKTsKKyAgICAgICAgbWVtY3B5KGN0
ciwgaXZNYXAuZGF0YSwgQ0xFQVJLRVlfU0laRSk7CisgICAgfQorICAgIGdzdF9idWZmZXJfdW5t
YXAoaXZCdWZmZXIsICZpdk1hcCk7CisKKyAgICBXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFBy
aXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0tfREVDUllQVF9HRVRfUFJJVkFURShXRUJLSVRf
TUVESUFfQ0tfREVDUllQVChzZWxmKSk7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9j
aXBoZXJfc2V0Y3RyKHByaXYtPmhhbmRsZSwgY3RyLCBDTEVBUktFWV9TSVpFKTsKKyAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZ2NyeV9jaXBoZXJfc2V0
Y3RyIGZhaWxlZDogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIEdzdE1hcEluZm8gbWFwOworICAgIGdib29sZWFuIGJ1ZmZlck1h
cHBlZCA9IGdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgJm1hcCwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxh
Z3M+KEdTVF9NQVBfUkVBRFdSSVRFKSk7CisgICAgaWYgKCFidWZmZXJNYXBwZWQpIHsKKyAgICAg
ICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRmFpbGVkIHRvIG1hcCBidWZmZXIiKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdzdE1hcEluZm8gc3ViU2FtcGxlc01hcDsK
KyAgICBnYm9vbGVhbiBzdWJzYW1wbGVzQnVmZmVyTWFwcGVkID0gZ3N0X2J1ZmZlcl9tYXAoc3Vi
U2FtcGxlc0J1ZmZlciwgJnN1YlNhbXBsZXNNYXAsIEdTVF9NQVBfUkVBRCk7CisgICAgaWYgKCFz
dWJzYW1wbGVzQnVmZmVyTWFwcGVkKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwg
IkZhaWxlZCB0byBtYXAgc3Vic2FtcGxlIGJ1ZmZlciIpOworICAgICAgICBnc3RfYnVmZmVyX3Vu
bWFwKGJ1ZmZlciwgJm1hcCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBH
c3RCeXRlUmVhZGVyKiByZWFkZXIgPSBnc3RfYnl0ZV9yZWFkZXJfbmV3KHN1YlNhbXBsZXNNYXAu
ZGF0YSwgc3ViU2FtcGxlc01hcC5zaXplKTsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7Cisg
ICAgdW5zaWduZWQgc2FtcGxlSW5kZXggPSAwOworCisgICAgR1NUX0RFQlVHX09CSkVDVChzZWxm
LCAicG9zaXRpb246ICVkLCBzaXplOiAlenUiLCBwb3NpdGlvbiwgbWFwLnNpemUpOworCisgICAg
d2hpbGUgKHBvc2l0aW9uIDwgbWFwLnNpemUpIHsKKyAgICAgICAgZ3VpbnQxNiBuQnl0ZXNDbGVh
ciA9IDA7CisgICAgICAgIGd1aW50MzIgbkJ5dGVzRW5jcnlwdGVkID0gMDsKKworICAgICAgICBp
ZiAoc2FtcGxlSW5kZXggPCBzdWJTYW1wbGVDb3VudCkgeworICAgICAgICAgICAgaWYgKCFnc3Rf
Ynl0ZV9yZWFkZXJfZ2V0X3VpbnQxNl9iZShyZWFkZXIsICZuQnl0ZXNDbGVhcikKKyAgICAgICAg
ICAgICAgICB8fCAhZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUocmVhZGVyLCAmbkJ5dGVz
RW5jcnlwdGVkKSkgeworICAgICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgInVu
c3VwcG9ydGVkIik7CisgICAgICAgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUocmVhZGVy
KTsKKyAgICAgICAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7CisgICAg
ICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2FtcGxl
c01hcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzYW1wbGVJbmRleCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bkJ5dGVzQ2xlYXIgPSAwOworICAgICAgICAgICAgbkJ5dGVzRW5jcnlwdGVkID0gbWFwLnNpemUg
LSBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc2VsZiwg
IiVkIGJ5dGVzIGNsZWFyICh0b2RvPSV6dSkiLCBuQnl0ZXNDbGVhciwgbWFwLnNpemUgLSBwb3Np
dGlvbik7CisgICAgICAgIHBvc2l0aW9uICs9IG5CeXRlc0NsZWFyOworICAgICAgICBpZiAobkJ5
dGVzRW5jcnlwdGVkKSB7CisgICAgICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICIlZCBi
eXRlcyBlbmNyeXB0ZWQgKHRvZG89JXp1KSIsIG5CeXRlc0VuY3J5cHRlZCwgbWFwLnNpemUgLSBw
b3NpdGlvbik7CisgICAgICAgICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2RlY3J5cHQocHJpdi0+
aGFuZGxlLCBtYXAuZGF0YSArIHBvc2l0aW9uLCBuQnl0ZXNFbmNyeXB0ZWQsIDAsIDApOworICAg
ICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChz
ZWxmLCAiZGVjcnlwdGlvbiBmYWlsZWQ6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9yKSk7CisgICAg
ICAgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUocmVhZGVyKTsKKyAgICAgICAgICAgICAg
ICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7CisgICAgICAgICAgICAgICAgZ3N0X2J1
ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2FtcGxlc01hcCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zaXRpb24g
Kz0gbkJ5dGVzRW5jcnlwdGVkOworICAgICAgICB9CisgICAgfQorCisgICAgZ3N0X2J5dGVfcmVh
ZGVyX2ZyZWUocmVhZGVyKTsKKyAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwgJm1hcCk7Cisg
ICAgZ3N0X2J1ZmZlcl91bm1hcChzdWJTYW1wbGVzQnVmZmVyLCAmc3ViU2FtcGxlc01hcCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNy
eXB0b3JSZWxlYXNlQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNl
bGYpCit7CisgICAgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VC
S0lUX01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZBVEUoV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQo
c2VsZikpOworICAgIGdjcnlfY2lwaGVyX2Nsb3NlKHByaXYtPmhhbmRsZSk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
V2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFt
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZWFmYzlmNTI1ZThiMzgwMGUxMzgwMGY0Y2I5ODljMWQyYWY5M2Mw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qIEdTdHJlYW1lciBDbGVhcktleSBjb21tb24gZW5jcnlwdGlvbiBkZWNyeXB0b3IK
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWV0cm9sb2dpY2FsCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCisK
KyNpbmNsdWRlICJXZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmgiCisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9NRURJQV9DS19ERUNSWVBUICAg
ICAgICAgICh3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfZ2V0X3R5cGUoKSkKKyNkZWZp
bmUgV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX01FRElBX0NLX0RFQ1JZUFQsIFdlYktpdE1l
ZGlhQ2xlYXJLZXlEZWNyeXB0KSkKKyNkZWZpbmUgV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfQ0xB
U1Moa2xhc3MpICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVf
TUVESUFfQ0tfREVDUllQVCwgV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19NRURJQV9DS19ERUNSWVBUKG9iaikgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9NRURJQV9DS19ERUNSWVBUKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX01FRElBX0NLX0RFQ1JZUFRfQ0xBU1Mob2JqKSAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZUEVfTUVESUFfQ0tfREVDUllQVCkpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdCAgICAgICAgV2ViS2l0TWVkaWFD
bGVhcktleURlY3J5cHQ7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5
cHRDbGFzcyAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0Q2xhc3M7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlIFdlYktpdE1lZGlhQ2xlYXJLZXlE
ZWNyeXB0UHJpdmF0ZTsKKworR1R5cGUgd2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2dl
dF90eXBlKHZvaWQpOworCitzdHJ1Y3QgX1dlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0IHsKKyAg
ICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0IHBhcmVudDsKKworICAgIFdlYktp
dE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRDbGFzcyB7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdENsYXNzIHBhcmVudENsYXNzOworfTsKKworR19FTkRfREVDTFMKKworI2VuZGlm
IC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>