<?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>100700</bug_id>
          
          <creation_ts>2012-10-29 14:45:57 -0700</creation_ts>
          <short_desc>IndexedDB: Remove unused error handling clauses when writing to transaction</short_desc>
          <delta_ts>2012-11-08 13:38:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>94861</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753776</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-29 14:45:57 -0700</bug_when>
    <thetext>IndexedDB: Remove unused error handling clauses when writing to transaction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753779</commentid>
    <comment_count>1</comment_count>
      <attachid>171315</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-29 14:49:12 -0700</bug_when>
    <thetext>Created attachment 171315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753780</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-29 14:50:41 -0700</bug_when>
    <thetext>alecflett@, dgrogan@ - what do you think?

This simplifies some of the code in IDBLevelDBBackingStore but it&apos;s not a significant win overall. I also worry that if we ever let transactions spill to disk we&apos;d need to resurrect the error handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753795</commentid>
    <comment_count>3</comment_count>
      <attachid>171315</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 15:13:13 -0700</bug_when>
    <thetext>Comment on attachment 171315
Patch

Attachment 171315 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14627288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753798</commentid>
    <comment_count>4</comment_count>
      <attachid>171315</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-29 15:17:15 -0700</bug_when>
    <thetext>Comment on attachment 171315
Patch

Attachment 171315 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14618878</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754523</commentid>
    <comment_count>5</comment_count>
      <attachid>171486</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 11:15:49 -0700</bug_when>
    <thetext>Created attachment 171486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754526</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 11:20:35 -0700</bug_when>
    <thetext>New patch:
* Removes unused non-template functions (which failed compile)
* static function deleteRange() only writes to transaction so can be void
* Made setUpMetadata, getNewDatabaseId, and createIDBDatabaseMetaData write via transactions - now all writing is via transactions, which simplifies error cases.

This should make webkit.org/b/94861 and related cases where a file system error occurs easier handle properly.

So... I&apos;m now in favor of going forward with this.

alecflett@, dgrogan@ - thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754549</commentid>
    <comment_count>7</comment_count>
      <attachid>171486</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-30 11:58:54 -0700</bug_when>
    <thetext>Comment on attachment 171486
Patch

Attachment 171486 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14632595</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754555</commentid>
    <comment_count>8</comment_count>
      <attachid>171492</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 12:05:54 -0700</bug_when>
    <thetext>Created attachment 171492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758970</commentid>
    <comment_count>9</comment_count>
      <attachid>171492</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-05 15:41:55 -0800</bug_when>
    <thetext>Comment on attachment 171492
Patch

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

LGTM

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::putBool): Fork into &quot;put to database&quot; vs. &quot;put to transaction&quot; variants

Seems like &quot;put to database&quot; was removed altogether?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759027</commentid>
    <comment_count>10</comment_count>
      <attachid>171492</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-05 16:46:25 -0800</bug_when>
    <thetext>Comment on attachment 171492
Patch

generally lgtm, one minor nit:

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:972
&gt; +    return true;

Is it worth simplifying this return path too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759049</commentid>
    <comment_count>11</comment_count>
      <attachid>171492</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-05 16:56:37 -0800</bug_when>
    <thetext>Comment on attachment 171492
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        (WebCore::putBool): Fork into &quot;put to database&quot; vs. &quot;put to transaction&quot; variants
&gt; 
&gt; Seems like &quot;put to database&quot; was removed altogether?

Yeah, older iteration. Comment updated.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:972
&gt;&gt; +    return true;
&gt; 
&gt; Is it worth simplifying this return path too?

That API is exposed in IDBBackingStore so I left it alone for this first pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759050</commentid>
    <comment_count>12</comment_count>
      <attachid>172443</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-05 16:57:11 -0800</bug_when>
    <thetext>Created attachment 172443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759051</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-05 16:57:30 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760785</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-07 09:41:53 -0800</bug_when>
    <thetext>dglazkov@ - tony&apos;s out, would you mind r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762080</commentid>
    <comment_count>15</comment_count>
      <attachid>173098</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-08 12:44:04 -0800</bug_when>
    <thetext>Created attachment 173098
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762132</commentid>
    <comment_count>16</comment_count>
      <attachid>173098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 13:38:28 -0800</bug_when>
    <thetext>Comment on attachment 173098
Patch for landing

Clearing flags on attachment: 173098

Committed r133940: &lt;http://trac.webkit.org/changeset/133940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762133</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 13:38:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171315</attachid>
            <date>2012-10-29 14:49:12 -0700</date>
            <delta_ts>2012-10-30 11:15:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100700-20121029144739.patch</filename>
            <type>text/plain</type>
            <size>17413</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkZWRlOTdkNjg4Yjc1
YTM0MDdlMDIwYWZiOGNlZDYxNGI4YmMzMS4uNTFjNWVlMjZlNzAzZTU2ZDU4YjA5Nzk1ODBlNmEy
ZGJmMDRlMWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgdW51c2VkIGVycm9yIGhhbmRsaW5nIGNsYXVzZXMgd2hlbiB3cml0aW5nIHRvIHRyYW5zYWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2FjdGlvbnMgYXJlIHdyaXR0ZW4gaW50byBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlz
IGNhbiBvbmx5IGZhaWwgaWYgYWxsb2NhdGlvbgorICAgICAgICBmYWlscywgc28gInN1Y2Nlc3Mi
IHJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZC4gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZXMgdG8g
dm9pZCwgYW5kIGRlbGV0ZQorICAgICAgICBhbGwgb2YgdGhlIHVucmVhY2hhYmxlIGVycm9yIGhh
bmRsaW5nIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCByZWZhY3RvcmluZy9k
ZWFkIGNvZGUgcmVtb3ZhbC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHV0Qm9vbCk6IEZvcmsgaW50
byAicHV0IHRvIGRhdGFiYXNlIiB2cy4gInB1dCB0byB0cmFuc2FjdGlvbiIgdmFyaWFudHMKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHV0SW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwdXRWYXJJbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnB1dFN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHV0SURCS2V5UGF0aCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OnVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWF4T2JqZWN0U3RvcmVJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXROZXdWZXJzaW9uTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OnB1dE9iamVjdFN0b3JlUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3Vy
cmVudE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhJbmRleElkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6
CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpzZXQpOiBSZXR1cm4gdHlwZSBpcyB2
b2lkLgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpwdXQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6cmVtb3ZlKTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAg
KExldmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTAtMjkgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFRleHQgd2l0aCB6ZXJvIGZvbnQgc2l6
ZSByZW5kZXJzIGFzIFggcHggc29tZXRpbWVzLCBjYXVzaW5nIGZhc3QvdGV4dC96ZXJvLWZvbnQt
c2l6ZS0yLmh0bWwgdG8gZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNWY1ZmZiMTky
ZTBmNzI3MDNiMmI2NTM0YzIzZDM4MzdiMjQwZjE1Li5iNjI3ZjljZjNiNzYyMDI5NmViMzBkMjg5
NWY3MmQ2ZDc3NDU4YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtODMsMTIgKzgzLDE3
IEBAIHN0YXRpYyBib29sIGdldEJvb2woREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9y
PGNoYXI+JiBrZXksIGJvb2wmIGZvdW5kQm9vCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBwdXRCb29sKERCT3JU
cmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBib29sIHZhbHVlKQorc3Rh
dGljIGJvb2wgcHV0Qm9vbChMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleSwgYm9vbCB2YWx1ZSkKIHsKICAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZUJvb2wo
dmFsdWUpKTsKIH0KIAorc3RhdGljIGJvb2wgcHV0Qm9vbChMZXZlbERCVHJhbnNhY3Rpb24qIGRi
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBkYi0+cHV0KGtl
eSwgZW5jb2RlQm9vbCh2YWx1ZSkpOworICAgIHJldHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgogc3RhdGljIGJvb2wgZ2V0SW50KERCT3JUcmFuc2Fj
dGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3VuZEludCkKIHsK
QEAgLTEwMCw4ICsxMDUsNyBAQCBzdGF0aWMgYm9vbCBnZXRJbnQoREJPclRyYW5zYWN0aW9uKiBk
YiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QmIGZvdW5kSQogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJv
b2wgcHV0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBp
bnQ2NF90IHZhbHVlKQorc3RhdGljIGJvb2wgcHV0SW50KExldmVsREJEYXRhYmFzZSogZGIsIGNv
bnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1
ZSA+PSAwKTsKICAgICBpZiAodmFsdWUgPCAwKQpAQCAtMTA5LDYgKzExMywxMiBAQCBzdGF0aWMg
Ym9vbCBwdXRJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXks
IGludDY0X3QgdmFsdWUpCiAgICAgcmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVJbnQodmFsdWUp
KTsKIH0KIAorc3RhdGljIHZvaWQgcHV0SW50KExldmVsREJUcmFuc2FjdGlvbiogZGIsIGNvbnN0
IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSA+
PSAwKTsKKyAgICBkYi0+cHV0KGtleSwgZW5jb2RlSW50KHZhbHVlKSk7Cit9CisKIHRlbXBsYXRl
IDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+CiBzdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRy
YW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QmIGZvdW5kSW50
KQogewpAQCAtMTE5LDEyICsxMjksMTYgQEAgc3RhdGljIGJvb2wgZ2V0VmFySW50KERCT3JUcmFu
c2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3UKICAgICBy
ZXR1cm4gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGZvdW5kSW50
KSA9PSByZXN1bHQuZW5kKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rp
b24+Ci1zdGF0aWMgYm9vbCBwdXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVj
dG9yPGNoYXI+JiBrZXksIGludDY0X3QgdmFsdWUpCitzdGF0aWMgYm9vbCBwdXRWYXJJbnQoTGV2
ZWxEQkRhdGFiYXNlKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVWYXJJbnQodmFsdWUpKTsKIH0KIAor
c3RhdGljIHZvaWQgcHV0VmFySW50KExldmVsREJUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3Rv
cjxjaGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQoreworICAgIGRiLT5wdXQoa2V5LCBlbmNvZGVW
YXJJbnQodmFsdWUpKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4K
IHN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8
Y2hhcj4mIGtleSwgU3RyaW5nJiBmb3VuZFN0cmluZykKIHsKQEAgLTEzNiwyMCArMTUwLDI0IEBA
IHN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8
Y2hhcj4mIGtleSwgU3RyaW5nJiBmb3VuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBwdXRTdHJpbmcoREJPclRy
YW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK3N0YXRpYyBib29sIHB1dFN0cmluZyhMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBWZWN0
b3I8Y2hhcj4ga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghZGItPnB1dChr
ZXksIGVuY29kZVN0cmluZyh2YWx1ZSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVTdHJpbmcodmFsdWUpKTsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIHB1
dElEQktleVBhdGgoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwg
Y29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRTdHJpbmcoTGV2ZWxEQlRy
YW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBpZiAoIWRiLT5wdXQoa2V5LCBlbmNvZGVJREJLZXlQYXRoKHZhbHVlKSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBkYi0+cHV0KGtleSwg
ZW5jb2RlU3RyaW5nKHZhbHVlKSk7Cit9CisKK3N0YXRpYyBib29sIHB1dElEQktleVBhdGgoTGV2
ZWxEQkRhdGFiYXNlKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgSURCS2V5UGF0
aCYgdmFsdWUpCit7CisgICAgcmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVJREJLZXlQYXRoKHZh
bHVlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHB1dElEQktleVBhdGgoTGV2ZWxEQlRyYW5zYWN0aW9u
KiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCit7
CisgICAgZGItPnB1dChrZXksIGVuY29kZUlEQktleVBhdGgodmFsdWUpKTsKIH0KIAogc3RhdGlj
IGludCBjb21wYXJlS2V5cyhjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGlj
ZSYgYikKQEAgLTQzMCwzMyArNDQ4LDIxIEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhCiAgICAg
aWYgKGludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQogICAg
ICAgICBpbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb247
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbnRWZXJzaW9uID49IDAsICJpbnRWZXJzaW9uIHdh
cyAlbGxkIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihpbnRWZXJzaW9uKSk7Ci0gICAgaWYgKCFw
dXRWYXJJbnQoVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24p
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6
OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgcHV0VmFySW50KFRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9t
KHRyYW5zYWN0aW9uKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFz
ZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGludFZlcnNpb24pOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRhdGFiYXNl
TWV0YURhdGEoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKLSAgICBpZiAoIXB1dFN0cmluZyhU
cmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbiksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNp
b24pLCB2ZXJzaW9uKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQorICAgIHB1
dFN0cmluZyhUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbiks
IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6
VXNlclZlcnNpb24pLCB2ZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZGVsZXRlUmFuZ2UoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVj
dG9yPGNoYXI+JiBiZWdpbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmQpCiB7CiAgICAgT3duUHRy
PExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKLSAg
ICBmb3IgKGl0LT5zZWVrKGJlZ2luKTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+
a2V5KCksIGVuZCkgPCAwOyBpdC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmICghdHJhbnNhY3Rpb24t
PnJlbW92ZShpdC0+a2V5KCkpKSB7Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQorICAgIGZvciAoaXQtPnNlZWsoYmVnaW4pOyBpdC0+aXNWYWxpZCgp
ICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgZW5kKSA8IDA7IGl0LT5uZXh0KCkpCisgICAgICAg
IHRyYW5zYWN0aW9uLT5yZW1vdmUoaXQtPmtleSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNTk3LDEwICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBzZXRNYXhPYmplY3RTdG9yZUlkKExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhcwogICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVDb25zaXN0ZW5jeUVycm9yKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIXB1dEludCh0cmFuc2FjdGlvbiwgbWF4
T2JqZWN0U3RvcmVJZEtleSwgb2JqZWN0U3RvcmVJZCkpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJv
cihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9CisgICAgcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBv
YmplY3RTdG9yZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjIxLDYwICs2MjQsMTUg
QEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmEKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2Vu
ZXJhdG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZXNLZXkgPSBP
YmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgbmFtZSk7CiAKLSAgICBib29s
IG9rID0gcHV0U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZUtleSwgbmFtZSk7Ci0gICAg
aWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVX
cml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0
SURCS2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXksIGtleVBhdGgpOwotICAg
IGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1
dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGF1dG9JbmNyZW1lbnRLZXksIGF1dG9JbmNyZW1lbnQp
OwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2lu
Z1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBv
ayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGV2aWN0YWJsZUtleSwgZmFsc2UpOwotICAg
IGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1
dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5LCAxKTsKLSAgICBpZiAoIW9r
KSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJy
b3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJbnQobGV2
ZWxEQlRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBNaW5pbXVtSW5kZXhJZCk7Ci0gICAgaWYg
KCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0
ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0Qm9v
bChsZXZlbERCVHJhbnNhY3Rpb24sIGhhc0tleVBhdGhLZXksICFrZXlQYXRoLmlzTnVsbCgpKTsK
LSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sg
PSBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5
LCBLZXlHZW5lcmF0b3JJbml0aWFsTnVtYmVyKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9u
LCBuYW1lc0tleSwgb2JqZWN0U3RvcmVJZCk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQorICAgIHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5h
bWVLZXksIG5hbWUpOworICAgIHB1dElEQktleVBhdGgobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlQ
YXRoS2V5LCBrZXlQYXRoKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBhdXRvSW5j
cmVtZW50S2V5LCBhdXRvSW5jcmVtZW50KTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9u
LCBldmljdGFibGVLZXksIGZhbHNlKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBs
YXN0VmVyc2lvbktleSwgMSk7CisgICAgcHV0SW50KGxldmVsREJUcmFuc2FjdGlvbiwgbWF4SW5k
ZXhJZEtleSwgTWluaW11bUluZGV4SWQpOworICAgIHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9u
LCBoYXNLZXlQYXRoS2V5LCAha2V5UGF0aC5pc051bGwoKSk7CisgICAgcHV0SW50KGxldmVsREJU
cmFuc2FjdGlvbiwga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwgS2V5R2VuZXJhdG9ySW5p
dGlhbE51bWJlcik7CisgICAgcHV0SW50KGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZXNLZXksIG9i
amVjdFN0b3JlSWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03NTksOCArNzE3LDcgQEAg
c3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICBBU1NFUlQobGFzdFZlcnNpb24gPj0gMCk7CiAK
ICAgICBpbnQ2NF90IHZlcnNpb24gPSBsYXN0VmVyc2lvbiArIDE7Ci0gICAgYm9vbCBvayA9IHB1
dEludCh0cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIHZlcnNpb24pOwotICAgIEFTU0VSVF9V
TlVTRUQob2ssIG9rKTsKKyAgICBwdXRJbnQodHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5LCB2
ZXJzaW9uKTsKIAogICAgIEFTU0VSVCh2ZXJzaW9uID4gbGFzdFZlcnNpb24pOyAvLyBGSVhNRTog
VGhpbmsgYWJvdXQgaG93IHdlIHdhbnQgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBzY2VuYXJpby4K
IApAQCAtNzc5LDE2ICs3MzYsMTAgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRP
YmplY3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKgogICAgIHYuYXBw
ZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CiAgICAgdi5hcHBlbmQoZW5jb2RlU3RyaW5nKHZh
bHVlKSk7CiAKLSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+cHV0KG9iamVjdFN0b3JlZGF0
YUtleSwgdikpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgbGV2ZWxEQlRy
YW5zYWN0aW9uLT5wdXQob2JqZWN0U3RvcmVkYXRhS2V5LCB2KTsKIAogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBleGlzdHNFbnRyeUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKLSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+cHV0
KGV4aXN0c0VudHJ5S2V5LCBlbmNvZGVJbnQodmVyc2lvbikpKSB7Ci0gICAgICAgIEludGVybmFs
RXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQorICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGV4aXN0c0VudHJ5S2V5
LCBlbmNvZGVJbnQodmVyc2lvbikpOwogCiAgICAgTGV2ZWxEQlJlY29yZElkZW50aWZpZXIqIGxl
dmVsREJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8TGV2ZWxEQlJlY29yZElkZW50aWZp
ZXIqPihyZWNvcmRJZGVudGlmaWVyKTsKICAgICBsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+c2V0
UHJpbWFyeUtleShlbmNvZGVJREJLZXkoa2V5KSk7CkBAIC04NzgsMTEgKzgyOSw3IEBAIGJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVt
YmVyKElEQkJhY2tpbmdTdG9yCiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleUdl
bmVyYXRvckN1cnJlbnROdW1iZXJLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6S2V5R2Vu
ZXJhdG9yQ3VycmVudE51bWJlcik7Ci0gICAgYm9vbCBvayA9IHB1dEludChsZXZlbERCVHJhbnNh
Y3Rpb24sIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIG5ld051bWJlcik7Ci0gICAgaWYg
KCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0
ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBwdXRJbnQobGV2ZWxE
QlRyYW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDIyLDEwICs5NjksNyBAQCBzdGF0aWMgYm9vbCBz
ZXRNYXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFwdXRJ
bnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIGluZGV4SWQpKSB7Ci0gICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwg
aW5kZXhJZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNDEsMzAgKzk4NSwxMCBAQCBi
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlQYXRoS2V5
ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OktleVBhdGgpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBtdWx0aUVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6Ok11bHRpRW50cnkpOwogCi0g
ICAgYm9vbCBvayA9IHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5hbWUp
OwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2lu
Z1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBv
ayA9IHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKLSAg
ICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBw
dXRJREJLZXlQYXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7Ci0g
ICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3Rv
cmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0g
cHV0Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7
Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQorICAgIHB1
dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5hbWUpOworICAgIHB1dEJvb2wo
bGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKKyAgICBwdXRJREJLZXlQ
YXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgcHV0Qm9v
bChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMDQsNyArMTAyOCw4IEBAIGJvb2wgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qCiAgICAgZGF0YS5hcHBlbmQoZW5jb2RlVmFySW50KGxldmVsREJSZWNvcmRJZGVudGlm
aWVyLT52ZXJzaW9uKCkpKTsKICAgICBkYXRhLmFwcGVuZChsZXZlbERCUmVjb3JkSWRlbnRpZmll
ci0+cHJpbWFyeUtleSgpKTsKIAotICAgIHJldHVybiBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChp
bmRleERhdGFLZXksIGRhdGEpOworICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0
YUtleSwgZGF0YSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGZpbmRHcmVh
dGVzdEtleUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBj
b25zdCBWZWN0b3I8Y2hhcj4mIHRhcmdldCwgVmVjdG9yPGNoYXI+JiBmb3VuZEtleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9u
LmNwcAppbmRleCA4ZmUzZmQwOGVkYjI3OWJjZTM4NDUwZDVjN2I5YmJhMDE3NDc1OTUzLi5iZjVj
Y2JiN2Y4MDJhNDU2YTgyZDZmZDU4MTM0ZjlmOTQ0OTdiYjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHN0YXRpYyB2b2lkIGluaXRWZWN0b3IoY29uc3QgTGV2ZWxEQlNsaWNlJiBz
bGljZSwgVmVjdG9yPGNoYXI+KiB2ZWN0b3IpCiAgICAgdmVjdG9yLT5hcHBlbmQoc2xpY2UuYmVn
aW4oKSwgc2xpY2UuZW5kKCkgLSBzbGljZS5iZWdpbigpKTsKIH0KIAotYm9vbCBMZXZlbERCVHJh
bnNhY3Rpb246OnNldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+
JiB2YWx1ZSwgYm9vbCBkZWxldGVkKQordm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25z
dCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwgYm9vbCBkZWxl
dGVkKQogewogICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CiAgICAgYm9vbCBuZXdOb2RlID0gZmFs
c2U7CkBAIC05MywxNyArOTMsMTYgQEAgYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25z
dCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwKIAogICAgIGlm
IChuZXdOb2RlKQogICAgICAgICBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnB1dChjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKK3ZvaWQgTGV2ZWxEQlRy
YW5zYWN0aW9uOjpwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFy
PiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHNldChrZXksIHZhbHVlLCBmYWxzZSk7CisgICAgc2V0
KGtleSwgdmFsdWUsIGZhbHNlKTsKIH0KIAotYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92
ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSkKK3ZvaWQgTGV2ZWxEQlRyYW5zYWN0aW9uOjpyZW1v
dmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXkpCiB7Ci0gICAgcmV0dXJuIHNldChrZXksIFZlY3Rv
cjxjaGFyPigpLCB0cnVlKTsKKyAgICBzZXQoa2V5LCBWZWN0b3I8Y2hhcj4oKSwgdHJ1ZSk7CiB9
CiAKIGJvb2wgTGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXks
IFZlY3RvcjxjaGFyPiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAppbmRleCA4MGEzMzVkNDdhMDEwYWY0ZDM4MmE1
ZjE1YTE5NDU5MTczNzQ0ZjVmLi44NWI3MzRmZjA0Y2ZjZWI5Y2I2MzUyZjI3MjliMmQ1NDMyMGMx
MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJU
cmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QlRyYW5zYWN0aW9uLmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gY3JlYXRlKExldmVsREJEYXRhYmFzZSopOwogCiAg
ICAgfkxldmVsREJUcmFuc2FjdGlvbigpOwotICAgIGJvb2wgcHV0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKLSAgICBib29sIHJlbW92ZShjb25z
dCBMZXZlbERCU2xpY2UmIGtleSk7CisgICAgdm9pZCBwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IExl
dmVsREJTbGljZSYga2V5KTsKICAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwg
VmVjdG9yPGNoYXI+JiB2YWx1ZSk7CiAgICAgYm9vbCBjb21taXQoKTsKICAgICB2b2lkIHJvbGxi
YWNrKCk7CkBAIC0xNTcsNyArMTU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBib29s
IG1fdHJlZUNoYW5nZWQ7CiAgICAgfTsKIAotICAgIGJvb2wgc2V0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29sIGRlbGV0ZWQpOworICAgIHZv
aWQgc2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVl
LCBib29sIGRlbGV0ZWQpOwogICAgIHZvaWQgY2xlYXJUcmVlKCk7CiAgICAgdm9pZCByZWdpc3Rl
ckl0ZXJhdG9yKFRyYW5zYWN0aW9uSXRlcmF0b3IqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJJdGVy
YXRvcihUcmFuc2FjdGlvbkl0ZXJhdG9yKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171486</attachid>
            <date>2012-10-30 11:15:49 -0700</date>
            <delta_ts>2012-10-30 12:05:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100700-20121030111414.patch</filename>
            <type>text/plain</type>
            <size>25716</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3YjU5OTU3MmFlMTQz
NDI5ZDgwYjZiMzkyOTExZjcxZDgzNGVmYy4uYTlmYzAyNzM2ODdhZmE2ODc5MWUxZWQ1MDA1MDdl
MWFhYWIzOTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgdW51c2VkIGVycm9yIGhhbmRsaW5nIGNsYXVzZXMgd2hlbiB3cml0aW5nIHRvIHRyYW5zYWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2FjdGlvbnMgYXJlIHdyaXR0ZW4gaW50byBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlz
IGNhbiBvbmx5IGZhaWwgaWYgYWxsb2NhdGlvbgorICAgICAgICBmYWlscywgc28gInN1Y2Nlc3Mi
IHJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZC4gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZXMgdG8g
dm9pZCwgYW5kIGRlbGV0ZQorICAgICAgICBhbGwgb2YgdGhlIHVucmVhY2hhYmxlIGVycm9yIGhh
bmRsaW5nIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCByZWZhY3RvcmluZy9k
ZWFkIGNvZGUgcmVtb3ZhbC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHV0Qm9vbCk6IEZvcmsgaW50
byAicHV0IHRvIGRhdGFiYXNlIiB2cy4gInB1dCB0byB0cmFuc2FjdGlvbiIgdmFyaWFudHMKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHV0SW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwdXRWYXJJbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnB1dFN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHV0SURCS2V5UGF0aCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OnVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlUmFu
Z2UpOiBXcml0ZXMgb25seSB0byB0cmFuc2FjdGlvbiwgc28gY2FuJ3QgZmFpbC4KKyAgICAgICAg
KFdlYkNvcmU6OnNldE1heE9iamVjdFN0b3JlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0TmV3VmVyc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpwdXRPYmplY3RTdG9yZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0TWF4SW5kZXhJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxldmVsREJUcmFuc2FjdGlvbjo6c2V0KTogUmV0dXJuIHR5cGUgaXMgdm9pZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6cHV0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChMZXZlbERCVHJhbnNh
Y3Rpb24pOgorCiAyMDEyLTEwLTMwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgdW51c2VkIGNvZGUgZm9yIG9sZCBpbnB1dFt0eXBlPWRhdGVdIFVJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVhNWQ1OWZlM2U4NDFjYjI0ZTE5YjNmYjYyYTNm
ZjM1ZWIzNzA2ODMuLjAyYzU1N2I3NDI4ZWZjM2VjOTUxZTA5YTYzNzdkN2YyNzliODNjNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC03Miw4ICs3Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCByZWNvcmRJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9y
VHlwZSB0CiAgICAgICAgIHJlY29yZEludGVybmFsRXJyb3IodHlwZSk7IFwKICAgICB9IHdoaWxl
ICgwKQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wg
Z2V0Qm9vbChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9v
bCYgZm91bmRCb29sKQorc3RhdGljIGJvb2wgZ2V0Qm9vbChMZXZlbERCVHJhbnNhY3Rpb24qIGRi
LCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgYm9vbCYgZm91bmRCb29sKQogewogICAgIFZlY3Rv
cjxjaGFyPiByZXN1bHQ7CiAgICAgaWYgKCFkYi0+Z2V0KGtleSwgcmVzdWx0KSkKQEAgLTgzLDE0
ICs4MiwxMyBAQCBzdGF0aWMgYm9vbCBnZXRCb29sKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0
IFZlY3RvcjxjaGFyPiYga2V5LCBib29sJiBmb3VuZEJvbwogICAgIHJldHVybiB0cnVlOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wgcHV0Qm9v
bChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9vbCB2YWx1
ZSkKK3N0YXRpYyB2b2lkIHB1dEJvb2woTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
Y29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGJvb2wgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGRiLT5w
dXQoa2V5LCBlbmNvZGVCb29sKHZhbHVlKSk7CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVu
Y29kZUJvb2wodmFsdWUpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlv
bj4KLXN0YXRpYyBib29sIGdldEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8
Y2hhcj4mIGtleSwgaW50NjRfdCYgZm91bmRJbnQpCitzdGF0aWMgYm9vbCBnZXRJbnQoREJPclRy
YW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QmIGZvdW5kSW50
KQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CiAgICAgaWYgKCFkYi0+Z2V0KGtleSwgcmVz
dWx0KSkKQEAgLTEwMCwxNyArOTgsMTQgQEAgc3RhdGljIGJvb2wgZ2V0SW50KERCT3JUcmFuc2Fj
dGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3VuZEkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0
YXRpYyBib29sIHB1dEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleSwgaW50NjRfdCB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1dEludChMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCB2YWx1ZSkK
IHsKICAgICBBU1NFUlQodmFsdWUgPj0gMCk7Ci0gICAgaWYgKHZhbHVlIDwgMCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2RlSW50KHZhbHVlKSk7
CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVuY29kZUludCh2YWx1ZSkpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wgZ2V0VmFySW50KERC
T3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3Vu
ZEludCkKK3N0YXRpYyBib29sIGdldFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQpCiB7CiAgICAgVmVjdG9yPGNoYXI+
IHJlc3VsdDsKICAgICBpZiAoIWRiLT5nZXQoa2V5LCByZXN1bHQpKQpAQCAtMTE5LDE0ICsxMTQs
MTMgQEAgc3RhdGljIGJvb2wgZ2V0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3UKICAgICByZXR1cm4gZGVjb2RlVmFySW50KHJl
c3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGZvdW5kSW50KSA9PSByZXN1bHQuZW5kKCk7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBwdXRW
YXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0
X3QgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRWYXJJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVWYXJJbnQodmFsdWUpKTsKKyAgICB0cmFuc2FjdGlv
bi0+cHV0KGtleSwgZW5jb2RlVmFySW50KHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9u
KiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCitzdGF0
aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNl
JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsK
ICAgICBpZiAoIWRiLT5nZXQoa2V5LCByZXN1bHQpKQpAQCAtMTM2LDIwICsxMzAsMTQgQEAgc3Rh
dGljIGJvb2wgZ2V0U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYga2V5LCBTdHJpbmcmIGZvdW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIHB1dFN0cmluZyhEQk9yVHJhbnNh
Y3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
c3RhdGljIHZvaWQgcHV0U3RyaW5nKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNv
bnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICgh
ZGItPnB1dChrZXksIGVuY29kZVN0cmluZyh2YWx1ZSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVuY29kZVN0cmlu
Zyh2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3Rh
dGljIGJvb2wgcHV0SURCS2V5UGF0aChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8
Y2hhcj4ga2V5LCBjb25zdCBJREJLZXlQYXRoJiB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1dElEQktl
eVBhdGgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNl
JiBrZXksIGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQogewotICAgIGlmICghZGItPnB1dChrZXks
IGVuY29kZUlEQktleVBhdGgodmFsdWUpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB0cnVlOworICAgIHRyYW5zYWN0aW9uLT5wdXQoa2V5LCBlbmNvZGVJREJLZXlQYXRoKHZh
bHVlKSk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZUtleXMoY29uc3QgTGV2ZWxEQlNsaWNlJiBh
LCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCkBAIC0xODEsNTAgKzE2OSwzNyBAQCBzdGF0aWMgYm9v
bCBpc1NjaGVtYUtub3duKExldmVsREJEYXRhYmFzZSogZGIpCiBzdGF0aWMgYm9vbCBzZXRVcE1l
dGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogewogICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6OmVuY29k
ZSgpOworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxE
QlRyYW5zYWN0aW9uOjpjcmVhdGUoZGIpOwogCiAgICAgaW50NjRfdCBzY2hlbWFWZXJzaW9uID0g
MDsKLSAgICBpZiAoIWdldEludChkYiwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24pKSB7Cisg
ICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJz
aW9uKSkgewogICAgICAgICBzY2hlbWFWZXJzaW9uID0gbGF0ZXN0U2NoZW1hVmVyc2lvbjsKLSAg
ICAgICAgaWYgKCFwdXRJbnQoZGIsIG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hlbWFWZXJzaW9uKSkg
ewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVF
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgcHV0
SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgbGF0ZXN0U2NoZW1hVmVyc2lvbik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHNjaGVtYVZlcnNpb24gPD0gbGF0ZXN0U2No
ZW1hVmVyc2lvbik7CiAgICAgICAgIGlmICghc2NoZW1hVmVyc2lvbikgewogICAgICAgICAgICAg
c2NoZW1hVmVyc2lvbiA9IGxhdGVzdFNjaGVtYVZlcnNpb247Ci0gICAgICAgICAgICBSZWZQdHI8
TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlKGRiKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5wdXQobWV0YURhdGFLZXksIGVuY29k
ZUludChzY2hlbWFWZXJzaW9uKSk7Ci0KKyAgICAgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5n
ZXQoKSwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24pOwogICAgICAgICAgICAgY29uc3QgVmVj
dG9yPGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGVNaW5LZXlGb3JPcmln
aW4ob3JpZ2luKTsKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gRGF0
YWJhc2VOYW1lS2V5OjplbmNvZGVTdG9wS2V5Rm9yT3JpZ2luKG9yaWdpbik7CiAgICAgICAgICAg
ICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IGRiLT5jcmVhdGVJdGVyYXRvcigpOwogICAg
ICAgICAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFy
ZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsKLSAgICAgICAgICAg
ICAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7Ci0gICAgICAgICAgICAgICAgYm9vbCBvayA9IHRyYW5z
YWN0aW9uLT5nZXQoaXQtPmtleSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFvaykg
eworICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IDA7CisgICAgICAgICAgICAg
ICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGl0LT5rZXkoKSwgZGF0YWJhc2VJZCkp
IHsKICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlUmVhZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgZGF0YWJhc2VJZCA9IGRlY29kZUludCh2
YWx1ZS5iZWdpbigpLCB2YWx1ZS5lbmQoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPGNoYXI+
IGludFZlcnNpb25LZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pOwotICAgICAgICAgICAgICAgIHRy
YW5zYWN0aW9uLT5wdXQoaW50VmVyc2lvbktleSwgZW5jb2RlVmFySW50KElEQkRhdGFiYXNlTWV0
YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKSk7Ci0gICAgICAgICAgICAgICAgb2sgPSB0cmFuc2Fj
dGlvbi0+Z2V0KGl0LT5rZXkoKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGlmICghb2spIHsK
LSAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
UmVhZEVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cmFuc2FjdGlv
bi0+Y29tbWl0KCk7Ci0gICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgSW50
ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHB1dFZhckludCh0cmFuc2FjdGlv
bi5nZXQoKSwgaW50VmVyc2lvbktleSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZl
cnNpb24pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUKHNj
aGVtYVZlcnNpb24gPT0gbGF0ZXN0U2NoZW1hVmVyc2lvbik7Ci0KKyAgICBpZiAoIXRyYW5zYWN0
aW9uLT5jb21taXQoKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzg4LDE2ICszNjMsMjAgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0
YWIKIAogc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJhc2UqIGRi
KQogeworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxE
QlRyYW5zYWN0aW9uOjpjcmVhdGUoZGIpOworCiAgICAgaW50NjRfdCBtYXhEYXRhYmFzZUlkID0g
LTE7Ci0gICAgaWYgKCFnZXRJbnQoZGIsIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBtYXhE
YXRhYmFzZUlkKSkKKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgTWF4RGF0YWJh
c2VJZEtleTo6ZW5jb2RlKCksIG1heERhdGFiYXNlSWQpKQogICAgICAgICBtYXhEYXRhYmFzZUlk
ID0gMDsKIAogICAgIEFTU0VSVChtYXhEYXRhYmFzZUlkID49IDApOwogCiAgICAgaW50NjRfdCBk
YXRhYmFzZUlkID0gbWF4RGF0YWJhc2VJZCArIDE7Ci0gICAgaWYgKCFwdXRJbnQoZGIsIE1heERh
dGFiYXNlSWRLZXk6OmVuY29kZSgpLCBkYXRhYmFzZUlkKSkKKyAgICBwdXRJbnQodHJhbnNhY3Rp
b24uZ2V0KCksIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBkYXRhYmFzZUlkKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5jb21taXQoKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxl
dmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIC0xOwotCisgICAg
fQogICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCkBAIC00MDcsMTggKzM4NiwxNCBAQCBib29s
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdAogICAgIGlmIChyb3dJZCA8IDApCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVu
Y29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwotICAgIGlmICghcHV0SW50KG1fZGIuZ2V0KCksIGtl
eSwgcm93SWQpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmICghcHV0
U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0
YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCB2ZXJzaW9uKSkgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KICAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpOb0ludFZlcnNpb24pCiAgICAgICAgIGludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKLSAgICBpZiAoIXB1dFZhckludChtX2RiLmdldCgpLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVz
ZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpIHsKKworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNh
Y3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobV9kYi5nZXQo
KSk7CisgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU5hbWVLZXk6OmVuY29k
ZShtX2lkZW50aWZpZXIsIG5hbWUpLCByb3dJZCk7CisgICAgcHV0U3RyaW5nKHRyYW5zYWN0aW9u
LmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbik7CisgICAgcHV0VmFySW50KHRyYW5zYWN0aW9u
LmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbik7CisgICAgaWYgKCF0cmFuc2FjdGlv
bi0+Y29tbWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00MzAsMzQg
KzQwNSwyMSBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRhdGFiYXNl
SW50VmVyc2lvbihJREJCYWNraW5nU3RvcmU6OlRyYW5zYQogICAgIGlmIChpbnRWZXJzaW9uID09
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAgICAgaW50VmVyc2lvbiA9
IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOwogICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaW50VmVyc2lvbiA+PSAwLCAiaW50VmVyc2lvbiB3YXMgJWxsZCIsIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oaW50VmVyc2lvbikpOwotICAgIGlmICghcHV0VmFySW50KFRyYW5zYWN0
aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKSwgRGF0YWJhc2VNZXRhRGF0
YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiks
IGludFZlcnNpb24pKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIHB1dFZh
ckludChUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbiksIERh
dGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNl
ckludFZlcnNpb24pLCBpbnRWZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgaWYgKCFwdXRTdHJpbmcoVHJhbnNhY3Rpb246OmxldmVs
REJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNv
ZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbikpIHsK
LSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KKyAgICBwdXRTdHJpbmcoVHJhbnNhY3Rp
b246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1ldGFEYXRh
S2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVy
c2lvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZVJhbmdlKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgYmVnaW4s
IGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5kKQorc3RhdGljIHZvaWQgZGVsZXRlUmFuZ2UoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWdpbiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBlbmQpCiB7CiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQg
PSB0cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKLSAgICBmb3IgKGl0LT5zZWVrKGJlZ2lu
KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIGVuZCkgPCAwOyBpdC0+
bmV4dCgpKSB7Ci0gICAgICAgIGlmICghdHJhbnNhY3Rpb24tPnJlbW92ZShpdC0+a2V5KCkpKSB7
Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVy
cm9yKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOworICAgIGZvciAoaXQtPnNlZWsoYmVnaW4pOyBpdC0+aXNWYWxpZCgpICYm
IGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgZW5kKSA8IDA7IGl0LT5uZXh0KCkpCisgICAgICAgIHRy
YW5zYWN0aW9uLT5yZW1vdmUoaXQtPmtleSgpKTsKIH0KIAogCkBAIC01OTcsMTAgKzU1OSw3IEBA
IHN0YXRpYyBib29sIHNldE1heE9iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzCiAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZUNvbnNpc3RlbmN5RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGlmICghcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBv
YmplY3RTdG9yZUlkKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBwdXRJ
bnQodHJhbnNhY3Rpb24sIG1heE9iamVjdFN0b3JlSWRLZXksIG9iamVjdFN0b3JlSWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC02MjEsNjAgKzU4MCwxNSBAQCBib29sIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleUdlbmVyYXRvckN1cnJlbnROdW1iZXIp
OwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lc0tleSA9IE9iamVjdFN0b3JlTmFtZXNLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBuYW1lKTsKIAotICAgIGJvb2wgb2sgPSBwdXRTdHJpbmcobGV2
ZWxEQlRyYW5zYWN0aW9uLCBuYW1lS2V5LCBuYW1lKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAg
IEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJREJLZXlQYXRoKGxldmVsREJU
cmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7Ci0gICAgaWYgKCFvaykgewotICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJUcmFuc2Fj
dGlvbiwgYXV0b0luY3JlbWVudEtleSwgYXV0b0luY3JlbWVudCk7Ci0gICAgaWYgKCFvaykgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJU
cmFuc2FjdGlvbiwgZXZpY3RhYmxlS2V5LCBmYWxzZSk7Ci0gICAgaWYgKCFvaykgewotICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJUcmFuc2Fj
dGlvbiwgbGFzdFZlcnNpb25LZXksIDEpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJu
YWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIG1h
eEluZGV4SWRLZXksIE1pbmltdW1JbmRleElkKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRCb29sKGxldmVsREJUcmFuc2FjdGlv
biwgaGFzS2V5UGF0aEtleSwgIWtleVBhdGguaXNOdWxsKCkpOwotICAgIGlmICghb2spIHsKLSAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJh
bnNhY3Rpb24sIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIEtleUdlbmVyYXRvckluaXRp
YWxOdW1iZXIpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVzS2V5LCBvYmplY3RT
dG9yZUlkKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
CisgICAgcHV0U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZUtleSwgbmFtZSk7CisgICAg
cHV0SURCS2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXksIGtleVBhdGgpOwor
ICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGF1dG9JbmNyZW1lbnRLZXksIGF1dG9JbmNy
ZW1lbnQpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGV2aWN0YWJsZUtleSwgZmFs
c2UpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5LCAxKTsK
KyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBNaW5pbXVtSW5k
ZXhJZCk7CisgICAgcHV0Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIGhhc0tleVBhdGhLZXksICFr
ZXlQYXRoLmlzTnVsbCgpKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyS2V5LCBLZXlHZW5lcmF0b3JJbml0aWFsTnVtYmVyKTsKKyAgICBw
dXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBuYW1lc0tleSwgb2JqZWN0U3RvcmVJZCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTY4NiwyMSArNjAwLDEyIEBAIHZvaWQgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhCiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsKICAgICBnZXRTdHJpbmcobGV2ZWxE
QlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSksIG9iamVjdFN0b3Jl
TmFtZSk7CiAKLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCkpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdy
aXRlRXJyb3IpOwotICAgICAgICByZXR1cm47IC8vIEZJWE1FOiBSZXBvcnQgZXJyb3IuCi0gICAg
fQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBPYmplY3RTdG9yZU1l
dGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCiAg
ICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUoT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlTmFtZSkpOwogCi0gICAgaWYgKCFkZWxldGVSYW5nZShs
ZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCAwKSwgSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQpKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogUmVwb3J0
IGVycm9yLgotICAgIH0KLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwg
SW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAsIDAp
LCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCkpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRl
RXJyb3IpOwotICAgICAgICByZXR1cm47IC8vIEZJWE1FOiBSZXBvcnQgZXJyb3IuCi0gICAgfQor
ICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgSW5kZXhGcmVlTGlzdEtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBJbmRleEZyZWVMaXN0S2V5OjplbmNv
ZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOworICAgIGRlbGV0ZVJhbmdlKGxl
dmVsREJUcmFuc2FjdGlvbiwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIDAsIDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCiAgICAgY2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlv
biwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CiB9CkBAIC03NTksOCArNjY0LDcgQEAgc3Rh
dGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICBBU1NFUlQobGFzdFZlcnNpb24gPj0gMCk7CiAKICAg
ICBpbnQ2NF90IHZlcnNpb24gPSBsYXN0VmVyc2lvbiArIDE7Ci0gICAgYm9vbCBvayA9IHB1dElu
dCh0cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIHZlcnNpb24pOwotICAgIEFTU0VSVF9VTlVT
RUQob2ssIG9rKTsKKyAgICBwdXRJbnQodHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5LCB2ZXJz
aW9uKTsKIAogICAgIEFTU0VSVCh2ZXJzaW9uID4gbGFzdFZlcnNpb24pOyAvLyBGSVhNRTogVGhp
bmsgYWJvdXQgaG93IHdlIHdhbnQgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBzY2VuYXJpby4KIApA
QCAtNzc5LDE2ICs2ODMsMTAgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRPYmpl
Y3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKgogICAgIHYuYXBwZW5k
KGVuY29kZVZhckludCh2ZXJzaW9uKSk7CiAgICAgdi5hcHBlbmQoZW5jb2RlU3RyaW5nKHZhbHVl
KSk7CiAKLSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+cHV0KG9iamVjdFN0b3JlZGF0YUtl
eSwgdikpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3Jp
dGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgbGV2ZWxEQlRyYW5z
YWN0aW9uLT5wdXQob2JqZWN0U3RvcmVkYXRhS2V5LCB2KTsKIAogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBleGlzdHNFbnRyeUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwga2V5KTsKLSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGV4
aXN0c0VudHJ5S2V5LCBlbmNvZGVJbnQodmVyc2lvbikpKSB7Ci0gICAgICAgIEludGVybmFsRXJy
b3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQorICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGV4aXN0c0VudHJ5S2V5LCBl
bmNvZGVJbnQodmVyc2lvbikpOwogCiAgICAgTGV2ZWxEQlJlY29yZElkZW50aWZpZXIqIGxldmVs
REJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8TGV2ZWxEQlJlY29yZElkZW50aWZpZXIq
PihyZWNvcmRJZGVudGlmaWVyKTsKICAgICBsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+c2V0UHJp
bWFyeUtleShlbmNvZGVJREJLZXkoa2V5KSk7CkBAIC04NzgsMTEgKzc3Niw3IEBAIGJvb2wgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
KElEQkJhY2tpbmdTdG9yCiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXJLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6S2V5R2VuZXJh
dG9yQ3VycmVudE51bWJlcik7Ci0gICAgYm9vbCBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rp
b24sIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIG5ld051bWJlcik7Ci0gICAgaWYgKCFv
aykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBwdXRJbnQobGV2ZWxEQlRy
YW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMDIyLDEwICs5MTYsNyBAQCBzdGF0aWMgYm9vbCBzZXRN
YXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFwdXRJbnQo
dHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIGluZGV4SWQpKSB7Ci0gICAgICAgIEludGVybmFs
RXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQorICAgIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgaW5k
ZXhJZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNDEsMzAgKzkzMiwxMCBAQCBib29s
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlQYXRoS2V5ID0g
SW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQsIEluZGV4TWV0YURhdGFLZXk6OktleVBhdGgpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBt
dWx0aUVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6Ok11bHRpRW50cnkpOwogCi0gICAg
Ym9vbCBvayA9IHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5hbWUpOwot
ICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9
IHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKLSAgICBp
ZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdy
aXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJ
REJLZXlQYXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7Ci0gICAg
aWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVX
cml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0
Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7Ci0g
ICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3Rv
cmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQorICAgIHB1dFN0
cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5hbWUpOworICAgIHB1dEJvb2wobGV2
ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKKyAgICBwdXRJREJLZXlQYXRo
KGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgcHV0Qm9vbChs
ZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTEwNzUsMTkgKzk0NiwxMSBAQCB2b2lkIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4TWV0YURhdGFTdGFydCA9IEluZGV4
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAw
KTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YUVuZCA9IEluZGV4TWV0YURh
dGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsK
LQotICAgIGlmICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleE1ldGFEYXRh
U3RhcnQsIGluZGV4TWV0YURhdGFFbmQpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgaW5kZXhNZXRhRGF0YVN0YXJ0LCBpbmRl
eE1ldGFEYXRhRW5kKTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFTdGFydCA9
IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFFbmQgPSBJbmRleERhdGFL
ZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKLQot
ICAgIGlmICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleERhdGFTdGFydCwg
aW5kZXhEYXRhRW5kKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBkZWxldGVSYW5n
ZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0YVN0YXJ0LCBpbmRleERhdGFFbmQpOwogfQog
CiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBr
ZXksIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikK
QEAgLTExMDQsNyArOTY3LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRl
eERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbioKICAgICBkYXRhLmFw
cGVuZChlbmNvZGVWYXJJbnQobGV2ZWxEQlJlY29yZElkZW50aWZpZXItPnZlcnNpb24oKSkpOwog
ICAgIGRhdGEuYXBwZW5kKGxldmVsREJSZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5S2V5KCkpOwog
Ci0gICAgcmV0dXJuIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtleSwgZGF0YSk7
CisgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQoaW5kZXhEYXRhS2V5LCBkYXRhKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVx
dWFsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYg
dGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDhmZTNmZDA4
ZWRiMjc5YmNlMzg0NTBkNWM3YjliYmEwMTc0NzU5NTMuLmJmNWNjYmI3ZjgwMmE0NTZhODJkNmZk
NTgxMzRmOWY5NDQ5N2JiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj
IHZvaWQgaW5pdFZlY3Rvcihjb25zdCBMZXZlbERCU2xpY2UmIHNsaWNlLCBWZWN0b3I8Y2hhcj4q
IHZlY3RvcikKICAgICB2ZWN0b3ItPmFwcGVuZChzbGljZS5iZWdpbigpLCBzbGljZS5lbmQoKSAt
IHNsaWNlLmJlZ2luKCkpOwogfQogCi1ib29sIExldmVsREJUcmFuc2FjdGlvbjo6c2V0KGNvbnN0
IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29sIGRlbGV0
ZWQpCit2b2lkIExldmVsREJUcmFuc2FjdGlvbjo6c2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29sIGRlbGV0ZWQpCiB7CiAgICAgQVNTRVJU
KCFtX2ZpbmlzaGVkKTsKICAgICBib29sIG5ld05vZGUgPSBmYWxzZTsKQEAgLTkzLDE3ICs5Mywx
NiBAQCBib29sIExldmVsREJUcmFuc2FjdGlvbjo6c2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLAogCiAgICAgaWYgKG5ld05vZGUpCiAgICAgICAg
IG5vdGlmeUl0ZXJhdG9yc09mVHJlZUNoYW5nZSgpOwotICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIExldmVsREJUcmFuc2FjdGlvbjo6cHV0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQordm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnB1dChjb25z
dCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gc2V0KGtleSwgdmFsdWUsIGZhbHNlKTsKKyAgICBzZXQoa2V5LCB2YWx1ZSwgZmFsc2Up
OwogfQogCi1ib29sIExldmVsREJUcmFuc2FjdGlvbjo6cmVtb3ZlKGNvbnN0IExldmVsREJTbGlj
ZSYga2V5KQordm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92ZShjb25zdCBMZXZlbERCU2xp
Y2UmIGtleSkKIHsKLSAgICByZXR1cm4gc2V0KGtleSwgVmVjdG9yPGNoYXI+KCksIHRydWUpOwor
ICAgIHNldChrZXksIFZlY3RvcjxjaGFyPigpLCB0cnVlKTsKIH0KIAogYm9vbCBMZXZlbERCVHJh
bnNhY3Rpb246OmdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFu
c2FjdGlvbi5oCmluZGV4IDgwYTMzNWQ0N2EwMTBhZjRkMzgyYTVmMTVhMTk0NTkxNzM3NDRmNWYu
Ljg1YjczNGZmMDRjZmNlYjljYjYzNTJmMjcyOWIyZDU0MzIwYzEwOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaApAQCAt
NTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGV2ZWxEQlRyYW5z
YWN0aW9uPiBjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKik7CiAKICAgICB+TGV2ZWxEQlRyYW5zYWN0
aW9uKCk7Ci0gICAgYm9vbCBwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgdmFsdWUpOwotICAgIGJvb2wgcmVtb3ZlKGNvbnN0IExldmVsREJTbGljZSYga2V5
KTsKKyAgICB2b2lkIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNo
YXI+JiB2YWx1ZSk7CisgICAgdm9pZCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXkpOwog
ICAgIGJvb2wgZ2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVl
KTsKICAgICBib29sIGNvbW1pdCgpOwogICAgIHZvaWQgcm9sbGJhY2soKTsKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIGJvb2wgbV90cmVlQ2hhbmdlZDsKICAg
ICB9OwogCi0gICAgYm9vbCBzZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgdmFsdWUsIGJvb2wgZGVsZXRlZCk7CisgICAgdm9pZCBzZXQoY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUsIGJvb2wgZGVsZXRlZCk7CiAg
ICAgdm9pZCBjbGVhclRyZWUoKTsKICAgICB2b2lkIHJlZ2lzdGVySXRlcmF0b3IoVHJhbnNhY3Rp
b25JdGVyYXRvciopOwogICAgIHZvaWQgdW5yZWdpc3Rlckl0ZXJhdG9yKFRyYW5zYWN0aW9uSXRl
cmF0b3IqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171492</attachid>
            <date>2012-10-30 12:05:54 -0700</date>
            <delta_ts>2012-11-05 16:57:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100700-20121030120419.patch</filename>
            <type>text/plain</type>
            <size>25675</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3YjU5OTU3MmFlMTQz
NDI5ZDgwYjZiMzkyOTExZjcxZDgzNGVmYy4uYTlmYzAyNzM2ODdhZmE2ODc5MWUxZWQ1MDA1MDdl
MWFhYWIzOTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgdW51c2VkIGVycm9yIGhhbmRsaW5nIGNsYXVzZXMgd2hlbiB3cml0aW5nIHRvIHRyYW5zYWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2FjdGlvbnMgYXJlIHdyaXR0ZW4gaW50byBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlz
IGNhbiBvbmx5IGZhaWwgaWYgYWxsb2NhdGlvbgorICAgICAgICBmYWlscywgc28gInN1Y2Nlc3Mi
IHJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZC4gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZXMgdG8g
dm9pZCwgYW5kIGRlbGV0ZQorICAgICAgICBhbGwgb2YgdGhlIHVucmVhY2hhYmxlIGVycm9yIGhh
bmRsaW5nIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCByZWZhY3RvcmluZy9k
ZWFkIGNvZGUgcmVtb3ZhbC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHV0Qm9vbCk6IEZvcmsgaW50
byAicHV0IHRvIGRhdGFiYXNlIiB2cy4gInB1dCB0byB0cmFuc2FjdGlvbiIgdmFyaWFudHMKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHV0SW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwdXRWYXJJbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnB1dFN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHV0SURCS2V5UGF0aCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OnVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlUmFu
Z2UpOiBXcml0ZXMgb25seSB0byB0cmFuc2FjdGlvbiwgc28gY2FuJ3QgZmFpbC4KKyAgICAgICAg
KFdlYkNvcmU6OnNldE1heE9iamVjdFN0b3JlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0TmV3VmVyc2lvbk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpwdXRPYmplY3RTdG9yZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0TWF4SW5kZXhJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxldmVsREJUcmFuc2FjdGlvbjo6c2V0KTogUmV0dXJuIHR5cGUgaXMgdm9pZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6cHV0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChMZXZlbERCVHJhbnNh
Y3Rpb24pOgorCiAyMDEyLTEwLTMwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgdW51c2VkIGNvZGUgZm9yIG9sZCBpbnB1dFt0eXBlPWRhdGVdIFVJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVhNWQ1OWZlM2U4NDFjYjI0ZTE5YjNmYjYyYTNm
ZjM1ZWIzNzA2ODMuLjY4YjgxN2MwMWU1MjUwZjZhNzAxNmVkYjZkZTQxMTdlZTczMWI5Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCByZWNvcmRJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9y
VHlwZSB0CiAgICAgfSB3aGlsZSAoMCkKIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2Fj
dGlvbj4KLXN0YXRpYyBib29sIGdldEJvb2woREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVj
dG9yPGNoYXI+JiBrZXksIGJvb2wmIGZvdW5kQm9vbCkKK3N0YXRpYyBib29sIGdldEJvb2woREJP
clRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGJvb2wmIGZvdW5kQm9v
bCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwogICAgIGlmICghZGItPmdldChrZXksIHJl
c3VsdCkpCkBAIC04MywxNCArODMsMTMgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbChEQk9yVHJhbnNh
Y3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9vbCYgZm91bmRCb28KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0
YXRpYyBib29sIHB1dEJvb2woREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+
JiBrZXksIGJvb2wgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRCb29sKExldmVsREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBib29sIHZhbHVlKQogewot
ICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2RlQm9vbCh2YWx1ZSkpOworICAgIHRyYW5zYWN0
aW9uLT5wdXQoa2V5LCBlbmNvZGVCb29sKHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRJbnQoREJPclRyYW5zYWN0aW9uKiBk
YiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QmIGZvdW5kSW50KQorc3RhdGljIGJv
b2wgZ2V0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBp
bnQ2NF90JiBmb3VuZEludCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwogICAgIGlmICgh
ZGItPmdldChrZXksIHJlc3VsdCkpCkBAIC0xMDAsMTcgKzk5LDE0IEBAIHN0YXRpYyBib29sIGdl
dEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRf
dCYgZm91bmRJCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEQk9y
VHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBwdXRJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRJbnQo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXks
IGludDY0X3QgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlID49IDApOwotICAgIGlmICh2YWx1
ZSA8IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZGItPnB1dChrZXksIGVu
Y29kZUludCh2YWx1ZSkpOworICAgIHRyYW5zYWN0aW9uLT5wdXQoa2V5LCBlbmNvZGVJbnQodmFs
dWUpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBi
b29sIGdldFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtl
eSwgaW50NjRfdCYgZm91bmRJbnQpCitzdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0
aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QmIGZvdW5kSW50KQogewog
ICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CiAgICAgaWYgKCFkYi0+Z2V0KGtleSwgcmVzdWx0KSkK
QEAgLTExOSwxNCArMTE1LDEzIEBAIHN0YXRpYyBib29sIGdldFZhckludChEQk9yVHJhbnNhY3Rp
b24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCYgZm91CiAgICAgcmV0dXJu
IGRlY29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZEludCkgPT0g
cmVzdWx0LmVuZCgpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgot
c3RhdGljIGJvb2wgcHV0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQorc3RhdGljIHZvaWQgcHV0VmFySW50KExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBpbnQ2NF90
IHZhbHVlKQogewotICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2RlVmFySW50KHZhbHVlKSk7
CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVuY29kZVZhckludCh2YWx1ZSkpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wgZ2V0U3RyaW5n
KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBTdHJpbmcmIGZv
dW5kU3RyaW5nKQorc3RhdGljIGJvb2wgZ2V0U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNv
bnN0IExldmVsREJTbGljZSYga2V5LCBTdHJpbmcmIGZvdW5kU3RyaW5nKQogewogICAgIFZlY3Rv
cjxjaGFyPiByZXN1bHQ7CiAgICAgaWYgKCFkYi0+Z2V0KGtleSwgcmVzdWx0KSkKQEAgLTEzNiwy
MCArMTMxLDE0IEBAIHN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBj
b25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgU3RyaW5nJiBmb3VuCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBwdXRT
dHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1dFN0cmluZyhMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBpZiAoIWRiLT5wdXQoa2V5LCBlbmNvZGVTdHJpbmcodmFsdWUpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIHRyYW5zYWN0aW9uLT5wdXQo
a2V5LCBlbmNvZGVTdHJpbmcodmFsdWUpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JU
cmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIHB1dElEQktleVBhdGgoREJPclRyYW5zYWN0aW9uKiBk
YiwgY29uc3QgVmVjdG9yPGNoYXI+IGtleSwgY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCitzdGF0
aWMgdm9pZCBwdXRJREJLZXlQYXRoKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNv
bnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBJREJLZXlQYXRoJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoIWRiLT5wdXQoa2V5LCBlbmNvZGVJREJLZXlQYXRoKHZhbHVlKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB0cmFuc2FjdGlvbi0+cHV0KGtleSwgZW5j
b2RlSURCS2V5UGF0aCh2YWx1ZSkpOwogfQogCiBzdGF0aWMgaW50IGNvbXBhcmVLZXlzKGNvbnN0
IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQpAQCAtMTgxLDUwICsxNzAs
MzcgQEAgc3RhdGljIGJvb2wgaXNTY2hlbWFLbm93bihMZXZlbERCRGF0YWJhc2UqIGRiKQogc3Rh
dGljIGJvb2wgc2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcm
IG9yaWdpbikKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWV0YURhdGFLZXkgPSBTY2hlbWFW
ZXJzaW9uS2V5OjplbmNvZGUoKTsKKyAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFu
c2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGRiKTsKIAogICAgIGludDY0X3Qg
c2NoZW1hVmVyc2lvbiA9IDA7Ci0gICAgaWYgKCFnZXRJbnQoZGIsIG1ldGFEYXRhS2V5LCBzY2hl
bWFWZXJzaW9uKSkgeworICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0
YUtleSwgc2NoZW1hVmVyc2lvbikpIHsKICAgICAgICAgc2NoZW1hVmVyc2lvbiA9IGxhdGVzdFNj
aGVtYVZlcnNpb247Ci0gICAgICAgIGlmICghcHV0SW50KGRiLCBtZXRhRGF0YUtleSwgbGF0ZXN0
U2NoZW1hVmVyc2lvbikpIHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9CisgICAgICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgbWV0YURhdGFLZXksIGxhdGVz
dFNjaGVtYVZlcnNpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChzY2hlbWFWZXJz
aW9uIDw9IGxhdGVzdFNjaGVtYVZlcnNpb24pOwogICAgICAgICBpZiAoIXNjaGVtYVZlcnNpb24p
IHsKICAgICAgICAgICAgIHNjaGVtYVZlcnNpb24gPSBsYXRlc3RTY2hlbWFWZXJzaW9uOwotICAg
ICAgICAgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERC
VHJhbnNhY3Rpb246OmNyZWF0ZShkYik7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+cHV0KG1l
dGFEYXRhS2V5LCBlbmNvZGVJbnQoc2NoZW1hVmVyc2lvbikpOwotCisgICAgICAgICAgICBwdXRJ
bnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBzY2hlbWFWZXJzaW9uKTsKICAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5j
b2RlTWluS2V5Rm9yT3JpZ2luKG9yaWdpbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gc3RvcEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlU3RvcEtleUZvck9yaWdpbihvcmln
aW4pOwogICAgICAgICAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBkYi0+Y3JlYXRl
SXRlcmF0b3IoKTsKICAgICAgICAgICAgIGZvciAoaXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNW
YWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgp
KSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwotICAgICAgICAgICAgICAg
IGJvb2wgb2sgPSB0cmFuc2FjdGlvbi0+Z2V0KGl0LT5rZXkoKSwgdmFsdWUpOwotICAgICAgICAg
ICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSAw
OworICAgICAgICAgICAgICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBpdC0+a2V5
KCksIGRhdGFiYXNlSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW50IGRhdGFiYXNl
SWQgPSBkZWNvZGVJbnQodmFsdWUuYmVnaW4oKSwgdmFsdWUuZW5kKCkpOwogICAgICAgICAgICAg
ICAgIFZlY3RvcjxjaGFyPiBpbnRWZXJzaW9uS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKTsKLSAg
ICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+cHV0KGludFZlcnNpb25LZXksIGVuY29kZVZhcklu
dChJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbikpOwotICAgICAgICAgICAg
ICAgIG9rID0gdHJhbnNhY3Rpb24tPmdldChpdC0+a2V5KCksIHZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBib29s
IG9rID0gdHJhbnNhY3Rpb24tPmNvbW1pdCgpOwotICAgICAgICAgICAgaWYgKCFvaykgewotICAg
ICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJy
b3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBwdXRW
YXJJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGludFZlcnNpb25LZXksIElEQkRhdGFiYXNlTWV0YWRh
dGE6OkRlZmF1bHRJbnRWZXJzaW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IAogICAgIEFTU0VSVChzY2hlbWFWZXJzaW9uID09IGxhdGVzdFNjaGVtYVZlcnNpb24pOwotCisg
ICAgaWYgKCF0cmFuc2FjdGlvbi0+Y29tbWl0KCkpIHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM4OCwxNiArMzY0LDIwIEBAIGJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIElEQkRhdGFiCiAKIHN0YXRpYyBpbnQ2NF90IGdldE5ld0RhdGFiYXNlSWQoTGV2
ZWxEQkRhdGFiYXNlKiBkYikKIHsKKyAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFu
c2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGRiKTsKKwogICAgIGludDY0X3Qg
bWF4RGF0YWJhc2VJZCA9IC0xOwotICAgIGlmICghZ2V0SW50KGRiLCBNYXhEYXRhYmFzZUlkS2V5
OjplbmNvZGUoKSwgbWF4RGF0YWJhc2VJZCkpCisgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24u
Z2V0KCksIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBtYXhEYXRhYmFzZUlkKSkKICAgICAg
ICAgbWF4RGF0YWJhc2VJZCA9IDA7CiAKICAgICBBU1NFUlQobWF4RGF0YWJhc2VJZCA+PSAwKTsK
IAogICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IG1heERhdGFiYXNlSWQgKyAxOwotICAgIGlmICgh
cHV0SW50KGRiLCBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKSwgZGF0YWJhc2VJZCkpCisgICAg
cHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKSwgZGF0
YWJhc2VJZCk7CisgICAgaWYgKCF0cmFuc2FjdGlvbi0+Y29tbWl0KCkpIHsKKyAgICAgICAgSW50
ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJl
dHVybiAtMTsKLQorICAgIH0KICAgICByZXR1cm4gZGF0YWJhc2VJZDsKIH0KIApAQCAtNDA3LDE4
ICszODcsMTQgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QKICAgICBpZiAocm93SWQgPCAwKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0
YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKLSAgICBpZiAoIXB1dElu
dChtX2RiLmdldCgpLCBrZXksIHJvd0lkKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxl
dmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICBpZiAoIXB1dFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbikp
IHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJv
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgaWYgKGludFZlcnNpb24gPT0g
SURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQogICAgICAgICBpbnRWZXJzaW9uID0g
SURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb247Ci0gICAgaWYgKCFwdXRWYXJJ
bnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFz
ZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGludFZlcnNpb24pKSB7CisKKyAgICBSZWZQ
dHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6
Y3JlYXRlKG1fZGIuZ2V0KCkpOworICAgIHB1dEludCh0cmFuc2FjdGlvbi5nZXQoKSwgRGF0YWJh
c2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKSwgcm93SWQpOworICAgIHB1dFN0
cmluZyh0cmFuc2FjdGlvbi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lk
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIHZlcnNpb24pOworICAgIHB1dFZh
ckludCh0cmFuc2FjdGlvbi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lk
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGludFZlcnNpb24pOworICAg
IGlmICghdHJhbnNhY3Rpb24tPmNvbW1pdCgpKSB7CiAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtNDMwLDM0ICs0MDYsMjEgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjp1
cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oSURCQmFja2luZ1N0b3JlOjpUcmFuc2EKICAgICBp
ZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAgICAg
ICAgIGludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGludFZlcnNpb24gPj0gMCwgImludFZlcnNpb24gd2Fz
ICVsbGQiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGludFZlcnNpb24pKTsKLSAgICBpZiAoIXB1
dFZhckludChUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbiks
IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6
VXNlckludFZlcnNpb24pLCBpbnRWZXJzaW9uKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElE
QkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KKyAgICBwdXRWYXJJbnQoVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20o
dHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbik7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VN
ZXRhRGF0YShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewotICAgIGlmICghcHV0U3RyaW5nKFRy
YW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKSwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lv
biksIHZlcnNpb24pKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCisgICAgcHV0
U3RyaW5nKFRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKSwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpV
c2VyVmVyc2lvbiksIHZlcnNpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9v
bCBkZWxldGVSYW5nZShMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIGJlZ2luLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGVuZCkKK3N0YXRpYyB2b2lkIGRl
bGV0ZVJhbmdlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgYmVnaW4sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5kKQogewogICAgIE93blB0cjxMZXZl
bERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7Ci0gICAgZm9y
IChpdC0+c2VlayhiZWdpbik7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgp
LCBlbmQpIDwgMDsgaXQtPm5leHQoKSkgewotICAgICAgICBpZiAoIXRyYW5zYWN0aW9uLT5yZW1v
dmUoaXQtPmtleSgpKSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGl0LT5zZWVrKGJlZ2luKTsg
aXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIGVuZCkgPCAwOyBpdC0+bmV4
dCgpKQorICAgICAgICB0cmFuc2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXkoKSk7CiB9CiAKIApAQCAt
NTk3LDEwICs1NjAsNyBAQCBzdGF0aWMgYm9vbCBzZXRNYXhPYmplY3RTdG9yZUlkKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhcwogICAgICAgICBJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVDb25zaXN0ZW5jeUVycm9yKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIXB1dEludCh0cmFuc2FjdGlvbiwgbWF4T2Jq
ZWN0U3RvcmVJZEtleSwgb2JqZWN0U3RvcmVJZCkpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBvYmpl
Y3RTdG9yZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjIxLDYwICs1ODEsMTUgQEAg
Ym9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmEKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJh
dG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5lcmF0
b3JDdXJyZW50TnVtYmVyKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZXNLZXkgPSBPYmpl
Y3RTdG9yZU5hbWVzS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgbmFtZSk7CiAKLSAgICBib29sIG9r
ID0gcHV0U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZUtleSwgbmFtZSk7Ci0gICAgaWYg
KCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0
ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SURC
S2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXksIGtleVBhdGgpOwotICAgIGlm
ICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3Jp
dGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dElu
dChsZXZlbERCVHJhbnNhY3Rpb24sIGF1dG9JbmNyZW1lbnRLZXksIGF1dG9JbmNyZW1lbnQpOwot
ICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9
IHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGV2aWN0YWJsZUtleSwgZmFsc2UpOwotICAgIGlm
ICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3Jp
dGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dElu
dChsZXZlbERCVHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5LCAxKTsKLSAgICBpZiAoIW9rKSB7
Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3Ip
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJbnQobGV2ZWxE
QlRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBNaW5pbXVtSW5kZXhJZCk7Ci0gICAgaWYgKCFv
aykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0Qm9vbChs
ZXZlbERCVHJhbnNhY3Rpb24sIGhhc0tleVBhdGhLZXksICFrZXlQYXRoLmlzTnVsbCgpKTsKLSAg
ICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBw
dXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBL
ZXlHZW5lcmF0b3JJbml0aWFsTnVtYmVyKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBu
YW1lc0tleSwgb2JqZWN0U3RvcmVJZCk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQorICAgIHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVL
ZXksIG5hbWUpOworICAgIHB1dElEQktleVBhdGgobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlQYXRo
S2V5LCBrZXlQYXRoKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBhdXRvSW5jcmVt
ZW50S2V5LCBhdXRvSW5jcmVtZW50KTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBl
dmljdGFibGVLZXksIGZhbHNlKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBsYXN0
VmVyc2lvbktleSwgMSk7CisgICAgcHV0SW50KGxldmVsREJUcmFuc2FjdGlvbiwgbWF4SW5kZXhJ
ZEtleSwgTWluaW11bUluZGV4SWQpOworICAgIHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCBo
YXNLZXlQYXRoS2V5LCAha2V5UGF0aC5pc051bGwoKSk7CisgICAgcHV0SW50KGxldmVsREJUcmFu
c2FjdGlvbiwga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwgS2V5R2VuZXJhdG9ySW5pdGlh
bE51bWJlcik7CisgICAgcHV0SW50KGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZXNLZXksIG9iamVj
dFN0b3JlSWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02ODYsMjEgKzYwMSwxMiBAQCB2
b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYQogICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWU7CiAgICAg
Z2V0U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5h
bWUpLCBvYmplY3RTdG9yZU5hbWUpOwogCi0gICAgaWYgKCFkZWxldGVSYW5nZShsZXZlbERCVHJh
bnNhY3Rpb24sIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCAwKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQpKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogUmVw
b3J0IGVycm9yLgotICAgIH0KKyAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIE9i
amVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAw
KSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQpKTsKIAogICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cmVtb3ZlKE9iamVjdFN0b3Jl
TmFtZXNLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZU5hbWUpKTsKIAotICAgIGlm
ICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBJbmRleEZyZWVMaXN0S2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCksIEluZGV4RnJlZUxpc3RLZXk6OmVuY29k
ZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkpIHsKLSAgICAgICAgSW50ZXJuYWxF
cnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsg
Ly8gRklYTUU6IFJlcG9ydCBlcnJvci4KLSAgICB9Ci0gICAgaWYgKCFkZWxldGVSYW5nZShsZXZl
bERCVHJhbnNhY3Rpb24sIEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCAwLCAwKSwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQpKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogUmVwb3J0
IGVycm9yLgotICAgIH0KKyAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgSW5kZXhG
cmVlTGlzdEtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKTsKKyAg
ICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKSwgSW5kZXhNZXRhRGF0YUtleTo6ZW5j
b2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKTsKIAogICAgIGNsZWFyT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwogfQpAQCAtNzU5
LDggKzY2NSw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2ZWxEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgQVNTRVJUKGxhc3RWZXJz
aW9uID49IDApOwogCiAgICAgaW50NjRfdCB2ZXJzaW9uID0gbGFzdFZlcnNpb24gKyAxOwotICAg
IGJvb2wgb2sgPSBwdXRJbnQodHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5LCB2ZXJzaW9uKTsK
LSAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgcHV0SW50KHRyYW5zYWN0aW9uLCBsYXN0
VmVyc2lvbktleSwgdmVyc2lvbik7CiAKICAgICBBU1NFUlQodmVyc2lvbiA+IGxhc3RWZXJzaW9u
KTsgLy8gRklYTUU6IFRoaW5rIGFib3V0IGhvdyB3ZSB3YW50IHRvIGhhbmRsZSB0aGUgb3ZlcmZs
b3cgc2NlbmFyaW8uCiAKQEAgLTc3OSwxNiArNjg0LDEwIEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6cHV0T2JqZWN0U3RvcmVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
bioKICAgICB2LmFwcGVuZChlbmNvZGVWYXJJbnQodmVyc2lvbikpOwogICAgIHYuYXBwZW5kKGVu
Y29kZVN0cmluZyh2YWx1ZSkpOwogCi0gICAgaWYgKCFsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChv
YmplY3RTdG9yZWRhdGFLZXksIHYpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KG9iamVjdFN0b3JlZGF0YUtleSwgdik7CiAKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7Ci0gICAgaWYgKCFsZXZlbERCVHJh
bnNhY3Rpb24tPnB1dChleGlzdHNFbnRyeUtleSwgZW5jb2RlSW50KHZlcnNpb24pKSkgewotICAg
ICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChl
eGlzdHNFbnRyeUtleSwgZW5jb2RlSW50KHZlcnNpb24pKTsKIAogICAgIExldmVsREJSZWNvcmRJ
ZGVudGlmaWVyKiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PExldmVsREJS
ZWNvcmRJZGVudGlmaWVyKj4ocmVjb3JkSWRlbnRpZmllcik7CiAgICAgbGV2ZWxEQlJlY29yZElk
ZW50aWZpZXItPnNldFByaW1hcnlLZXkoZW5jb2RlSURCS2V5KGtleSkpOwpAQCAtODc4LDExICs3
NzcsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJh
dG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcgogICAgIH0KIAogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OktleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOwotICAgIGJvb2wgb2sgPSBwdXRJbnQo
bGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1i
ZXIpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAg
cHV0SW50KGxldmVsREJUcmFuc2FjdGlvbiwga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwg
bmV3TnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTAyMiwxMCArOTE3LDcgQEAg
c3RhdGljIGJvb2wgc2V0TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGlmICghcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBpbmRleElkKSkgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBwdXRJbnQodHJhbnNhY3Rpb24sIG1h
eEluZGV4SWRLZXksIGluZGV4SWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDQxLDMw
ICs5MzMsMTAgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGkKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4ga2V5UGF0aEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjpLZXlQYXRoKTsKICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gbXVsdGlFbnRyeUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjpNdWx0
aUVudHJ5KTsKIAotICAgIGJvb2wgb2sgPSBwdXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBu
YW1lS2V5LCBuYW1lKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgb2sgPSBwdXRCb29sKGxldmVsREJUcmFuc2FjdGlvbiwgdW5pcXVlS2V5LCBp
c1VuaXF1ZSk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIG9rID0gcHV0SURCS2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXks
IGtleVBhdGgpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBvayA9IHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCBtdWx0aUVudHJ5S2V5LCBp
c011bHRpRW50cnkpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJM
ZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KKyAgICBwdXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBuYW1lS2V5LCBuYW1lKTsK
KyAgICBwdXRCb29sKGxldmVsREJUcmFuc2FjdGlvbiwgdW5pcXVlS2V5LCBpc1VuaXF1ZSk7Cisg
ICAgcHV0SURCS2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXksIGtleVBhdGgp
OworICAgIHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCBtdWx0aUVudHJ5S2V5LCBpc011bHRp
RW50cnkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDc1LDE5ICs5NDcsMTEgQEAgdm9p
ZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGkKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleE1ldGFE
YXRhU3RhcnQgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4TWV0YURhdGFF
bmQgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCk7Ci0KLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlv
biwgaW5kZXhNZXRhRGF0YVN0YXJ0LCBpbmRleE1ldGFEYXRhRW5kKSkgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4TWV0
YURhdGFTdGFydCwgaW5kZXhNZXRhRGF0YUVuZCk7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
aW5kZXhEYXRhU3RhcnQgPSBJbmRleERhdGFLZXk6OmVuY29kZU1pbktleShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRh
RW5kID0gSW5kZXhEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCk7Ci0KLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwg
aW5kZXhEYXRhU3RhcnQsIGluZGV4RGF0YUVuZCkpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleERhdGFTdGFydCwgaW5k
ZXhEYXRhRW5kKTsKIH0KIAogYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERh
dGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleSYga2V5LCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqIHJl
Y29yZElkZW50aWZpZXIpCkBAIC0xMTA0LDcgKzk2OCw4IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qCiAgICAgZGF0YS5hcHBlbmQoZW5jb2RlVmFySW50KGxldmVsREJSZWNvcmRJZGVudGlmaWVy
LT52ZXJzaW9uKCkpKTsKICAgICBkYXRhLmFwcGVuZChsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+
cHJpbWFyeUtleSgpKTsKIAotICAgIHJldHVybiBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChpbmRl
eERhdGFLZXksIGRhdGEpOworICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtl
eSwgZGF0YSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGZpbmRHcmVhdGVz
dEtleUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHRhcmdldCwgVmVjdG9yPGNoYXI+JiBmb3VuZEtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNw
cAppbmRleCA4ZmUzZmQwOGVkYjI3OWJjZTM4NDUwZDVjN2I5YmJhMDE3NDc1OTUzLi5iZjVjY2Ji
N2Y4MDJhNDU2YTgyZDZmZDU4MTM0ZjlmOTQ0OTdiYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHN0YXRpYyB2b2lkIGluaXRWZWN0b3IoY29uc3QgTGV2ZWxEQlNsaWNlJiBzbGlj
ZSwgVmVjdG9yPGNoYXI+KiB2ZWN0b3IpCiAgICAgdmVjdG9yLT5hcHBlbmQoc2xpY2UuYmVnaW4o
KSwgc2xpY2UuZW5kKCkgLSBzbGljZS5iZWdpbigpKTsKIH0KIAotYm9vbCBMZXZlbERCVHJhbnNh
Y3Rpb246OnNldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2
YWx1ZSwgYm9vbCBkZWxldGVkKQordm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwgYm9vbCBkZWxldGVk
KQogewogICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CiAgICAgYm9vbCBuZXdOb2RlID0gZmFsc2U7
CkBAIC05MywxNyArOTMsMTYgQEAgYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwKIAogICAgIGlmIChu
ZXdOb2RlKQogICAgICAgICBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsKLSAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnB1dChjb25zdCBMZXZlbERC
U2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKK3ZvaWQgTGV2ZWxEQlRyYW5z
YWN0aW9uOjpwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIHNldChrZXksIHZhbHVlLCBmYWxzZSk7CisgICAgc2V0KGtl
eSwgdmFsdWUsIGZhbHNlKTsKIH0KIAotYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92ZShj
b25zdCBMZXZlbERCU2xpY2UmIGtleSkKK3ZvaWQgTGV2ZWxEQlRyYW5zYWN0aW9uOjpyZW1vdmUo
Y29uc3QgTGV2ZWxEQlNsaWNlJiBrZXkpCiB7Ci0gICAgcmV0dXJuIHNldChrZXksIFZlY3Rvcjxj
aGFyPigpLCB0cnVlKTsKKyAgICBzZXQoa2V5LCBWZWN0b3I8Y2hhcj4oKSwgdHJ1ZSk7CiB9CiAK
IGJvb2wgTGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZl
Y3RvcjxjaGFyPiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAppbmRleCA4MGEzMzVkNDdhMDEwYWY0ZDM4MmE1ZjE1
YTE5NDU5MTczNzQ0ZjVmLi44NWI3MzRmZjA0Y2ZjZWI5Y2I2MzUyZjI3MjliMmQ1NDMyMGMxMDky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRy
YW5zYWN0aW9uLmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPExldmVsREJUcmFuc2FjdGlvbj4gY3JlYXRlKExldmVsREJEYXRhYmFzZSopOwogCiAgICAg
fkxldmVsREJUcmFuc2FjdGlvbigpOwotICAgIGJvb2wgcHV0KGNvbnN0IExldmVsREJTbGljZSYg
a2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKLSAgICBib29sIHJlbW92ZShjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSk7CisgICAgdm9pZCBwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXks
IGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IExldmVs
REJTbGljZSYga2V5KTsKICAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVj
dG9yPGNoYXI+JiB2YWx1ZSk7CiAgICAgYm9vbCBjb21taXQoKTsKICAgICB2b2lkIHJvbGxiYWNr
KCk7CkBAIC0xNTcsNyArMTU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBib29sIG1f
dHJlZUNoYW5nZWQ7CiAgICAgfTsKIAotICAgIGJvb2wgc2V0KGNvbnN0IExldmVsREJTbGljZSYg
a2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29sIGRlbGV0ZWQpOworICAgIHZvaWQg
c2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBi
b29sIGRlbGV0ZWQpOwogICAgIHZvaWQgY2xlYXJUcmVlKCk7CiAgICAgdm9pZCByZWdpc3Rlckl0
ZXJhdG9yKFRyYW5zYWN0aW9uSXRlcmF0b3IqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJJdGVyYXRv
cihUcmFuc2FjdGlvbkl0ZXJhdG9yKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172443</attachid>
            <date>2012-11-05 16:57:11 -0800</date>
            <delta_ts>2012-11-08 12:44:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100700-20121105165525.patch</filename>
            <type>text/plain</type>
            <size>25665</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhiMGMwMTEyMWEzODRj
MjI1Y2U0MDhmNGI0YTkwYWRiOWQ5YjFjNi4uNjg3MzliNDQwZmE3YzdkM2FhYjlkMTAzNTM3Zjkz
MjgzZDJhYjRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgdW51c2VkIGVycm9yIGhhbmRsaW5nIGNsYXVzZXMgd2hlbiB3cml0aW5nIHRvIHRyYW5zYWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2FjdGlvbnMgYXJlIHdyaXR0ZW4gaW50byBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLiBUaGlz
IGNhbiBvbmx5IGZhaWwgaWYgYWxsb2NhdGlvbgorICAgICAgICBmYWlscywgc28gInN1Y2Nlc3Mi
IHJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZC4gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZXMgdG8g
dm9pZCwgYW5kIGRlbGV0ZQorICAgICAgICBhbGwgb2YgdGhlIHVucmVhY2hhYmxlIGVycm9yIGhh
bmRsaW5nIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0ganVzdCByZWZhY3RvcmluZy9k
ZWFkIGNvZGUgcmVtb3ZhbC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHV0Qm9vbCk6IE9ubHkgd3Jp
dGUgdG8gdHJhbnNhY3Rpb25zLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpwdXRJbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnB1dFZhckludCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6cHV0U3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpw
dXRJREJLZXlQYXRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpkZWxldGVSYW5nZSk6IFdyaXRlcyBvbmx5IHRvIHRyYW5zYWN0aW9uLCBz
byBjYW4ndCBmYWlsLgorICAgICAgICAoV2ViQ29yZTo6c2V0TWF4T2JqZWN0U3RvcmVJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXROZXdWZXJzaW9uTnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dE9iamVjdFN0b3JlUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2Vu
ZXJhdG9yQ3VycmVudE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhJbmRleElkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZv
clJlY29yZCk6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpzZXQpOiBSZXR1cm4g
dHlwZSBpcyB2b2lkLgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpwdXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6cmVtb3ZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaDoK
KyAgICAgICAgKExldmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTEtMDUgIEhhbnMgTXVsbGVy
ICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBMYXlvdXQg
b2YgdGhlIGZpcnN0IHNoYXBlLWluc2lkZSBsaW5lIGNhbiBiZSBpbmNvcnJlY3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggZWE1ZDU5ZmUzZTg0MWNiMjRlMTliM2ZiNjJhM2ZmMzVlYjM3MDY4
My4uNjhiODE3YzAxZTUyNTBmNmE3MDE2ZWRiNmRlNDExN2VlNzMxYjljZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JUeXBlIHQKICAg
ICB9IHdoaWxlICgwKQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3Rh
dGljIGJvb2wgZ2V0Qm9vbChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleSwgYm9vbCYgZm91bmRCb29sKQorc3RhdGljIGJvb2wgZ2V0Qm9vbChEQk9yVHJhbnNhY3Rp
b24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgYm9vbCYgZm91bmRCb29sKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXN1bHQ7CiAgICAgaWYgKCFkYi0+Z2V0KGtleSwgcmVzdWx0KSkKQEAg
LTgzLDE0ICs4MywxMyBAQCBzdGF0aWMgYm9vbCBnZXRCb29sKERCT3JUcmFuc2FjdGlvbiogZGIs
IGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBib29sJiBmb3VuZEJvbwogICAgIHJldHVybiB0cnVl
OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wg
cHV0Qm9vbChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9v
bCB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1dEJvb2woTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGJvb2wgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGRiLT5wdXQoa2V5LCBlbmNvZGVCb29sKHZhbHVlKSk7CisgICAgdHJhbnNhY3Rpb24tPnB1dChr
ZXksIGVuY29kZUJvb2wodmFsdWUpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFu
c2FjdGlvbj4KLXN0YXRpYyBib29sIGdldEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIGtleSwgaW50NjRfdCYgZm91bmRJbnQpCitzdGF0aWMgYm9vbCBnZXRJbnQo
REJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QmIGZv
dW5kSW50KQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CiAgICAgaWYgKCFkYi0+Z2V0KGtl
eSwgcmVzdWx0KSkKQEAgLTEwMCwxNyArOTksMTQgQEAgc3RhdGljIGJvb2wgZ2V0SW50KERCT3JU
cmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3VuZEkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlv
bj4KLXN0YXRpYyBib29sIHB1dEludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8
Y2hhcj4mIGtleSwgaW50NjRfdCB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1dEludChMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCB2
YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUgPj0gMCk7Ci0gICAgaWYgKHZhbHVlIDwgMCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBkYi0+cHV0KGtleSwgZW5jb2RlSW50KHZh
bHVlKSk7CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVuY29kZUludCh2YWx1ZSkpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wgZ2V0VmFy
SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90
JiBmb3VuZEludCkKK3N0YXRpYyBib29sIGdldFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBj
b25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQpCiB7CiAgICAgVmVjdG9y
PGNoYXI+IHJlc3VsdDsKICAgICBpZiAoIWRiLT5nZXQoa2V5LCByZXN1bHQpKQpAQCAtMTE5LDE0
ICsxMTUsMTMgQEAgc3RhdGljIGJvb2wgZ2V0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNv
bnN0IFZlY3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90JiBmb3UKICAgICByZXR1cm4gZGVjb2RlVmFy
SW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGZvdW5kSW50KSA9PSByZXN1bHQuZW5k
KCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9v
bCBwdXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXks
IGludDY0X3QgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRWYXJJbnQoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVWYXJJbnQodmFsdWUpKTsKKyAgICB0cmFu
c2FjdGlvbi0+cHV0KGtleSwgZW5jb2RlVmFySW50KHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5z
YWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcp
CitzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJl
c3VsdDsKICAgICBpZiAoIWRiLT5nZXQoa2V5LCByZXN1bHQpKQpAQCAtMTM2LDIwICsxMzEsMTQg
QEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3Rv
cjxjaGFyPiYga2V5LCBTdHJpbmcmIGZvdW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIHB1dFN0cmluZyhEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBTdHJpbmcmIHZh
bHVlKQorc3RhdGljIHZvaWQgcHV0U3RyaW5nKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IGlmICghZGItPnB1dChrZXksIGVuY29kZVN0cmluZyh2YWx1ZSkpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVuY29k
ZVN0cmluZyh2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9u
Pgotc3RhdGljIGJvb2wgcHV0SURCS2V5UGF0aChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBW
ZWN0b3I8Y2hhcj4ga2V5LCBjb25zdCBJREJLZXlQYXRoJiB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1
dElEQktleVBhdGgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQogewotICAgIGlmICghZGItPnB1
dChrZXksIGVuY29kZUlEQktleVBhdGgodmFsdWUpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0cnVlOworICAgIHRyYW5zYWN0aW9uLT5wdXQoa2V5LCBlbmNvZGVJREJLZXlQ
YXRoKHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBpbnQgY29tcGFyZUtleXMoY29uc3QgTGV2ZWxEQlNs
aWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIpCkBAIC0xODEsNTAgKzE3MCwzNyBAQCBzdGF0
aWMgYm9vbCBpc1NjaGVtYUtub3duKExldmVsREJEYXRhYmFzZSogZGIpCiBzdGF0aWMgYm9vbCBz
ZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQog
ewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtZXRhRGF0YUtleSA9IFNjaGVtYVZlcnNpb25LZXk6
OmVuY29kZSgpOworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoZGIpOwogCiAgICAgaW50NjRfdCBzY2hlbWFWZXJz
aW9uID0gMDsKLSAgICBpZiAoIWdldEludChkYiwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24p
KSB7CisgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBzY2hl
bWFWZXJzaW9uKSkgewogICAgICAgICBzY2hlbWFWZXJzaW9uID0gbGF0ZXN0U2NoZW1hVmVyc2lv
bjsKLSAgICAgICAgaWYgKCFwdXRJbnQoZGIsIG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hlbWFWZXJz
aW9uKSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAg
ICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgbGF0ZXN0U2NoZW1hVmVy
c2lvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKHNjaGVtYVZlcnNpb24gPD0gbGF0
ZXN0U2NoZW1hVmVyc2lvbik7CiAgICAgICAgIGlmICghc2NoZW1hVmVyc2lvbikgewogICAgICAg
ICAgICAgc2NoZW1hVmVyc2lvbiA9IGxhdGVzdFNjaGVtYVZlcnNpb247Ci0gICAgICAgICAgICBS
ZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKGRiKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5wdXQobWV0YURhdGFLZXks
IGVuY29kZUludChzY2hlbWFWZXJzaW9uKSk7Ci0KKyAgICAgICAgICAgIHB1dEludCh0cmFuc2Fj
dGlvbi5nZXQoKSwgbWV0YURhdGFLZXksIHNjaGVtYVZlcnNpb24pOwogICAgICAgICAgICAgY29u
c3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGVNaW5LZXlG
b3JPcmlnaW4ob3JpZ2luKTsKICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5
ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGVTdG9wS2V5Rm9yT3JpZ2luKG9yaWdpbik7CiAgICAg
ICAgICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IGRiLT5jcmVhdGVJdGVyYXRvcigp
OwogICAgICAgICAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYg
Y29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsKLSAgICAg
ICAgICAgICAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7Ci0gICAgICAgICAgICAgICAgYm9vbCBvayA9
IHRyYW5zYWN0aW9uLT5nZXQoaXQtPmtleSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFvaykgeworICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IDA7CisgICAgICAg
ICAgICAgICAgaWYgKCFnZXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIGl0LT5rZXkoKSwgZGF0YWJh
c2VJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlUmVhZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgZGF0YWJhc2VJZCA9IGRlY29k
ZUludCh2YWx1ZS5iZWdpbigpLCB2YWx1ZS5lbmQoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PGNoYXI+IGludFZlcnNpb25LZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pOwotICAgICAgICAgICAg
ICAgIHRyYW5zYWN0aW9uLT5wdXQoaW50VmVyc2lvbktleSwgZW5jb2RlVmFySW50KElEQkRhdGFi
YXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKSk7Ci0gICAgICAgICAgICAgICAgb2sgPSB0
cmFuc2FjdGlvbi0+Z2V0KGl0LT5rZXkoKSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGlmICgh
b2spIHsKLSAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2lu
Z1N0b3JlUmVhZEVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cmFu
c2FjdGlvbi0+Y29tbWl0KCk7Ci0gICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAg
ICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHB1dFZhckludCh0cmFu
c2FjdGlvbi5nZXQoKSwgaW50VmVyc2lvbktleSwgSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVs
dEludFZlcnNpb24pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgQVNT
RVJUKHNjaGVtYVZlcnNpb24gPT0gbGF0ZXN0U2NoZW1hVmVyc2lvbik7Ci0KKyAgICBpZiAoIXRy
YW5zYWN0aW9uLT5jb21taXQoKSkgeworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzg4LDE2ICszNjQsMjAgQEAgYm9vbCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCRGF0YWIKIAogc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJh
c2UqIGRiKQogeworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoZGIpOworCiAgICAgaW50NjRfdCBtYXhEYXRhYmFz
ZUlkID0gLTE7Ci0gICAgaWYgKCFnZXRJbnQoZGIsIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgp
LCBtYXhEYXRhYmFzZUlkKSkKKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgTWF4
RGF0YWJhc2VJZEtleTo6ZW5jb2RlKCksIG1heERhdGFiYXNlSWQpKQogICAgICAgICBtYXhEYXRh
YmFzZUlkID0gMDsKIAogICAgIEFTU0VSVChtYXhEYXRhYmFzZUlkID49IDApOwogCiAgICAgaW50
NjRfdCBkYXRhYmFzZUlkID0gbWF4RGF0YWJhc2VJZCArIDE7Ci0gICAgaWYgKCFwdXRJbnQoZGIs
IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBkYXRhYmFzZUlkKSkKKyAgICBwdXRJbnQodHJh
bnNhY3Rpb24uZ2V0KCksIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBkYXRhYmFzZUlkKTsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uLT5jb21taXQoKSkgeworICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIC0xOwot
CisgICAgfQogICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCkBAIC00MDcsMTggKzM4NywxNCBA
QCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdAogICAgIGlmIChyb3dJZCA8IDApCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBEYXRhYmFzZU5hbWVL
ZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwotICAgIGlmICghcHV0SW50KG1fZGIuZ2V0
KCksIGtleSwgcm93SWQpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlm
ICghcHV0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJ
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCB2ZXJzaW9uKSkgewotICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAgICAgICAgIGludFZlcnNpb24gPSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKLSAgICBpZiAoIXB1dFZhckludChtX2RiLmdl
dCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFL
ZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpIHsKKworICAgIFJlZlB0cjxMZXZlbERC
VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobV9k
Yi5nZXQoKSk7CisgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU5hbWVLZXk6
OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpLCByb3dJZCk7CisgICAgcHV0U3RyaW5nKHRyYW5z
YWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbik7CisgICAgcHV0VmFySW50KHRyYW5z
YWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbik7CisgICAgaWYgKCF0cmFu
c2FjdGlvbi0+Y29tbWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00
MzAsMzQgKzQwNiwyMSBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRh
dGFiYXNlSW50VmVyc2lvbihJREJCYWNraW5nU3RvcmU6OlRyYW5zYQogICAgIGlmIChpbnRWZXJz
aW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAgICAgaW50VmVy
c2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOwogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaW50VmVyc2lvbiA+PSAwLCAiaW50VmVyc2lvbiB3YXMgJWxsZCIsIHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4oaW50VmVyc2lvbikpOwotICAgIGlmICghcHV0VmFySW50KFRy
YW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKSwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVy
c2lvbiksIGludFZlcnNpb24pKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAg
IHB1dFZhckludChUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlv
biksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtl
eTo6VXNlckludFZlcnNpb24pLCBpbnRWZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHJvd0lkLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgaWYgKCFwdXRTdHJpbmcoVHJhbnNhY3Rpb246
OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1ldGFEYXRhS2V5
OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lv
bikpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVF
cnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KKyAgICBwdXRTdHJpbmcoVHJh
bnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9u
KSwgdmVyc2lvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZVJh
bmdlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYg
YmVnaW4sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5kKQorc3RhdGljIHZvaWQgZGVsZXRlUmFuZ2Uo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWdp
biwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmQpCiB7CiAgICAgT3duUHRyPExldmVsREJJdGVyYXRv
cj4gaXQgPSB0cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKLSAgICBmb3IgKGl0LT5zZWVr
KGJlZ2luKTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIGVuZCkgPCAw
OyBpdC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmICghdHJhbnNhY3Rpb24tPnJlbW92ZShpdC0+a2V5
KCkpKSB7Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVX
cml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOworICAgIGZvciAoaXQtPnNlZWsoYmVnaW4pOyBpdC0+aXNWYWxp
ZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgZW5kKSA8IDA7IGl0LT5uZXh0KCkpCisgICAg
ICAgIHRyYW5zYWN0aW9uLT5yZW1vdmUoaXQtPmtleSgpKTsKIH0KIAogCkBAIC01OTcsMTAgKzU2
MCw3IEBAIHN0YXRpYyBib29sIHNldE1heE9iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzCiAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZUNvbnNpc3RlbmN5RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGlmICghcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlk
S2V5LCBvYmplY3RTdG9yZUlkKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICBwdXRJbnQodHJhbnNhY3Rpb24sIG1heE9iamVjdFN0b3JlSWRLZXksIG9iamVjdFN0b3JlSWQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MjEsNjAgKzU4MSwxNSBAQCBib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlHZW5lcmF0b3JDdXJyZW50
TnVtYmVyS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleUdlbmVyYXRvckN1cnJlbnRO
dW1iZXIpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lc0tleSA9IE9iamVjdFN0b3JlTmFt
ZXNLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBuYW1lKTsKIAotICAgIGJvb2wgb2sgPSBwdXRTdHJp
bmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBuYW1lS2V5LCBuYW1lKTsKLSAgICBpZiAoIW9rKSB7Ci0g
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJREJLZXlQYXRoKGxl
dmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7Ci0gICAgaWYgKCFvaykgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJU
cmFuc2FjdGlvbiwgYXV0b0luY3JlbWVudEtleSwgYXV0b0luY3JlbWVudCk7Ci0gICAgaWYgKCFv
aykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxl
dmVsREJUcmFuc2FjdGlvbiwgZXZpY3RhYmxlS2V5LCBmYWxzZSk7Ci0gICAgaWYgKCFvaykgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJU
cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIDEpOwotICAgIGlmICghb2spIHsKLSAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rp
b24sIG1heEluZGV4SWRLZXksIE1pbmltdW1JbmRleElkKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAg
ICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRCb29sKGxldmVsREJUcmFu
c2FjdGlvbiwgaGFzS2V5UGF0aEtleSwgIWtleVBhdGguaXNOdWxsKCkpOwotICAgIGlmICghb2sp
IHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJv
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZl
bERCVHJhbnNhY3Rpb24sIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIEtleUdlbmVyYXRv
ckluaXRpYWxOdW1iZXIpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVzS2V5LCBv
YmplY3RTdG9yZUlkKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCisgICAgcHV0U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZUtleSwgbmFtZSk7
CisgICAgcHV0SURCS2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXksIGtleVBh
dGgpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGF1dG9JbmNyZW1lbnRLZXksIGF1
dG9JbmNyZW1lbnQpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGV2aWN0YWJsZUtl
eSwgZmFsc2UpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5
LCAxKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBNaW5p
bXVtSW5kZXhJZCk7CisgICAgcHV0Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIGhhc0tleVBhdGhL
ZXksICFrZXlQYXRoLmlzTnVsbCgpKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBr
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBLZXlHZW5lcmF0b3JJbml0aWFsTnVtYmVyKTsK
KyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBuYW1lc0tleSwgb2JqZWN0U3RvcmVJZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY4NiwyMSArNjAxLDEyIEBAIHZvaWQgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhCiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsKICAgICBnZXRTdHJpbmco
bGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSksIG9iamVj
dFN0b3JlTmFtZSk7CiAKLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwg
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDApLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCkpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47IC8vIEZJWE1FOiBSZXBvcnQgZXJyb3Iu
Ci0gICAgfQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkp
OwogCiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUoT2JqZWN0U3RvcmVOYW1lc0tleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlTmFtZSkpOwogCi0gICAgaWYgKCFkZWxldGVS
YW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlTWF4S2V5KGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxl
dmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTog
UmVwb3J0IGVycm9yLgotICAgIH0KLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2Fj
dGlvbiwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDAsIDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCkpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47IC8vIEZJWE1FOiBSZXBvcnQgZXJyb3IuCi0g
ICAgfQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgSW5kZXhGcmVlTGlzdEtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBJbmRleEZyZWVMaXN0S2V5
OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOworICAgIGRlbGV0ZVJh
bmdlKGxldmVsREJUcmFuc2FjdGlvbiwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIDAsIDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXko
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCiAgICAgY2xlYXJPYmplY3RTdG9yZSh0cmFu
c2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CiB9CkBAIC03NTksOCArNjY1LDcg
QEAgc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICBBU1NFUlQobGFzdFZlcnNpb24gPj0gMCk7
CiAKICAgICBpbnQ2NF90IHZlcnNpb24gPSBsYXN0VmVyc2lvbiArIDE7Ci0gICAgYm9vbCBvayA9
IHB1dEludCh0cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIHZlcnNpb24pOwotICAgIEFTU0VS
VF9VTlVTRUQob2ssIG9rKTsKKyAgICBwdXRJbnQodHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5
LCB2ZXJzaW9uKTsKIAogICAgIEFTU0VSVCh2ZXJzaW9uID4gbGFzdFZlcnNpb24pOyAvLyBGSVhN
RTogVGhpbmsgYWJvdXQgaG93IHdlIHdhbnQgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBzY2VuYXJp
by4KIApAQCAtNzc5LDE2ICs2ODQsMTAgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpw
dXRPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKgogICAgIHYu
YXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CiAgICAgdi5hcHBlbmQoZW5jb2RlU3RyaW5n
KHZhbHVlKSk7CiAKLSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+cHV0KG9iamVjdFN0b3Jl
ZGF0YUtleSwgdikpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0
b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgbGV2ZWxE
QlRyYW5zYWN0aW9uLT5wdXQob2JqZWN0U3RvcmVkYXRhS2V5LCB2KTsKIAogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBleGlzdHNFbnRyeUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKLSAgICBpZiAoIWxldmVsREJUcmFuc2FjdGlvbi0+
cHV0KGV4aXN0c0VudHJ5S2V5LCBlbmNvZGVJbnQodmVyc2lvbikpKSB7Ci0gICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGV4aXN0c0VudHJ5
S2V5LCBlbmNvZGVJbnQodmVyc2lvbikpOwogCiAgICAgTGV2ZWxEQlJlY29yZElkZW50aWZpZXIq
IGxldmVsREJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8TGV2ZWxEQlJlY29yZElkZW50
aWZpZXIqPihyZWNvcmRJZGVudGlmaWVyKTsKICAgICBsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+
c2V0UHJpbWFyeUtleShlbmNvZGVJREJLZXkoa2V5KSk7CkBAIC04NzgsMTEgKzc3Nyw3IEBAIGJv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50
TnVtYmVyKElEQkJhY2tpbmdTdG9yCiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6S2V5
R2VuZXJhdG9yQ3VycmVudE51bWJlcik7Ci0gICAgYm9vbCBvayA9IHB1dEludChsZXZlbERCVHJh
bnNhY3Rpb24sIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIG5ld051bWJlcik7Ci0gICAg
aWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVX
cml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBwdXRJbnQobGV2
ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDIyLDEwICs5MTcsNyBAQCBzdGF0aWMgYm9v
bCBzZXRNYXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFw
dXRJbnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIGluZGV4SWQpKSB7Ci0gICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtl
eSwgaW5kZXhJZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNDEsMzAgKzkzMywxMCBA
QCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlQYXRo
S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OktleVBhdGgpOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBtdWx0aUVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6Ok11bHRpRW50cnkpOwog
Ci0gICAgYm9vbCBvayA9IHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5h
bWUpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBvayA9IHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsK
LSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sg
PSBwdXRJREJLZXlQYXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7
Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9r
ID0gcHV0Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRy
eSk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQorICAg
IHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5hbWUpOworICAgIHB1dEJv
b2wobGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKKyAgICBwdXRJREJL
ZXlQYXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgcHV0
Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNzUsMTkgKzk0NywxMSBAQCB2b2lkIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4TWV0YURhdGFTdGFydCA9
IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YUVuZCA9IEluZGV4
TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkKTsKLQotICAgIGlmICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleE1l
dGFEYXRhU3RhcnQsIGluZGV4TWV0YURhdGFFbmQpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3Io
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgaW5kZXhNZXRhRGF0YVN0YXJ0
LCBpbmRleE1ldGFEYXRhRW5kKTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFT
dGFydCA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFFbmQgPSBJbmRl
eERhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElk
KTsKLQotICAgIGlmICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleERhdGFT
dGFydCwgaW5kZXhEYXRhRW5kKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBkZWxl
dGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0YVN0YXJ0LCBpbmRleERhdGFFbmQp
OwogfQogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURC
S2V5JiBrZXksIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRp
ZmllcikKQEAgLTExMDQsNyArOTY4LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpw
dXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbioKICAgICBk
YXRhLmFwcGVuZChlbmNvZGVWYXJJbnQobGV2ZWxEQlJlY29yZElkZW50aWZpZXItPnZlcnNpb24o
KSkpOwogICAgIGRhdGEuYXBwZW5kKGxldmVsREJSZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5S2V5
KCkpOwogCi0gICAgcmV0dXJuIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtleSwg
ZGF0YSk7CisgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQoaW5kZXhEYXRhS2V5LCBkYXRhKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZmluZEdyZWF0ZXN0S2V5TGVzc1Ro
YW5PckVxdWFsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgdGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDhm
ZTNmZDA4ZWRiMjc5YmNlMzg0NTBkNWM3YjliYmEwMTc0NzU5NTMuLmJmNWNjYmI3ZjgwMmE0NTZh
ODJkNmZkNTgxMzRmOWY5NDQ5N2JiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
c3RhdGljIHZvaWQgaW5pdFZlY3Rvcihjb25zdCBMZXZlbERCU2xpY2UmIHNsaWNlLCBWZWN0b3I8
Y2hhcj4qIHZlY3RvcikKICAgICB2ZWN0b3ItPmFwcGVuZChzbGljZS5iZWdpbigpLCBzbGljZS5l
bmQoKSAtIHNsaWNlLmJlZ2luKCkpOwogfQogCi1ib29sIExldmVsREJUcmFuc2FjdGlvbjo6c2V0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29s
IGRlbGV0ZWQpCit2b2lkIExldmVsREJUcmFuc2FjdGlvbjo6c2V0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29sIGRlbGV0ZWQpCiB7CiAgICAg
QVNTRVJUKCFtX2ZpbmlzaGVkKTsKICAgICBib29sIG5ld05vZGUgPSBmYWxzZTsKQEAgLTkzLDE3
ICs5MywxNiBAQCBib29sIExldmVsREJUcmFuc2FjdGlvbjo6c2V0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLAogCiAgICAgaWYgKG5ld05vZGUpCiAg
ICAgICAgIG5vdGlmeUl0ZXJhdG9yc09mVHJlZUNoYW5nZSgpOwotICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIExldmVsREJUcmFuc2FjdGlvbjo6cHV0KGNvbnN0IExldmVsREJTbGljZSYga2V5
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQordm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnB1
dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKIHsK
LSAgICByZXR1cm4gc2V0KGtleSwgdmFsdWUsIGZhbHNlKTsKKyAgICBzZXQoa2V5LCB2YWx1ZSwg
ZmFsc2UpOwogfQogCi1ib29sIExldmVsREJUcmFuc2FjdGlvbjo6cmVtb3ZlKGNvbnN0IExldmVs
REJTbGljZSYga2V5KQordm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92ZShjb25zdCBMZXZl
bERCU2xpY2UmIGtleSkKIHsKLSAgICByZXR1cm4gc2V0KGtleSwgVmVjdG9yPGNoYXI+KCksIHRy
dWUpOworICAgIHNldChrZXksIFZlY3RvcjxjaGFyPigpLCB0cnVlKTsKIH0KIAogYm9vbCBMZXZl
bERCVHJhbnNhY3Rpb246OmdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+
JiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2
ZWxEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVs
REJUcmFuc2FjdGlvbi5oCmluZGV4IDgwYTMzNWQ0N2EwMTBhZjRkMzgyYTVmMTVhMTk0NTkxNzM3
NDRmNWYuLjg1YjczNGZmMDRjZmNlYjljYjYzNTJmMjcyOWIyZDU0MzIwYzEwOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24u
aApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGV2ZWxE
QlRyYW5zYWN0aW9uPiBjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKik7CiAKICAgICB+TGV2ZWxEQlRy
YW5zYWN0aW9uKCk7Ci0gICAgYm9vbCBwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0
IFZlY3RvcjxjaGFyPiYgdmFsdWUpOwotICAgIGJvb2wgcmVtb3ZlKGNvbnN0IExldmVsREJTbGlj
ZSYga2V5KTsKKyAgICB2b2lkIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVj
dG9yPGNoYXI+JiB2YWx1ZSk7CisgICAgdm9pZCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXkpOwogICAgIGJvb2wgZ2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4m
IHZhbHVlKTsKICAgICBib29sIGNvbW1pdCgpOwogICAgIHZvaWQgcm9sbGJhY2soKTsKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIGJvb2wgbV90cmVlQ2hhbmdl
ZDsKICAgICB9OwogCi0gICAgYm9vbCBzZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0
IFZlY3RvcjxjaGFyPiYgdmFsdWUsIGJvb2wgZGVsZXRlZCk7CisgICAgdm9pZCBzZXQoY29uc3Qg
TGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUsIGJvb2wgZGVsZXRl
ZCk7CiAgICAgdm9pZCBjbGVhclRyZWUoKTsKICAgICB2b2lkIHJlZ2lzdGVySXRlcmF0b3IoVHJh
bnNhY3Rpb25JdGVyYXRvciopOwogICAgIHZvaWQgdW5yZWdpc3Rlckl0ZXJhdG9yKFRyYW5zYWN0
aW9uSXRlcmF0b3IqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173098</attachid>
            <date>2012-11-08 12:44:04 -0800</date>
            <delta_ts>2012-11-08 13:38:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100700-20121108124213.patch</filename>
            <type>text/plain</type>
            <size>28329</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU2M2RkMmQ0ZDIyNmYz
ZTJmMDA2NGJkODc3MzAwNGFlYWQxNmJlZS4uNzhkM2UxOGEyMzE0YTM2M2RkYWQyZWUyNTJkZDQ1
YzBjMjg5YjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1v
dmUgdW51c2VkIGVycm9yIGhhbmRsaW5nIGNsYXVzZXMgd2hlbiB3cml0aW5nIHRvIHRyYW5zYWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFRyYW5zYWN0
aW9ucyBhcmUgd3JpdHRlbiBpbnRvIGluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMuIFRoaXMgY2Fu
IG9ubHkgZmFpbCBpZiBhbGxvY2F0aW9uCisgICAgICAgIGZhaWxzLCBzbyAic3VjY2VzcyIgcmVz
dWx0cyBhcmUgYWx3YXlzIHJldHVybmVkLiBDaGFuZ2UgdGhlIHJldHVybiB0eXBlcyB0byB2b2lk
LCBhbmQgZGVsZXRlCisgICAgICAgIGFsbCBvZiB0aGUgdW5yZWFjaGFibGUgZXJyb3IgaGFuZGxp
bmcgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IHJlZmFjdG9yaW5nL2RlYWQg
Y29kZSByZW1vdmFsLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwdXRCb29sKTogT25seSB3cml0ZSB0
byB0cmFuc2FjdGlvbnMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnB1
dEludCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHV0VmFySW50KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpwdXRTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnB1dElE
QktleVBhdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3Rv
cmU6OnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlbGV0ZVJhbmdlKTogV3JpdGVzIG9ubHkgdG8gdHJhbnNhY3Rpb24sIHNvIGNh
bid0IGZhaWwuCisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhPYmplY3RTdG9yZUlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldE5ld1ZlcnNpb25OdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0T2JqZWN0U3RvcmVSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0
b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldE1heEluZGV4SWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVj
b3JkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OnNldCk6IFJldHVybiB0eXBl
IGlzIHZvaWQuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OnB1dCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpyZW1vdmUpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oOgorICAg
ICAgICAoTGV2ZWxEQlRyYW5zYWN0aW9uKToKKwogMjAxMi0xMS0wOCAgQW5kcmVhcyBLbGluZyAg
PGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgNC42OE1CIGJlbG93IFJlbmRlclN0eWxlOjpm
aWx0ZXIoKSBvbiBNZW1idXN0ZXIzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNmI1YTYyYTA3NmUxZmFmNWNlNDE4
MzI3ODdhNzNhNDE5ZWRjYmM0NC4uNjYzZTM1MmJhMTM2YjQ3OTBjMDNkMzg0ZTZiMTFhY2I2NmMy
Njk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNv
cmRJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9yVHlwZSB0
CiAgICAgfSB3aGlsZSAoMCkKIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4K
LXN0YXRpYyBib29sIGdldEJvb2woREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNo
YXI+JiBrZXksIGJvb2wmIGZvdW5kQm9vbCkKK3N0YXRpYyBib29sIGdldEJvb2woREJPclRyYW5z
YWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGJvb2wmIGZvdW5kQm9vbCkKIHsK
ICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwogICAgIGlmICghZGItPmdldChrZXksIHJlc3VsdCkp
CkBAIC04NCwxNCArODQsMTMgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbChEQk9yVHJhbnNhY3Rpb24q
IGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgYm9vbCYgZm91bmRCb28KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBi
b29sIHB1dEJvb2woREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXks
IGJvb2wgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRCb29sKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBib29sIHZhbHVlKQogewotICAgIHJl
dHVybiBkYi0+cHV0KGtleSwgZW5jb2RlQm9vbCh2YWx1ZSkpOworICAgIHRyYW5zYWN0aW9uLT5w
dXQoa2V5LCBlbmNvZGVCb29sKHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9y
VHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QmIGZvdW5kSW50KQorc3RhdGljIGJvb2wgZ2V0
SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBpbnQ2NF90
JiBmb3VuZEludCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwogICAgIGlmICghZGItPmdl
dChrZXksIHJlc3VsdCkpCkBAIC0xMDEsMTcgKzEwMCwxNCBAQCBzdGF0aWMgYm9vbCBnZXRJbnQo
REJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QmIGZv
dW5kSQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5z
YWN0aW9uPgotc3RhdGljIGJvb2wgcHV0SW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYga2V5LCBpbnQ2NF90IHZhbHVlKQorc3RhdGljIHZvaWQgcHV0SW50KExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBpbnQ2
NF90IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSA+PSAwKTsKLSAgICBpZiAodmFsdWUgPCAw
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRiLT5wdXQoa2V5LCBlbmNvZGVJ
bnQodmFsdWUpKTsKKyAgICB0cmFuc2FjdGlvbi0+cHV0KGtleSwgZW5jb2RlSW50KHZhbHVlKSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBn
ZXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGlu
dDY0X3QmIGZvdW5kSW50KQorc3RhdGljIGJvb2wgZ2V0VmFySW50KERCT3JUcmFuc2FjdGlvbiog
ZGIsIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBpbnQ2NF90JiBmb3VuZEludCkKIHsKICAgICBW
ZWN0b3I8Y2hhcj4gcmVzdWx0OwogICAgIGlmICghZGItPmdldChrZXksIHJlc3VsdCkpCkBAIC0x
MjAsMTQgKzExNiwxMyBAQCBzdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBk
YiwgY29uc3QgVmVjdG9yPGNoYXI+JiBrZXksIGludDY0X3QmIGZvdQogICAgIHJldHVybiBkZWNv
ZGVWYXJJbnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgZm91bmRJbnQpID09IHJlc3Vs
dC5lbmQoKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRp
YyBib29sIHB1dFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4m
IGtleSwgaW50NjRfdCB2YWx1ZSkKK3N0YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gZGItPnB1dChrZXksIGVuY29kZVZhckludCh2YWx1ZSkpOworICAg
IHRyYW5zYWN0aW9uLT5wdXQoa2V5LCBlbmNvZGVWYXJJbnQodmFsdWUpKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIGdldFN0cmluZyhEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGtleSwgU3RyaW5nJiBmb3VuZFN0
cmluZykKK3N0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwgU3RyaW5nJiBmb3VuZFN0cmluZykKIHsKICAgICBWZWN0b3I8Y2hh
cj4gcmVzdWx0OwogICAgIGlmICghZGItPmdldChrZXksIHJlc3VsdCkpCkBAIC0xMzcsMjAgKzEz
MiwxNCBAQCBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3Qg
VmVjdG9yPGNoYXI+JiBrZXksIFN0cmluZyYgZm91bgogICAgIHJldHVybiB0cnVlOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgotc3RhdGljIGJvb2wgcHV0U3RyaW5n
KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCitzdGF0aWMgdm9pZCBwdXRTdHJpbmcoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
Ci0gICAgaWYgKCFkYi0+cHV0KGtleSwgZW5jb2RlU3RyaW5nKHZhbHVlKSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB0cmFuc2FjdGlvbi0+cHV0KGtleSwg
ZW5jb2RlU3RyaW5nKHZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNh
Y3Rpb24+Ci1zdGF0aWMgYm9vbCBwdXRJREJLZXlQYXRoKERCT3JUcmFuc2FjdGlvbiogZGIsIGNv
bnN0IFZlY3RvcjxjaGFyPiBrZXksIGNvbnN0IElEQktleVBhdGgmIHZhbHVlKQorc3RhdGljIHZv
aWQgcHV0SURCS2V5UGF0aChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwgY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCiB7Ci0gICAgaWYgKCFk
Yi0+cHV0KGtleSwgZW5jb2RlSURCS2V5UGF0aCh2YWx1ZSkpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgdHJhbnNhY3Rpb24tPnB1dChrZXksIGVuY29kZUlE
QktleVBhdGgodmFsdWUpKTsKIH0KIAogc3RhdGljIGludCBjb21wYXJlS2V5cyhjb25zdCBMZXZl
bERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYikKQEAgLTE4Miw1MCArMTcxLDM3IEBA
IHN0YXRpYyBib29sIGlzU2NoZW1hS25vd24oTGV2ZWxEQkRhdGFiYXNlKiBkYikKIHN0YXRpYyBi
b29sIHNldFVwTWV0YWRhdGEoTGV2ZWxEQkRhdGFiYXNlKiBkYiwgY29uc3QgU3RyaW5nJiBvcmln
aW4pCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG1ldGFEYXRhS2V5ID0gU2NoZW1hVmVyc2lv
bktleTo6ZW5jb2RlKCk7CisgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rp
b24gPSBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShkYik7CiAKICAgICBpbnQ2NF90IHNjaGVt
YVZlcnNpb24gPSAwOwotICAgIGlmICghZ2V0SW50KGRiLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVy
c2lvbikpIHsKKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgbWV0YURhdGFLZXks
IHNjaGVtYVZlcnNpb24pKSB7CiAgICAgICAgIHNjaGVtYVZlcnNpb24gPSBsYXRlc3RTY2hlbWFW
ZXJzaW9uOwotICAgICAgICBpZiAoIXB1dEludChkYiwgbWV0YURhdGFLZXksIGxhdGVzdFNjaGVt
YVZlcnNpb24pKSB7Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQor
ICAgICAgICBwdXRJbnQodHJhbnNhY3Rpb24uZ2V0KCksIG1ldGFEYXRhS2V5LCBsYXRlc3RTY2hl
bWFWZXJzaW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoc2NoZW1hVmVyc2lvbiA8
PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKICAgICAgICAgaWYgKCFzY2hlbWFWZXJzaW9uKSB7CiAg
ICAgICAgICAgICBzY2hlbWFWZXJzaW9uID0gbGF0ZXN0U2NoZW1hVmVyc2lvbjsKLSAgICAgICAg
ICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5z
YWN0aW9uOjpjcmVhdGUoZGIpOwotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPnB1dChtZXRhRGF0
YUtleSwgZW5jb2RlSW50KHNjaGVtYVZlcnNpb24pKTsKLQorICAgICAgICAgICAgcHV0SW50KHRy
YW5zYWN0aW9uLmdldCgpLCBtZXRhRGF0YUtleSwgc2NoZW1hVmVyc2lvbik7CiAgICAgICAgICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZU1p
bktleUZvck9yaWdpbihvcmlnaW4pOwogICAgICAgICAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0
b3BLZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZVN0b3BLZXlGb3JPcmlnaW4ob3JpZ2luKTsK
ICAgICAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gZGItPmNyZWF0ZUl0ZXJh
dG9yKCk7CiAgICAgICAgICAgICBmb3IgKGl0LT5zZWVrKHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQo
KSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIHN0b3BLZXkpIDwgMDsgaXQtPm5leHQoKSkgewot
ICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKLSAgICAgICAgICAgICAgICBib29s
IG9rID0gdHJhbnNhY3Rpb24tPmdldChpdC0+a2V5KCksIHZhbHVlKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIW9rKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBkYXRhYmFzZUlkID0gMDsKKyAg
ICAgICAgICAgICAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgaXQtPmtleSgpLCBk
YXRhYmFzZUlkKSkgewogICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGludCBkYXRhYmFzZUlkID0g
ZGVjb2RlSW50KHZhbHVlLmJlZ2luKCksIHZhbHVlLmVuZCgpKTsKICAgICAgICAgICAgICAgICBW
ZWN0b3I8Y2hhcj4gaW50VmVyc2lvbktleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbik7Ci0gICAgICAg
ICAgICAgICAgdHJhbnNhY3Rpb24tPnB1dChpbnRWZXJzaW9uS2V5LCBlbmNvZGVWYXJJbnQoSURC
RGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pKTsKLSAgICAgICAgICAgICAgICBv
ayA9IHRyYW5zYWN0aW9uLT5nZXQoaXQtPmtleSgpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFvaykgewotICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVSZWFkRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBvayA9
IHRyYW5zYWN0aW9uLT5jb21taXQoKTsKLSAgICAgICAgICAgIGlmICghb2spIHsKLSAgICAgICAg
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcHV0VmFySW50
KHRyYW5zYWN0aW9uLmdldCgpLCBpbnRWZXJzaW9uS2V5LCBJREJEYXRhYmFzZU1ldGFkYXRhOjpE
ZWZhdWx0SW50VmVyc2lvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBBU1NFUlQoc2NoZW1hVmVyc2lvbiA9PSBsYXRlc3RTY2hlbWFWZXJzaW9uKTsKLQorICAgIGlm
ICghdHJhbnNhY3Rpb24tPmNvbW1pdCgpKSB7CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yOTksNyArMjc1LDcgQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW4oU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXQKICAgICAgICAgaWYgKGRiICYmICFpc1NjaGVtYUtub3duKGRiLmdldCgpKSkg
ewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVkREIgYmFja2luZyBzdG9yZSBoYWQgdW5r
bm93biBzY2hlbWEsIHRyZWF0aW5nIGl0IGFzIGZhaWx1cmUgdG8gb3BlbiIpOwogICAgICAgICAg
ICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIldlYkNvcmUuSW5kZXhl
ZERCLkJhY2tpbmdTdG9yZS5PcGVuU3RhdHVzIiwgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5G
YWlsZWRVbmtub3duU2NoZW1hLCBJREJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1heCk7Ci0gICAg
ICAgICAgICBkYi5yZWxlYXNlKCk7CisgICAgICAgICAgICBkYi5jbGVhcigpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGRiKQpAQCAtMzg5LDE2ICszNjUsMjAgQEAgYm9vbCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCRGF0YWIKIAogc3RhdGljIGludDY0X3QgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJh
c2UqIGRiKQogeworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoZGIpOworCiAgICAgaW50NjRfdCBtYXhEYXRhYmFz
ZUlkID0gLTE7Ci0gICAgaWYgKCFnZXRJbnQoZGIsIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgp
LCBtYXhEYXRhYmFzZUlkKSkKKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbi5nZXQoKSwgTWF4
RGF0YWJhc2VJZEtleTo6ZW5jb2RlKCksIG1heERhdGFiYXNlSWQpKQogICAgICAgICBtYXhEYXRh
YmFzZUlkID0gMDsKIAogICAgIEFTU0VSVChtYXhEYXRhYmFzZUlkID49IDApOwogCiAgICAgaW50
NjRfdCBkYXRhYmFzZUlkID0gbWF4RGF0YWJhc2VJZCArIDE7Ci0gICAgaWYgKCFwdXRJbnQoZGIs
IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBkYXRhYmFzZUlkKSkKKyAgICBwdXRJbnQodHJh
bnNhY3Rpb24uZ2V0KCksIE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpLCBkYXRhYmFzZUlkKTsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uLT5jb21taXQoKSkgeworICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIC0xOwot
CisgICAgfQogICAgIHJldHVybiBkYXRhYmFzZUlkOwogfQogCkBAIC00MDgsMTggKzM4OCwxNCBA
QCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdAogICAgIGlmIChyb3dJZCA8IDApCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBEYXRhYmFzZU5hbWVL
ZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwotICAgIGlmICghcHV0SW50KG1fZGIuZ2V0
KCksIGtleSwgcm93SWQpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlm
ICghcHV0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJ
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCB2ZXJzaW9uKSkgewotICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAgICAgICAgIGludFZlcnNpb24gPSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKLSAgICBpZiAoIXB1dFZhckludChtX2RiLmdl
dCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFL
ZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbikpIHsKKworICAgIFJlZlB0cjxMZXZlbERC
VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobV9k
Yi5nZXQoKSk7CisgICAgcHV0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBEYXRhYmFzZU5hbWVLZXk6
OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpLCByb3dJZCk7CisgICAgcHV0U3RyaW5nKHRyYW5z
YWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lvbik7CisgICAgcHV0VmFySW50KHRyYW5z
YWN0aW9uLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgaW50VmVyc2lvbik7CisgICAgaWYgKCF0cmFu
c2FjdGlvbi0+Y29tbWl0KCkpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlV3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00
MzEsMzQgKzQwNywyMSBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnVwZGF0ZUlEQkRh
dGFiYXNlSW50VmVyc2lvbihJREJCYWNraW5nU3RvcmU6OlRyYW5zYQogICAgIGlmIChpbnRWZXJz
aW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAgICAgaW50VmVy
c2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOwogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaW50VmVyc2lvbiA+PSAwLCAiaW50VmVyc2lvbiB3YXMgJWxsZCIsIHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4oaW50VmVyc2lvbikpOwotICAgIGlmICghcHV0VmFySW50KFRy
YW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKSwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVy
c2lvbiksIGludFZlcnNpb24pKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAg
IHB1dFZhckludChUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlv
biksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtl
eTo6VXNlckludFZlcnNpb24pLCBpbnRWZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHJvd0lkLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgaWYgKCFwdXRTdHJpbmcoVHJhbnNhY3Rpb246
OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1ldGFEYXRhS2V5
OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgdmVyc2lv
bikpIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVF
cnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KKyAgICBwdXRTdHJpbmcoVHJh
bnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9u
KSwgdmVyc2lvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGRlbGV0ZVJh
bmdlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYg
YmVnaW4sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5kKQorc3RhdGljIHZvaWQgZGVsZXRlUmFuZ2Uo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWdp
biwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmQpCiB7CiAgICAgT3duUHRyPExldmVsREJJdGVyYXRv
cj4gaXQgPSB0cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKLSAgICBmb3IgKGl0LT5zZWVr
KGJlZ2luKTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIGVuZCkgPCAw
OyBpdC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmICghdHJhbnNhY3Rpb24tPnJlbW92ZShpdC0+a2V5
KCkpKSB7Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVX
cml0ZUVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOworICAgIGZvciAoaXQtPnNlZWsoYmVnaW4pOyBpdC0+aXNWYWxp
ZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgZW5kKSA8IDA7IGl0LT5uZXh0KCkpCisgICAg
ICAgIHRyYW5zYWN0aW9uLT5yZW1vdmUoaXQtPmtleSgpKTsKIH0KIAogCkBAIC01OTgsMTAgKzU2
MSw3IEBAIHN0YXRpYyBib29sIHNldE1heE9iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzCiAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZUNvbnNpc3RlbmN5RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGlmICghcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlk
S2V5LCBvYmplY3RTdG9yZUlkKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICBwdXRJbnQodHJhbnNhY3Rpb24sIG1heE9iamVjdFN0b3JlSWRLZXksIG9iamVjdFN0b3JlSWQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MjIsNjAgKzU4MiwxNSBAQCBib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlHZW5lcmF0b3JDdXJyZW50
TnVtYmVyS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleUdlbmVyYXRvckN1cnJlbnRO
dW1iZXIpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lc0tleSA9IE9iamVjdFN0b3JlTmFt
ZXNLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBuYW1lKTsKIAotICAgIGJvb2wgb2sgPSBwdXRTdHJp
bmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBuYW1lS2V5LCBuYW1lKTsKLSAgICBpZiAoIW9rKSB7Ci0g
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRJREJLZXlQYXRoKGxl
dmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7Ci0gICAgaWYgKCFvaykgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJU
cmFuc2FjdGlvbiwgYXV0b0luY3JlbWVudEtleSwgYXV0b0luY3JlbWVudCk7Ci0gICAgaWYgKCFv
aykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxl
dmVsREJUcmFuc2FjdGlvbiwgZXZpY3RhYmxlS2V5LCBmYWxzZSk7Ci0gICAgaWYgKCFvaykgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9rID0gcHV0SW50KGxldmVsREJU
cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIDEpOwotICAgIGlmICghb2spIHsKLSAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rp
b24sIG1heEluZGV4SWRLZXksIE1pbmltdW1JbmRleElkKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAg
ICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sgPSBwdXRCb29sKGxldmVsREJUcmFu
c2FjdGlvbiwgaGFzS2V5UGF0aEtleSwgIWtleVBhdGguaXNOdWxsKCkpOwotICAgIGlmICghb2sp
IHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJv
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZl
bERCVHJhbnNhY3Rpb24sIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIEtleUdlbmVyYXRv
ckluaXRpYWxOdW1iZXIpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBvayA9IHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVzS2V5LCBv
YmplY3RTdG9yZUlkKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCisgICAgcHV0U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgbmFtZUtleSwgbmFtZSk7
CisgICAgcHV0SURCS2V5UGF0aChsZXZlbERCVHJhbnNhY3Rpb24sIGtleVBhdGhLZXksIGtleVBh
dGgpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGF1dG9JbmNyZW1lbnRLZXksIGF1
dG9JbmNyZW1lbnQpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGV2aWN0YWJsZUtl
eSwgZmFsc2UpOworICAgIHB1dEludChsZXZlbERCVHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5
LCAxKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBNaW5p
bXVtSW5kZXhJZCk7CisgICAgcHV0Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIGhhc0tleVBhdGhL
ZXksICFrZXlQYXRoLmlzTnVsbCgpKTsKKyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBr
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBLZXlHZW5lcmF0b3JJbml0aWFsTnVtYmVyKTsK
KyAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBuYW1lc0tleSwgb2JqZWN0U3RvcmVJZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY4NywyMSArNjAyLDEyIEBAIHZvaWQgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhCiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsKICAgICBnZXRTdHJpbmco
bGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSksIG9iamVj
dFN0b3JlTmFtZSk7CiAKLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwg
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDApLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCkpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47IC8vIEZJWE1FOiBSZXBvcnQgZXJyb3Iu
Ci0gICAgfQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkp
OwogCiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUoT2JqZWN0U3RvcmVOYW1lc0tleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlTmFtZSkpOwogCi0gICAgaWYgKCFkZWxldGVS
YW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlTWF4S2V5KGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxl
dmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTog
UmVwb3J0IGVycm9yLgotICAgIH0KLSAgICBpZiAoIWRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2Fj
dGlvbiwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDAsIDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCkpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47IC8vIEZJWE1FOiBSZXBvcnQgZXJyb3IuCi0g
ICAgfQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgSW5kZXhGcmVlTGlzdEtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDApLCBJbmRleEZyZWVMaXN0S2V5
OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOworICAgIGRlbGV0ZVJh
bmdlKGxldmVsREJUcmFuc2FjdGlvbiwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIDAsIDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXko
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCiAgICAgY2xlYXJPYmplY3RTdG9yZSh0cmFu
c2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CiB9CkBAIC03NjAsOCArNjY2LDcg
QEAgc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICBBU1NFUlQobGFzdFZlcnNpb24gPj0gMCk7
CiAKICAgICBpbnQ2NF90IHZlcnNpb24gPSBsYXN0VmVyc2lvbiArIDE7Ci0gICAgYm9vbCBvayA9
IHB1dEludCh0cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIHZlcnNpb24pOwotICAgIEFTU0VS
VF9VTlVTRUQob2ssIG9rKTsKKyAgICBwdXRJbnQodHJhbnNhY3Rpb24sIGxhc3RWZXJzaW9uS2V5
LCB2ZXJzaW9uKTsKIAogICAgIEFTU0VSVCh2ZXJzaW9uID4gbGFzdFZlcnNpb24pOyAvLyBGSVhN
RTogVGhpbmsgYWJvdXQgaG93IHdlIHdhbnQgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBzY2VuYXJp
by4KIApAQCAtNzgwLDE2ICs2ODUsMTAgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpw
dXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24KICAgICB2
LmFwcGVuZChlbmNvZGVWYXJJbnQodmVyc2lvbikpOwogICAgIHYuYXBwZW5kKGVuY29kZVN0cmlu
Zyh2YWx1ZSkpOwogCi0gICAgaWYgKCFsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChvYmplY3RTdG9y
ZWRhdGFLZXksIHYpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGxldmVs
REJUcmFuc2FjdGlvbi0+cHV0KG9iamVjdFN0b3JlZGF0YUtleSwgdik7CiAKICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7Ci0gICAgaWYgKCFsZXZlbERCVHJhbnNhY3Rpb24t
PnB1dChleGlzdHNFbnRyeUtleSwgZW5jb2RlSW50KHZlcnNpb24pKSkgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KKyAgICBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChleGlzdHNFbnRy
eUtleSwgZW5jb2RlSW50KHZlcnNpb24pKTsKIAogICAgIExldmVsREJSZWNvcmRJZGVudGlmaWVy
KiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PExldmVsREJSZWNvcmRJZGVu
dGlmaWVyKj4ocmVjb3JkSWRlbnRpZmllcik7CiAgICAgbGV2ZWxEQlJlY29yZElkZW50aWZpZXIt
PnNldFByaW1hcnlLZXkoZW5jb2RlSURCS2V5KGtleSkpOwpAQCAtODc5LDExICs3NzgsNyBAQCBi
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVu
dE51bWJlcihJREJCYWNraW5nU3RvcgogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Oktl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOwotICAgIGJvb2wgb2sgPSBwdXRJbnQobGV2ZWxEQlRy
YW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwotICAg
IGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgcHV0SW50KGxl
dmVsREJUcmFuc2FjdGlvbiwga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwgbmV3TnVtYmVy
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTkwLDEwICs4ODUsNyBAQCBzdGF0aWMgYm9v
bCBzZXRNYXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFw
dXRJbnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIGluZGV4SWQpKSB7Ci0gICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtl
eSwgaW5kZXhJZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwMDksMzAgKzkwMSwxMCBA
QCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlQYXRo
S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OktleVBhdGgpOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBtdWx0aUVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6Ok11bHRpRW50cnkpOwog
Ci0gICAgYm9vbCBvayA9IHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5h
bWUpOwotICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlV3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBvayA9IHB1dEJvb2wobGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsK
LSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgb2sg
PSBwdXRJREJLZXlQYXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7
Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG9r
ID0gcHV0Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRy
eSk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQorICAg
IHB1dFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIG5hbWVLZXksIG5hbWUpOworICAgIHB1dEJv
b2wobGV2ZWxEQlRyYW5zYWN0aW9uLCB1bmlxdWVLZXksIGlzVW5pcXVlKTsKKyAgICBwdXRJREJL
ZXlQYXRoKGxldmVsREJUcmFuc2FjdGlvbiwga2V5UGF0aEtleSwga2V5UGF0aCk7CisgICAgcHV0
Qm9vbChsZXZlbERCVHJhbnNhY3Rpb24sIG11bHRpRW50cnlLZXksIGlzTXVsdGlFbnRyeSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNDMsMTkgKzkxNSwxMSBAQCB2b2lkIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4TWV0YURhdGFTdGFydCA9
IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YUVuZCA9IEluZGV4
TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkKTsKLQotICAgIGlmICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleE1l
dGFEYXRhU3RhcnQsIGluZGV4TWV0YURhdGFFbmQpKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3Io
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwgaW5kZXhNZXRhRGF0YVN0YXJ0
LCBpbmRleE1ldGFEYXRhRW5kKTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFT
dGFydCA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFFbmQgPSBJbmRl
eERhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElk
KTsKLQotICAgIGlmICghZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleERhdGFT
dGFydCwgaW5kZXhEYXRhRW5kKSkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBkZWxl
dGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0YVN0YXJ0LCBpbmRleERhdGFFbmQp
OwogfQogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURC
S2V5JiBrZXksIGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCkBAIC0x
MDcyLDcgKzkzNiw4IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRh
Rm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qCiAgICAgZGF0YS5hcHBlbmQo
ZW5jb2RlVmFySW50KGxldmVsREJSZWNvcmRJZGVudGlmaWVyLT52ZXJzaW9uKCkpKTsKICAgICBk
YXRhLmFwcGVuZChsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKIAotICAg
IHJldHVybiBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOworICAg
IGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtleSwgZGF0YSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JFcXVhbChM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHRhcmdl
dCwgVmVjdG9yPGNoYXI+JiBmb3VuZEtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA4ZmUzZmQwOGVkYjI3
OWJjZTM4NDUwZDVjN2I5YmJhMDE3NDc1OTUzLi5iZjVjY2JiN2Y4MDJhNDU2YTgyZDZmZDU4MTM0
ZjlmOTQ0OTdiYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyB2b2lk
IGluaXRWZWN0b3IoY29uc3QgTGV2ZWxEQlNsaWNlJiBzbGljZSwgVmVjdG9yPGNoYXI+KiB2ZWN0
b3IpCiAgICAgdmVjdG9yLT5hcHBlbmQoc2xpY2UuYmVnaW4oKSwgc2xpY2UuZW5kKCkgLSBzbGlj
ZS5iZWdpbigpKTsKIH0KIAotYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwgYm9vbCBkZWxldGVkKQor
dm9pZCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29u
c3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwgYm9vbCBkZWxldGVkKQogewogICAgIEFTU0VSVCghbV9m
aW5pc2hlZCk7CiAgICAgYm9vbCBuZXdOb2RlID0gZmFsc2U7CkBAIC05MywxNyArOTMsMTYgQEAg
Ym9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnNldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29u
c3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSwKIAogICAgIGlmIChuZXdOb2RlKQogICAgICAgICBub3Rp
ZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBM
ZXZlbERCVHJhbnNhY3Rpb246OnB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVj
dG9yPGNoYXI+JiB2YWx1ZSkKK3ZvaWQgTGV2ZWxEQlRyYW5zYWN0aW9uOjpwdXQoY29uc3QgTGV2
ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IHNldChrZXksIHZhbHVlLCBmYWxzZSk7CisgICAgc2V0KGtleSwgdmFsdWUsIGZhbHNlKTsKIH0K
IAotYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OnJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtl
eSkKK3ZvaWQgTGV2ZWxEQlRyYW5zYWN0aW9uOjpyZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXkpCiB7Ci0gICAgcmV0dXJuIHNldChrZXksIFZlY3RvcjxjaGFyPigpLCB0cnVlKTsKKyAgICBz
ZXQoa2V5LCBWZWN0b3I8Y2hhcj4oKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgTGV2ZWxEQlRyYW5zYWN0
aW9uOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rp
b24uaAppbmRleCA4MGEzMzVkNDdhMDEwYWY0ZDM4MmE1ZjE1YTE5NDU5MTczNzQ0ZjVmLi44NWI3
MzRmZjA0Y2ZjZWI5Y2I2MzUyZjI3MjliMmQ1NDMyMGMxMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKQEAgLTUyLDgg
KzUyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExldmVsREJUcmFuc2FjdGlv
bj4gY3JlYXRlKExldmVsREJEYXRhYmFzZSopOwogCiAgICAgfkxldmVsREJUcmFuc2FjdGlvbigp
OwotICAgIGJvb2wgcHV0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hh
cj4mIHZhbHVlKTsKLSAgICBib29sIHJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7Cisg
ICAgdm9pZCBwdXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYg
dmFsdWUpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IExldmVsREJTbGljZSYga2V5KTsKICAgICBi
b29sIGdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSk7CiAg
ICAgYm9vbCBjb21taXQoKTsKICAgICB2b2lkIHJvbGxiYWNrKCk7CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBib29sIG1fdHJlZUNoYW5nZWQ7CiAgICAgfTsK
IAotICAgIGJvb2wgc2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hh
cj4mIHZhbHVlLCBib29sIGRlbGV0ZWQpOworICAgIHZvaWQgc2V0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBib29sIGRlbGV0ZWQpOwogICAgIHZv
aWQgY2xlYXJUcmVlKCk7CiAgICAgdm9pZCByZWdpc3Rlckl0ZXJhdG9yKFRyYW5zYWN0aW9uSXRl
cmF0b3IqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJJdGVyYXRvcihUcmFuc2FjdGlvbkl0ZXJhdG9y
Kik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggY2JiMjU0MGIwMzQ0OGE4Y2I0ZThjYzdmMmNiNmJkNGMzYTcyNjRmYy4uMmJm
ODZhMzRjNjNiMDVkNzIxZGM2ZGQ1YTVjOTEyNGE5OTc0YWIyNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkg
QEAKKzIwMTItMTEtMDggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgorCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0xMS0wOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRXZlbiBtb3Jl
IGdhcmRlbmluZyBhZnRlciByMTMzODk4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGFlOGIxMjkwYWI3ZTgxNjM5NmI5MDBmMzM3N2Zh
ZGQ3MTRjZTgzYi4uMTg0YTlhNmFjMTlmMjBmYTYxMjM2ZWYyZDAwNzRjZWRhY2Q1Zjc2OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC00
MTkzLDExICs0MTkzLDExIEBAIHdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2NhcmV0
LW91dHNpZGUtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEw
MTU0NyBmYXN0L3JlcGFpbnQvZGVsZXRlLWludG8tbmVzdGVkLWJsb2NrLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2lubGluZS1vdXRs
aW5lLXJlcGFpbnQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogIyBUaGUgZm9sbG93aW5nIHRl
c3QgaGFzIHByaW9yIGV4cGVjdGF0aW9ucyB3aGljaCB3ZXJlIGRpc2FibGVkLiBSZS1lbmFibGUg
d2hlbiByZW1vdmluZyB0aGlzOgotd2Via2l0Lm9yZy9iLzEwMTU0NyBmYXN0L3JlcGFpbnQvamFw
YW5lc2Utcmwtc2VsZWN0aW9uLWNsZWFyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1jbGVhci5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBGYWlsdXJlIF0KICMgVGhlIGZvbGxvd2luZyB0ZXN0IGhh
cyBwcmlvciBleHBlY3RhdGlvbnMgd2hpY2ggd2VyZSBkaXNhYmxlZC4gUmUtZW5hYmxlIHdoZW4g
cmVtb3ZpbmcgdGhpczoKLXdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNl
LXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQord2Via2l0Lm9yZy9iLzEwMTU0NyBmYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9u
LXJlcGFpbnQtaW4tcmVnaW9ucy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBGYWlsdXJlIF0KICMg
VGhlIGZvbGxvd2luZyB0ZXN0IGhhcyBwcmlvciBleHBlY3RhdGlvbnMgd2hpY2ggd2VyZSBkaXNh
YmxlZC4gUmUtZW5hYmxlIHdoZW4gcmVtb3ZpbmcgdGhpczoKLXdlYmtpdC5vcmcvYi8xMDE1NDcg
ZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJs
LXNlbGVjdGlvbi1yZXBhaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzEwMTU0NyBmYXN0L3JlcGFpbnQvbm8tY2FyZXQtcmVwYWludC1pbi1ub24tY29u
dGVudC1lZGl0YWJsZS1lbGVtZW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3Vu
ZGFyeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3Qv
cmVwYWludC9zZWxlY3Rpb24tYWZ0ZXItZGVsZXRlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>