<?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>72567</bug_id>
          
          <creation_ts>2011-11-16 17:30:03 -0800</creation_ts>
          <short_desc>IndexedDB: Indexes should be secondarily sorted on primary key</short_desc>
          <delta_ts>2011-11-24 10:10:21 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504442</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-16 17:30:03 -0800</bug_when>
    <thetext>IndexedDB: Indexes should be secondarily sorted on primary key</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504445</commentid>
    <comment_count>1</comment_count>
      <attachid>115491</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-16 17:30:30 -0800</bug_when>
    <thetext>Created attachment 115491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504446</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-16 17:31:25 -0800</bug_when>
    <thetext>I should probably add something to the IDBLevelDBCodingTest.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504999</commentid>
    <comment_count>3</comment_count>
      <attachid>115623</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-17 11:16:55 -0800</bug_when>
    <thetext>Created attachment 115623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505005</commentid>
    <comment_count>4</comment_count>
      <attachid>115623</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-17 11:22:21 -0800</bug_when>
    <thetext>Comment on attachment 115623
Patch

Ugh, I actually need to remove some of the logic around &quot;sequence number&quot;; it&apos;s unnecessary for new records.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505082</commentid>
    <comment_count>5</comment_count>
      <attachid>115652</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-17 12:15:29 -0800</bug_when>
    <thetext>Created attachment 115652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505086</commentid>
    <comment_count>6</comment_count>
      <attachid>115652</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-17 12:17:07 -0800</bug_when>
    <thetext>Comment on attachment 115652
Patch

Should be good to go now, review at leisure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506851</commentid>
    <comment_count>7</comment_count>
      <attachid>115652</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-21 04:02:04 -0800</bug_when>
    <thetext>Comment on attachment 115652
Patch

Looks great, thanks for fixing this!

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Maybe say a few words in the Changelog about how this is implemented, i.e. that we&apos;re appending the primary key to index data keys.

&gt; Source/WebKit/chromium/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

I would probably add a line saying that this updates the unit test.

&gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:1429
&gt; +Vector&lt;char&gt; IndexDataKey::encode(int64_t databaseId, int64_t objectStoreId, int64_t indexId, const Vector&lt;char&gt;&amp; encodedUserKey, const Vector&lt;char&gt;&amp; encodedPrimaryKey, int64_t sequenceNumber)

hmm, maybe we should change the parameter order here? So far, I think they&apos;ve been in the same order that we encode them.

&gt; LayoutTests/storage/indexeddb/cursor-primary-key-order.html:95
&gt; +    curreq = evalAndLog(&quot;curreq = index.openCursor()&quot;);

not super happy about &quot;curreq&quot; as name.. cursorRequest, or just request, maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508174</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-23 09:03:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 115652 [details])
&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:1429
&gt; &gt; +Vector&lt;char&gt; IndexDataKey::encode(int64_t databaseId, int64_t objectStoreId, int64_t indexId, const Vector&lt;char&gt;&amp; encodedUserKey, const Vector&lt;char&gt;&amp; encodedPrimaryKey, int64_t sequenceNumber)
&gt; 
&gt; hmm, maybe we should change the parameter order here? So far, I think they&apos;ve been in the same order that we encode them.

Following this change, sequenceNumber is unnecessary except for testing; it has a default in the header, so I wanted it to be last.

Alternately, I could add another overload that takes sequenceNumber in the &quot;correct&quot; order, that&apos;s only used for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508190</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-23 09:25:55 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 115652 [details] [details])
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:1429
&gt; &gt; &gt; +Vector&lt;char&gt; IndexDataKey::encode(int64_t databaseId, int64_t objectStoreId, int64_t indexId, const Vector&lt;char&gt;&amp; encodedUserKey, const Vector&lt;char&gt;&amp; encodedPrimaryKey, int64_t sequenceNumber)
&gt; &gt; 
&gt; &gt; hmm, maybe we should change the parameter order here? So far, I think they&apos;ve been in the same order that we encode them.
&gt; 
&gt; Following this change, sequenceNumber is unnecessary except for testing; it has a default in the header, so I wanted it to be last.

Didn&apos;t realize there was a default in the header. Never mind, then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508255</commentid>
    <comment_count>10</comment_count>
      <attachid>116386</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-23 11:30:46 -0800</bug_when>
    <thetext>Created attachment 116386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508256</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-23 11:31:45 -0800</bug_when>
    <thetext>tony@ can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508828</commentid>
    <comment_count>12</comment_count>
      <attachid>116386</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-24 10:10:17 -0800</bug_when>
    <thetext>Comment on attachment 116386
Patch

Clearing flags on attachment: 116386

Committed r101142: &lt;http://trac.webkit.org/changeset/101142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508829</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-24 10:10:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115491</attachid>
            <date>2011-11-16 17:30:30 -0800</date>
            <delta_ts>2011-11-17 11:16:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72567-20111116173029.patch</filename>
            <type>text/plain</type>
            <size>15641</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM1NzEwOTNiNjQwZDNm
Y2Q1Zjg1MGQ3ZWRiMjUzNDk1NmVkOTRmNC4uYzVmZTI2ZGFkZjk3MDE5MWYyZjE5NzdiNDIxZWQ5
NTIyNjgwMGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbmRl
eGVzIHNob3VsZCBiZSBzZWNvbmRhcmlseSBzb3J0ZWQgb24gcHJpbWFyeSBrZXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2Uv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpJbmRleERhdGFLZXk6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpJbmRleERhdGFLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
Q29kaW5nOjpJbmRleERhdGFLZXk6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjpwcmltYXJ5S2V5KToKKyAgICAgICAgKiBzdG9yYWdl
L0lEQkxldmVsREJDb2RpbmcuaDoKKwogMjAxMS0xMS0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEwMDIxMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDhjZmY5MWJhOWQxYWNlZDQ1OTIzM2Q5M2QwMzRlNjlhNWIyMTlhYjgu
LjM0ZDgxZTIzYzRmYmJhYjIzYmNiYmI1NjhhODMyOWMyMjM2MTdmMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtNzk1LDcg
Kzc5NSw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVj
b3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvCiAKICAgICBBU1NFUlQobV9jdXJyZW50
VHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IGludDY0X3QgZ2xvYmFsU2VxdWVuY2VOdW1iZXIgPSBn
ZXROZXdWZXJzaW9uTnVtYmVyKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0g
SW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
a2V5LCBnbG9iYWxTZXF1ZW5jZU51bWJlcik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4
RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCBsZXZlbERCUmVjb3JkSWRlbnRpZmllci0+cHJp
bWFyeUtleSgpLCBnbG9iYWxTZXF1ZW5jZU51bWJlcik7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0
YTsKICAgICBkYXRhLmFwcGVuZChlbmNvZGVWYXJJbnQobGV2ZWxEQlJlY29yZElkZW50aWZpZXIt
PnZlcnNpb24oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZl
bERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5j
cHAKaW5kZXggMjBmNDVhYjVmOWE0ZmQ1NGJlNTE3MDExZGU2OWY1MmI3MzRlYzcyNi4uNTI3ZGM5
MTNkZGRhNDBiZTIyNTkzZTM2YWNlNzJkYzVmM2M5NTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCkBAIC0xMDksOSArMTA5LDEwIEBACiAvLwogLy8g
SW5kZXggZGF0YToKIC8vCi0vLyAgICAgVGhlIHByZWZpeCBpcyBmb2xsb3dlZCBieSBhIHR5cGUg
Ynl0ZS4gVGhlIHVzZXIga2V5IGlzIGFuIGVuY29kZWQgSURCS2V5LiBUaGUgc2VxdWVuY2UgbnVt
YmVyIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGludGVnZXIuCisvLyAgICAgVGhlIHByZWZpeCBpcyBm
b2xsb3dlZCBieSBhIHR5cGUgYnl0ZS4gVGhlIGluZGV4IGtleSBpcyBhbiBlbmNvZGVkIElEQktl
eS4gVGhlIHNlcXVlbmNlIG51bWJlciBpcyBhIHZhcmlhYmxlIGxlbmd0aCBpbnRlZ2VyLgorLy8g
ICAgIFRoZSBwcmltYXJ5IGtleSBpcyBhbiBlbmNvZGVkIElEQktleS4KIC8vCi0vLyAgICAgPGRh
dGFiYXNlIGlkLCBvYmplY3Qgc3RvcmUgaWQsIGluZGV4IGlkLCB1c2VyIGtleSwgc2VxdWVuY2Ug
bnVtYmVyPiA9PiAidmVyc2lvbiIsIHVzZXIga2V5IFtJbmRleERhdGFLZXldCisvLyAgICAgPGRh
dGFiYXNlIGlkLCBvYmplY3Qgc3RvcmUgaWQsIGluZGV4IGlkLCBpbmRleCBrZXksIHNlcXVlbmNl
IG51bWJlciwgcHJpbWFyeSBrZXk+ID0+ICJ2ZXJzaW9uIiwgcHJpbWFyeSBrZXkgW0luZGV4RGF0
YUtleV0KIC8vCiAvLyAgICAgKFRoZSBzZXF1ZW5jZSBudW1iZXIgaXMgdXNlZCB0byBhbGxvdyB0
d28gZW50cmllcyB3aXRoIHRoZSBzYW1lIHVzZXIga2V5CiAvLyAgICAgaW4gbm9uLXVuaXF1ZSBp
bmRleGVzLiBUaGUgInZlcnNpb24iIGZpZWxkIGlzIHVzZWQgdG8gd2VlZCBvdXQgc3RhbGUKQEAg
LTE0MDAsMjUgKzE0MDEsNDUgQEAgY29uc3QgY2hhciogSW5kZXhEYXRhS2V5OjpkZWNvZGUoY29u
c3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleERhdGEKICAgICByZXN1bHQt
Pm1fZGF0YWJhc2VJZCA9IHByZWZpeC5tX2RhdGFiYXNlSWQ7CiAgICAgcmVzdWx0LT5tX29iamVj
dFN0b3JlSWQgPSBwcmVmaXgubV9vYmplY3RTdG9yZUlkOwogICAgIHJlc3VsdC0+bV9pbmRleElk
ID0gcHJlZml4Lm1faW5kZXhJZDsKKyAgICByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIgPSAtMTsK
KyAgICByZXN1bHQtPm1fZW5jb2RlZFByaW1hcnlLZXkgPSBtaW5JREJLZXkoKTsKKwogICAgIHAg
PSBleHRyYWN0RW5jb2RlZElEQktleShwLCBsaW1pdCwgJnJlc3VsdC0+bV9lbmNvZGVkVXNlcktl
eSk7CiAgICAgaWYgKCFwKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAocCA9PSBsaW1pdCkg
ewotICAgICAgICByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIgPSAtMTsgLy8gRklYTUU6IFdlIHNo
b3VsZCBjaGFuZ2UgaXQgc28gdGhhdCBhbGwga2V5cyBoYXZlIGEgc2VxdWVuY2UgbnVtYmVyLiBT
aG91bGRuJ3QgbmVlZCB0byBoYW5kbGUgdGhpcyBjYXNlLgorCisgICAgLy8gW29wdGlvbmFsXSBz
ZXF1ZW5jZSBudW1iZXIKKyAgICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIHA7Ci0g
ICAgfQotICAgIHJldHVybiBkZWNvZGVWYXJJbnQocCwgbGltaXQsIHJlc3VsdC0+bV9zZXF1ZW5j
ZU51bWJlcik7CisgICAgcCA9ICBkZWNvZGVWYXJJbnQocCwgbGltaXQsIHJlc3VsdC0+bV9zZXF1
ZW5jZU51bWJlcik7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFtv
cHRpb25hbF0gcHJpbWFyeSBrZXkKKyAgICBpZiAocCA9PSBsaW1pdCkKKyAgICAgICAgcmV0dXJu
IHA7CisgICAgcCA9IGV4dHJhY3RFbmNvZGVkSURCS2V5KHAsIGxpbWl0LCAmcmVzdWx0LT5tX2Vu
Y29kZWRQcmltYXJ5S2V5KTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIHA7CiB9CiAKLVZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29kZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRVc2VyS2V5LCBpbnQ2NF90IHNlcXVlbmNlTnVtYmVyKQor
VmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFZlY3RvcjxjaGFyPiYg
ZW5jb2RlZFVzZXJLZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFByaW1hcnlLZXksIGlu
dDY0X3Qgc2VxdWVuY2VOdW1iZXIpCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4
LmVuY29kZSgpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOwogICAgIHJldC5hcHBl
bmQoZW5jb2RlVmFySW50KHNlcXVlbmNlTnVtYmVyKSk7CisgICAgcmV0LmFwcGVuZChlbmNvZGVk
UHJpbWFyeUtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAorVmVjdG9yPGNoYXI+IEluZGV4RGF0
YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFVzZXJLZXksIGludDY0
X3Qgc2VxdWVuY2VOdW1iZXIpCit7CisgICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkLCBlbmNvZGVkVXNlcktleSwgbWluSURCS2V5KCksIHNlcXVlbmNl
TnVtYmVyKTsKK30KKwogVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IElEQktleSYgdXNlcktleSwgaW50NjRfdCBzZXF1ZW5jZU51bWJlcikKIHsKICAgICByZXR1cm4g
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleSh1
c2VyS2V5KSwgc2VxdWVuY2VOdW1iZXIpOwpAQCAtMTQyOSwxNSArMTQ1MCwxNyBAQCBWZWN0b3I8
Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSQogICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgSU5UMzJfTUFYLCBtYXhJREJLZXkoKSwgSU5UNjRfTUFYKTsKIH0KIAotaW50IEluZGV4
RGF0YUtleTo6Y29tcGFyZShjb25zdCBJbmRleERhdGFLZXkmIG90aGVyLCBib29sIGlnbm9yZVNl
cXVlbmNlTnVtYmVyKQoraW50IEluZGV4RGF0YUtleTo6Y29tcGFyZShjb25zdCBJbmRleERhdGFL
ZXkmIG90aGVyLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJh
c2VJZCA+PSAwKTsKICAgICBBU1NFUlQobV9vYmplY3RTdG9yZUlkID49IDApOwogICAgIEFTU0VS
VChtX2luZGV4SWQgPj0gMCk7CiAgICAgaWYgKGludCB4ID0gY29tcGFyZUVuY29kZWRJREJLZXlz
KG1fZW5jb2RlZFVzZXJLZXksIG90aGVyLm1fZW5jb2RlZFVzZXJLZXkpKQogICAgICAgICByZXR1
cm4geDsKLSAgICBpZiAoaWdub3JlU2VxdWVuY2VOdW1iZXIpCisgICAgaWYgKGlnbm9yZUR1cGxp
Y2F0ZXMpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChpbnQgeCA9IGNvbXBhcmVFbmNvZGVk
SURCS2V5cyhtX2VuY29kZWRQcmltYXJ5S2V5LCBvdGhlci5tX2VuY29kZWRQcmltYXJ5S2V5KSkK
KyAgICAgICAgcmV0dXJuIHg7CiAgICAgcmV0dXJuIGNvbXBhcmVJbnRzKG1fc2VxdWVuY2VOdW1i
ZXIsIG90aGVyLm1fc2VxdWVuY2VOdW1iZXIpOwogfQogCkBAIC0xNDY2LDYgKzE0ODksMTMgQEAg
UGFzc1JlZlB0cjxJREJLZXk+IEluZGV4RGF0YUtleTo6dXNlcktleSgpIGNvbnN0CiAgICAgcmV0
dXJuIGtleTsKIH0KIAorUGFzc1JlZlB0cjxJREJLZXk+IEluZGV4RGF0YUtleTo6cHJpbWFyeUtl
eSgpIGNvbnN0Cit7CisgICAgUmVmUHRyPElEQktleT4ga2V5OworICAgIGRlY29kZUlEQktleSht
X2VuY29kZWRQcmltYXJ5S2V5LmJlZ2luKCksIG1fZW5jb2RlZFByaW1hcnlLZXkuZW5kKCksIGtl
eSk7CisgICAgcmV0dXJuIGtleTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURCTGV2ZWxEQkNvZGlu
ZwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2
ZWxEQkNvZGluZy5oCmluZGV4IDE1ODFmYmJiZmQ3OWYyZmQ2N2RlZDBmM2EyYjU4YWMxOTRhMDVm
ZGUuLjM0YTA5NGQzOTJiMjZkYTVkYjU2YWI1NWRjZWNlYjNkOTU1YzJmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5oCkBAIC0yNjEsMjAgKzI2MSwyMyBAQCBj
bGFzcyBJbmRleERhdGFLZXkgewogcHVibGljOgogICAgIEluZGV4RGF0YUtleSgpOwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxp
bWl0LCBJbmRleERhdGFLZXkqIHJlc3VsdCk7CisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNv
ZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkVXNlcktleSwgY29uc3QgVmVjdG9yPGNo
YXI+JiBlbmNvZGVkUHJpbWFyeUtleSwgaW50NjRfdCBzZXF1ZW5jZU51bWJlcik7CiAgICAgc3Rh
dGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkVXNl
cktleSwgaW50NjRfdCBzZXF1ZW5jZU51bWJlcik7CiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5JiB1c2VyS2V5LCBpbnQ2NF90IHNlcXVlbmNlTnVtYmVyKTsK
ICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgaW50IGNvbXBhcmUoY29uc3QgSW5kZXhEYXRh
S2V5JiBvdGhlciwgYm9vbCBpZ25vcmVTZXF1ZW5jZU51bWJlcik7CisgICAgaW50IGNvbXBhcmUo
Y29uc3QgSW5kZXhEYXRhS2V5JiBvdGhlciwgYm9vbCBpZ25vcmVEdXBsaWNhdGVzKTsKICAgICBp
bnQ2NF90IGRhdGFiYXNlSWQoKSBjb25zdDsKICAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQoKSBj
b25zdDsKICAgICBpbnQ2NF90IGluZGV4SWQoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQktl
eT4gdXNlcktleSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgaW50NjRf
dCBtX29iamVjdFN0b3JlSWQ7CiAgICAgaW50NjRfdCBtX2luZGV4SWQ7CiAgICAgVmVjdG9yPGNo
YXI+IG1fZW5jb2RlZFVzZXJLZXk7CisgICAgVmVjdG9yPGNoYXI+IG1fZW5jb2RlZFByaW1hcnlL
ZXk7CiAgICAgaW50NjRfdCBtX3NlcXVlbmNlTnVtYmVyOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDExMDY2OTg1
ZmNjOTFmNzM5MWZhYTQzMjM3YjFkYTBiMDQwYTJkMTkuLjg5NTBhNmE3MGRiZGEzZGNhMmI1OWFi
ZTA4NmNmNDkwYjViYTBjOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNiAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW5k
ZXhlcyBzaG91bGQgYmUgc2Vjb25kYXJpbHkgc29ydGVkIG9uIHByaW1hcnkga2V5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWw6IEFkZGVk
LgorCiAyMDExLTExLTE1ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBwZXJmL2RvY3VtZW50LWNvbnRhaW5zLmh0bWwgaXMgZmxha3kg
b24gd2luCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
cHJpbWFyeS1rZXktb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjZhNWNhN2MwYjc2ZDdkZjkxZWZmYTE1N2UxOTk5ODMxMzNhYjRiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk3IEBACitUZXN0IEluZGV4ZWREQiBwcmltYXJ5IGtl
eSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Vi
a2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBu
dWxsIGlzIGZhbHNlCitJREJDdXJzb3IgPSB3aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJr
aXRJREJDdXJzb3I7CitQQVNTIElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitJREJUcmFuc2Fj
dGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rp
b24KK1BBU1MgSURCVHJhbnNhY3Rpb24gPT0gbnVsbCBpcyBmYWxzZQorCitvcGVucmVxID0gaW5k
ZXhlZERCLm9wZW4oJ2N1cnNvci1wcmltYXJ5LWtleS1vcmRlcicpCitkYiA9IG9wZW5yZXEucmVz
dWx0Cit2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykKK2luZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ2luZGV4
S2V5JykKKworcG9wdWxhdGluZyBzdG9yZS4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKTsKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MH0sICdjJykKK3N0
b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MX0sICdiJykKK3N0b3JlLnB1dCh7ImluZGV4
S2V5IjowLCJjb3VudCI6Mn0sICdhJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6
M30sICdDJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6NH0sICdCJykKK3N0b3Jl
LnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6NX0sICdBJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5
IjowLCJjb3VudCI6Nn0sICcyJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6N30s
ICcxJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6OH0sICcwJykKK3N0b3JlLnB1
dCh7ImluZGV4S2V5IjowLCJjb3VudCI6OX0sIEluZmluaXR5KQorc3RvcmUucHV0KHsiaW5kZXhL
ZXkiOjAsImNvdW50IjoxMH0sIDIpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjEx
fSwgMSkKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MTJ9LCAwKQorc3RvcmUucHV0
KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxM30sIC0xKQorc3RvcmUucHV0KHsiaW5kZXhLZXkiOjAs
ImNvdW50IjoxNH0sIC0yKQorc3RvcmUucHV0KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxNX0sIC1J
bmZpbml0eSkKKworaXRlcmF0aW5nIGN1cnNvci4uLgordHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsKK2N1cnJlcSA9IGlu
ZGV4Lm9wZW5DdXJzb3IoKQorY291bnQgPSAwCitjdXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNT
IGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAtSW5maW5pdHkKK2N1
cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5w
cmltYXJ5S2V5IGlzIC0yCitjdXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkg
aXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAtMQorY3Vyc29yID0gY3VycmVxLnJlc3Vs
dAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMAorY3Vy
c29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnBy
aW1hcnlLZXkgaXMgMQorY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlz
IDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMgorY3Vyc29yID0gY3VycmVxLnJlc3VsdAor
UEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgSW5maW5pdHkK
K2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNv
ci5wcmltYXJ5S2V5IGlzICcwJworY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iu
a2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzEnCitjdXJzb3IgPSBjdXJyZXEu
cmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAn
MicKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1
cnNvci5wcmltYXJ5S2V5IGlzICdBJworY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJz
b3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJ0InCitjdXJzb3IgPSBjdXJy
ZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAnQycKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAwCitQQVNT
IGN1cnNvci5wcmltYXJ5S2V5IGlzICdhJworY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBj
dXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJ2InCitjdXJzb3IgPSBj
dXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAnYycKK1BBU1MgY291bnQgPT09IGtleXMubGVuZ3RoIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMDgzZTk5ZTQ4YjdmZDgwODViNDU1YTY0ZjBlZTg1YmRmOTQxNmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
cHJpbWFyeS1rZXktb3JkZXIuaHRtbApAQCAtMCwwICsxLDExNiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBwcmltYXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIp
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxBbmRM
b2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWRE
QiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWRE
QiA9PSBudWxsIik7CisgICAgZXZhbEFuZExvZygiSURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNv
ciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkN1
cnNvciA9PSBudWxsIik7CisgICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cu
SURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgc2hv
dWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworCisgICAgcHJlcGFyZURhdGFi
YXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyJykiKTsKKyAgICBvcGVucmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBl
dmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInZl
cnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICB2ZXJyZXEub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNy
ZWF0ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScpIik7CisKKyAgICAgICAgICAgIHZlcnJlcS5y
ZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAgICAgIH07CisgICAgfTsKK30K
Kword2luZG93LmtleXMgPSBbCisgICAgIi1JbmZpbml0eSIsCisgICAgIi0yIiwKKyAgICAiLTEi
LAorICAgICIwIiwKKyAgICAiMSIsCisgICAgIjIiLAorICAgICJJbmZpbml0eSIsCisKKyAgICAi
JzAnIiwKKyAgICAiJzEnIiwKKyAgICAiJzInIiwKKyAgICAiJ0EnIiwKKyAgICAiJ0InIiwKKyAg
ICAiJ0MnIiwKKyAgICAiJ2EnIiwKKyAgICAiJ2InIiwKKyAgICAiJ2MnIgorXTsKKworCitmdW5j
dGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVs
YXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9u
KCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIGluZGV4S2V5ID0g
MDsKKyAgICB2YXIga2V5cyA9IHdpbmRvdy5rZXlzLnNsaWNlKCk7CisgICAga2V5cy5yZXZlcnNl
KCk7CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAgICB2YXIgdmFsdWUg
PSB7IGluZGV4S2V5OiBpbmRleEtleSwgY291bnQ6IGNvdW50KysgfTsKKyAgICAgICAgZXZhbEFu
ZExvZygic3RvcmUucHV0KCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyAiLCAiICsga2V5ICsg
IikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9yZTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJpdGVy
YXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlv
bignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJp
bmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0
Q2FsbGJhY2s7CisgICAgY3VycmVxID0gZXZhbEFuZExvZygiY3VycmVxID0gaW5kZXgub3BlbkN1
cnNvcigpIik7CisgICAgZXZhbEFuZExvZygiY291bnQgPSAwIik7CisgICAgdmFyIGluZGV4S2V5
ID0gMDsKKyAgICBjdXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IGN1cnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGN1cnJlcS5yZXN1
bHQpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IGN1cnJlcS5yZXN1bHQiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgU3RyaW5nKGluZGV4S2V5KSk7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCB3aW5kb3cua2V5c1tjb3Vu
dCsrXSk7CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7CisgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCit0ZXN0KCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115623</attachid>
            <date>2011-11-17 11:16:55 -0800</date>
            <delta_ts>2011-11-17 12:15:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72567-20111117111654.patch</filename>
            <type>text/plain</type>
            <size>18030</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM1NzEwOTNiNjQwZDNm
Y2Q1Zjg1MGQ3ZWRiMjUzNDk1NmVkOTRmNC4uMGVmOTQ0NWQzN2U1Mzc3OTY4NmJmYzYwOGM4YjAy
ZWRkMjZkZjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTE3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbmRl
eGVzIHNob3VsZCBiZSBzZWNvbmRhcmlseSBzb3J0ZWQgb24gcHJpbWFyeSBrZXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2Uv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
Ojpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4RGF0
YUtleTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Oklu
ZGV4RGF0YUtleTo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpJbmRleERhdGFLZXk6OnByaW1hcnlLZXkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxE
QkNvZGluZy5oOgorCiAyMDExLTExLTE1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAwMjEzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhOTNjN2Q2OGE4ZmRlMDkwZGVhNTYxMjlhY2Yw
MTM5NDBkYThlZmE0Li41ZjEyMzE3ZDQ2ZjFjZjkzZmMwZTI5ODZlN2I2ZTZiODAyOWU1YjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTE3ICBK
b3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJ
bmRleGVzIHNob3VsZCBiZSBzZWNvbmRhcmlseSBzb3J0ZWQgb24gcHJpbWFyeSBrZXkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJMZXZl
bERCQ29kaW5nVGVzdC5jcHA6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nOjpURVNUKToKKwog
MjAxMS0xMS0xNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gc2Nyb2xsIGRlbHRhcyBhcmUgY2xlYXJlZCBkdXJpbmcgY29tbWl0IHRvIHRoZSBt
YWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggOGNmZjkxYmE5ZDFhY2VkNDU5MjMzZDkzZDAzNGU2OWE1YjIxOWFi
OC4uMzRkODFlMjNjNGZiYmFiMjNiY2JiYjU2OGE4MzI5YzIyMzYxN2YwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC03OTUs
NyArNzk1LDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JS
ZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG8KIAogICAgIEFTU0VSVChtX2N1cnJl
bnRUcmFuc2FjdGlvbik7CiAgICAgY29uc3QgaW50NjRfdCBnbG9iYWxTZXF1ZW5jZU51bWJlciA9
IGdldE5ld1ZlcnNpb25OdW1iZXIobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQpOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFLZXkg
PSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElk
LCBrZXksIGdsb2JhbFNlcXVlbmNlTnVtYmVyKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5k
ZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIGxldmVsREJSZWNvcmRJZGVudGlmaWVyLT5w
cmltYXJ5S2V5KCksIGdsb2JhbFNlcXVlbmNlTnVtYmVyKTsKIAogICAgIFZlY3RvcjxjaGFyPiBk
YXRhOwogICAgIGRhdGEuYXBwZW5kKGVuY29kZVZhckludChsZXZlbERCUmVjb3JkSWRlbnRpZmll
ci0+dmVyc2lvbigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxl
dmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5n
LmNwcAppbmRleCAyMGY0NWFiNWY5YTRmZDU0YmU1MTcwMTFkZTY5ZjUyYjczNGVjNzI2Li4yOGQ3
NzYyOTFiNTkxMzQ2ODA0NjYyMjg3NDE5MWFmOTdlNjM0NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTEwOSw5ICsxMDksMTAgQEAKIC8vCiAv
LyBJbmRleCBkYXRhOgogLy8KLS8vICAgICBUaGUgcHJlZml4IGlzIGZvbGxvd2VkIGJ5IGEgdHlw
ZSBieXRlLiBUaGUgdXNlciBrZXkgaXMgYW4gZW5jb2RlZCBJREJLZXkuIFRoZSBzZXF1ZW5jZSBu
dW1iZXIgaXMgYSB2YXJpYWJsZSBsZW5ndGggaW50ZWdlci4KKy8vICAgICBUaGUgcHJlZml4IGlz
IGZvbGxvd2VkIGJ5IGEgdHlwZSBieXRlLiBUaGUgaW5kZXgga2V5IGlzIGFuIGVuY29kZWQgSURC
S2V5LiBUaGUgc2VxdWVuY2UgbnVtYmVyIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGludGVnZXIuCisv
LyAgICAgVGhlIHByaW1hcnkga2V5IGlzIGFuIGVuY29kZWQgSURCS2V5LgogLy8KLS8vICAgICA8
ZGF0YWJhc2UgaWQsIG9iamVjdCBzdG9yZSBpZCwgaW5kZXggaWQsIHVzZXIga2V5LCBzZXF1ZW5j
ZSBudW1iZXI+ID0+ICJ2ZXJzaW9uIiwgdXNlciBrZXkgW0luZGV4RGF0YUtleV0KKy8vICAgICA8
ZGF0YWJhc2UgaWQsIG9iamVjdCBzdG9yZSBpZCwgaW5kZXggaWQsIGluZGV4IGtleSwgc2VxdWVu
Y2UgbnVtYmVyLCBwcmltYXJ5IGtleT4gPT4gInZlcnNpb24iLCBwcmltYXJ5IGtleSBbSW5kZXhE
YXRhS2V5XQogLy8KIC8vICAgICAoVGhlIHNlcXVlbmNlIG51bWJlciBpcyB1c2VkIHRvIGFsbG93
IHR3byBlbnRyaWVzIHdpdGggdGhlIHNhbWUgdXNlciBrZXkKIC8vICAgICBpbiBub24tdW5pcXVl
IGluZGV4ZXMuIFRoZSAidmVyc2lvbiIgZmllbGQgaXMgdXNlZCB0byB3ZWVkIG91dCBzdGFsZQpA
QCAtNzM1LDggKzczNiw4IEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29u
c3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKICAgICAgICAgQVNTRVJUKHB0ckEp
OwogICAgICAgICBBU1NFUlQocHRyQik7CiAKLSAgICAgICAgYm9vbCBpZ25vcmVTZXF1ZW5jZU51
bWJlciA9IGluZGV4S2V5czsKLSAgICAgICAgcmV0dXJuIGluZGV4RGF0YUtleUEuY29tcGFyZShp
bmRleERhdGFLZXlCLCBpZ25vcmVTZXF1ZW5jZU51bWJlcik7CisgICAgICAgIGJvb2wgaWdub3Jl
RHVwbGljYXRlcyA9IGluZGV4S2V5czsKKyAgICAgICAgcmV0dXJuIGluZGV4RGF0YUtleUEuY29t
cGFyZShpbmRleERhdGFLZXlCLCBpZ25vcmVEdXBsaWNhdGVzKTsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE0MDAsMjUgKzE0MDEsNDUgQEAgY29uc3QgY2hhciogSW5k
ZXhEYXRhS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJ
bmRleERhdGEKICAgICByZXN1bHQtPm1fZGF0YWJhc2VJZCA9IHByZWZpeC5tX2RhdGFiYXNlSWQ7
CiAgICAgcmVzdWx0LT5tX29iamVjdFN0b3JlSWQgPSBwcmVmaXgubV9vYmplY3RTdG9yZUlkOwog
ICAgIHJlc3VsdC0+bV9pbmRleElkID0gcHJlZml4Lm1faW5kZXhJZDsKKyAgICByZXN1bHQtPm1f
c2VxdWVuY2VOdW1iZXIgPSAtMTsKKyAgICByZXN1bHQtPm1fZW5jb2RlZFByaW1hcnlLZXkgPSBt
aW5JREJLZXkoKTsKKwogICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktleShwLCBsaW1pdCwgJnJl
c3VsdC0+bV9lbmNvZGVkVXNlcktleSk7CiAgICAgaWYgKCFwKQogICAgICAgICByZXR1cm4gMDsK
LSAgICBpZiAocCA9PSBsaW1pdCkgewotICAgICAgICByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIg
PSAtMTsgLy8gRklYTUU6IFdlIHNob3VsZCBjaGFuZ2UgaXQgc28gdGhhdCBhbGwga2V5cyBoYXZl
IGEgc2VxdWVuY2UgbnVtYmVyLiBTaG91bGRuJ3QgbmVlZCB0byBoYW5kbGUgdGhpcyBjYXNlLgor
CisgICAgLy8gW29wdGlvbmFsXSBzZXF1ZW5jZSBudW1iZXIKKyAgICBpZiAocCA9PSBsaW1pdCkK
ICAgICAgICAgcmV0dXJuIHA7Ci0gICAgfQotICAgIHJldHVybiBkZWNvZGVWYXJJbnQocCwgbGlt
aXQsIHJlc3VsdC0+bV9zZXF1ZW5jZU51bWJlcik7CisgICAgcCA9ICBkZWNvZGVWYXJJbnQocCwg
bGltaXQsIHJlc3VsdC0+bV9zZXF1ZW5jZU51bWJlcik7CisgICAgaWYgKCFwKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIC8vIFtvcHRpb25hbF0gcHJpbWFyeSBrZXkKKyAgICBpZiAocCA9PSBs
aW1pdCkKKyAgICAgICAgcmV0dXJuIHA7CisgICAgcCA9IGV4dHJhY3RFbmNvZGVkSURCS2V5KHAs
IGxpbWl0LCAmcmVzdWx0LT5tX2VuY29kZWRQcmltYXJ5S2V5KTsKKyAgICBpZiAoIXApCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHA7CiB9CiAKLVZlY3RvcjxjaGFyPiBJbmRleERh
dGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRVc2VyS2V5LCBpbnQ2
NF90IHNlcXVlbmNlTnVtYmVyKQorVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFVzZXJLZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYg
ZW5jb2RlZFByaW1hcnlLZXksIGludDY0X3Qgc2VxdWVuY2VOdW1iZXIpCiB7CiAgICAgS2V5UHJl
Zml4IHByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAgICBWZWN0
b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlZFVz
ZXJLZXkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KHNlcXVlbmNlTnVtYmVyKSk7Cisg
ICAgcmV0LmFwcGVuZChlbmNvZGVkUHJpbWFyeUtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAor
VmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFZlY3RvcjxjaGFyPiYg
ZW5jb2RlZFVzZXJLZXksIGludDY0X3Qgc2VxdWVuY2VOdW1iZXIpCit7CisgICAgcmV0dXJuIGVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBlbmNvZGVkVXNlcktleSwg
bWluSURCS2V5KCksIHNlcXVlbmNlTnVtYmVyKTsKK30KKwogVmVjdG9yPGNoYXI+IEluZGV4RGF0
YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYgdXNlcktleSwgaW50NjRfdCBzZXF1ZW5jZU51
bWJlcikKIHsKICAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGVuY29kZUlEQktleSh1c2VyS2V5KSwgc2VxdWVuY2VOdW1iZXIpOwpAQCAtMTQyOSwx
NSArMTQ1MCwxNyBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogICAgIHJldHVybiBlbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgSU5UMzJfTUFYLCBtYXhJREJLZXkoKSwgSU5UNjRf
TUFYKTsKIH0KIAotaW50IEluZGV4RGF0YUtleTo6Y29tcGFyZShjb25zdCBJbmRleERhdGFLZXkm
IG90aGVyLCBib29sIGlnbm9yZVNlcXVlbmNlTnVtYmVyKQoraW50IEluZGV4RGF0YUtleTo6Y29t
cGFyZShjb25zdCBJbmRleERhdGFLZXkmIG90aGVyLCBib29sIGlnbm9yZUR1cGxpY2F0ZXMpCiB7
CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJZCA+PSAwKTsKICAgICBBU1NFUlQobV9vYmplY3RTdG9y
ZUlkID49IDApOwogICAgIEFTU0VSVChtX2luZGV4SWQgPj0gMCk7CiAgICAgaWYgKGludCB4ID0g
Y29tcGFyZUVuY29kZWRJREJLZXlzKG1fZW5jb2RlZFVzZXJLZXksIG90aGVyLm1fZW5jb2RlZFVz
ZXJLZXkpKQogICAgICAgICByZXR1cm4geDsKLSAgICBpZiAoaWdub3JlU2VxdWVuY2VOdW1iZXIp
CisgICAgaWYgKGlnbm9yZUR1cGxpY2F0ZXMpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChp
bnQgeCA9IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhtX2VuY29kZWRQcmltYXJ5S2V5LCBvdGhlci5t
X2VuY29kZWRQcmltYXJ5S2V5KSkKKyAgICAgICAgcmV0dXJuIHg7CiAgICAgcmV0dXJuIGNvbXBh
cmVJbnRzKG1fc2VxdWVuY2VOdW1iZXIsIG90aGVyLm1fc2VxdWVuY2VOdW1iZXIpOwogfQogCkBA
IC0xNDY2LDYgKzE0ODksMTMgQEAgUGFzc1JlZlB0cjxJREJLZXk+IEluZGV4RGF0YUtleTo6dXNl
cktleSgpIGNvbnN0CiAgICAgcmV0dXJuIGtleTsKIH0KIAorUGFzc1JlZlB0cjxJREJLZXk+IElu
ZGV4RGF0YUtleTo6cHJpbWFyeUtleSgpIGNvbnN0Cit7CisgICAgUmVmUHRyPElEQktleT4ga2V5
OworICAgIGRlY29kZUlEQktleShtX2VuY29kZWRQcmltYXJ5S2V5LmJlZ2luKCksIG1fZW5jb2Rl
ZFByaW1hcnlLZXkuZW5kKCksIGtleSk7CisgICAgcmV0dXJuIGtleTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSURCTGV2ZWxEQkNvZGluZwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IDE1ODFmYmJiZmQ3OWYyZmQ2
N2RlZDBmM2EyYjU4YWMxOTRhMDVmZGUuLjM0YTA5NGQzOTJiMjZkYTVkYjU2YWI1NWRjZWNlYjNk
OTU1YzJmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNv
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5oCkBA
IC0yNjEsMjAgKzI2MSwyMyBAQCBjbGFzcyBJbmRleERhdGFLZXkgewogcHVibGljOgogICAgIElu
ZGV4RGF0YUtleSgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWNvZGUoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleERhdGFLZXkqIHJlc3VsdCk7CisgICAgc3Rh
dGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkVXNl
cktleSwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkUHJpbWFyeUtleSwgaW50NjRfdCBzZXF1
ZW5jZU51bWJlcik7CiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgVmVj
dG9yPGNoYXI+JiBlbmNvZGVkVXNlcktleSwgaW50NjRfdCBzZXF1ZW5jZU51bWJlcik7CiAgICAg
c3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiB1c2VyS2V5LCBpbnQ2
NF90IHNlcXVlbmNlTnVtYmVyKTsKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZU1heEtl
eShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgaW50IGNv
bXBhcmUoY29uc3QgSW5kZXhEYXRhS2V5JiBvdGhlciwgYm9vbCBpZ25vcmVTZXF1ZW5jZU51bWJl
cik7CisgICAgaW50IGNvbXBhcmUoY29uc3QgSW5kZXhEYXRhS2V5JiBvdGhlciwgYm9vbCBpZ25v
cmVEdXBsaWNhdGVzKTsKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQoKSBjb25zdDsKICAgICBpbnQ2
NF90IG9iamVjdFN0b3JlSWQoKSBjb25zdDsKICAgICBpbnQ2NF90IGluZGV4SWQoKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPElEQktleT4gdXNlcktleSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX2Rh
dGFiYXNlSWQ7CiAgICAgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgaW50NjRfdCBtX2lu
ZGV4SWQ7CiAgICAgVmVjdG9yPGNoYXI+IG1fZW5jb2RlZFVzZXJLZXk7CisgICAgVmVjdG9yPGNo
YXI+IG1fZW5jb2RlZFByaW1hcnlLZXk7CiAgICAgaW50NjRfdCBtX3NlcXVlbmNlTnVtYmVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERC
Q29kaW5nVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJD
b2RpbmdUZXN0LmNwcAppbmRleCA3ZDYxNTllNmExYjFmYzRhZjMzNWI5ZThmNDYwMmUzZTYzMzRk
OGNlLi4zMTY4ZGZmN2JlNmYxNmFhNjU0ZmY2MTIxMzQ5OTg0OTcyMjUyMTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNw
cApAQCAtNDg1LDggKzQ4NSwxMiBAQCBURVNUKElEQkxldmVsREJDb2RpbmdUZXN0LCBDb21wYXJp
c29uVGVzdCkKICAgICBrZXlzLmFwcGVuZChFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKDEsIDEsIG1h
eElEQktleSgpKSk7CiAgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwg
MzAsIG1pbklEQktleSgpLCAwKSk7CiAgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNv
ZGUoMSwgMSwgMzAsIG1pbklEQktleSgpLCAxKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRh
S2V5OjplbmNvZGUoMSwgMSwgMzAsIG1pbklEQktleSgpLCBtYXhJREJLZXkoKSwgMCkpOworICAg
IGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtaW5JREJLZXkoKSwg
bWF4SURCS2V5KCksIDEpKTsKICAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgx
LCAxLCAzMCwgbWF4SURCS2V5KCksIDApKTsKICAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6
OmVuY29kZSgxLCAxLCAzMCwgbWF4SURCS2V5KCksIDEpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRl
eERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWF4SURCS2V5KCksIG1heElEQktleSgpLCAwKSk7
CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwgMzAsIG1heElEQktl
eSgpLCBtYXhJREJLZXkoKSwgMSkpOwogICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5j
b2RlKDEsIDEsIDMxLCBtaW5JREJLZXkoKSwgMCkpOwogICAgIGtleXMuYXBwZW5kKEluZGV4RGF0
YUtleTo6ZW5jb2RlKDEsIDIsIDMwLCBtaW5JREJLZXkoKSwgMCkpOwogICAgIGtleXMuYXBwZW5k
KEluZGV4RGF0YUtleTo6ZW5jb2RlTWF4S2V5KDEsIDIpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMTA2Njk4NWZjYzkx
ZjczOTFmYWE0MzIzN2IxZGEwYjA0MGEyZDE5Li40NGE5ZTBhYWUwZDYzZjA5NjY5MmU5OTdmNzEx
ZjNhMWI2NzEyZWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTcgIEpvc2h1YSBC
ZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEluZGV4ZXMg
c2hvdWxkIGJlIHNlY29uZGFyaWx5IHNvcnRlZCBvbiBwcmltYXJ5IGtleQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1wcmltYXJ5LWtleS1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMS0xNSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gcGVyZi9kb2N1bWVudC1jb250YWlucy5odG1sIGlzIGZsYWt5IG9uIHdp
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI2YTVj
YTdjMGI3NmQ3ZGY5MWVmZmExNTdlMTk5OTgzMTMzYWI0YgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw5NyBAQAorVGVzdCBJbmRleGVkREIgcHJpbWFyeSBrZXkgb3Jk
ZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdElu
ZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBp
cyBmYWxzZQorSURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURC
Q3Vyc29yOworUEFTUyBJREJDdXJzb3IgPT0gbnVsbCBpcyBmYWxzZQorSURCVHJhbnNhY3Rpb24g
PSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCitQ
QVNTIElEQlRyYW5zYWN0aW9uID09IG51bGwgaXMgZmFsc2UKKworb3BlbnJlcSA9IGluZGV4ZWRE
Qi5vcGVuKCdjdXJzb3ItcHJpbWFyeS1rZXktb3JkZXInKQorZGIgPSBvcGVucmVxLnJlc3VsdAor
dmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScp
CisKK3BvcHVsYXRpbmcgc3RvcmUuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywg
SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlJyk7CitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjB9LCAnYycpCitzdG9yZS5w
dXQoeyJpbmRleEtleSI6MCwiY291bnQiOjF9LCAnYicpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6
MCwiY291bnQiOjJ9LCAnYScpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjN9LCAn
QycpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjR9LCAnQicpCitzdG9yZS5wdXQo
eyJpbmRleEtleSI6MCwiY291bnQiOjV9LCAnQScpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwi
Y291bnQiOjZ9LCAnMicpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjd9LCAnMScp
CitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjh9LCAnMCcpCitzdG9yZS5wdXQoeyJp
bmRleEtleSI6MCwiY291bnQiOjl9LCBJbmZpbml0eSkKK3N0b3JlLnB1dCh7ImluZGV4S2V5Ijow
LCJjb3VudCI6MTB9LCAyKQorc3RvcmUucHV0KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxMX0sIDEp
CitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjEyfSwgMCkKK3N0b3JlLnB1dCh7Imlu
ZGV4S2V5IjowLCJjb3VudCI6MTN9LCAtMSkKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3Vu
dCI6MTR9LCAtMikKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MTV9LCAtSW5maW5p
dHkpCisKK2l0ZXJhdGluZyBjdXJzb3IuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
JywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitjdXJyZXEgPSBpbmRleC5v
cGVuQ3Vyc29yKCkKK2NvdW50ID0gMAorY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJz
b3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgLUluZmluaXR5CitjdXJzb3Ig
PSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAtMgorY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAK
K1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgLTEKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BB
U1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDAKK2N1cnNvciA9
IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5
S2V5IGlzIDEKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyAwCitQ
QVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDIKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1Mg
Y3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIEluZmluaXR5CitjdXJz
b3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyAnMCcKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBp
cyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcxJworY3Vyc29yID0gY3VycmVxLnJlc3Vs
dAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJzInCitj
dXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3Iu
cHJpbWFyeUtleSBpcyAnQScKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29yLmtl
eSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICdCJworY3Vyc29yID0gY3VycmVxLnJl
c3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgJ0Mn
CitjdXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJz
b3IucHJpbWFyeUtleSBpcyAnYScKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29y
LmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICdiJworY3Vyc29yID0gY3VycmVx
LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
J2MnCitQQVNTIGNvdW50ID09PSBrZXlzLmxlbmd0aCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YjA4M2U5OWU0OGI3ZmQ4MDg1YjQ1NWE2NGYwZWU4NWJkZjk0MTZlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyLmh0bWwKQEAgLTAsMCArMSwxMTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVk
REIgcHJpbWFyeSBrZXkgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4iKTsKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJp
bmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwg
d2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0g
bnVsbCIpOworICAgIGV2YWxBbmRMb2coIklEQkN1cnNvciA9IHdpbmRvdy5JREJDdXJzb3IgfHwg
d2luZG93LndlYmtpdElEQkN1cnNvcjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJDdXJzb3Ig
PT0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRy
YW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIHNob3VsZEJl
RmFsc2UoIklEQlRyYW5zYWN0aW9uID09IG51bGwiKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgp
OworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAg
ICBldmFsQW5kTG9nKCJvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1wcmltYXJ5LWtl
eS1vcmRlcicpIik7CisgICAgb3BlbnJlcS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFu
ZExvZygiZGIgPSBvcGVucmVxLnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgnLCAnaW5kZXhLZXknKSIpOworCisgICAgICAgICAgICB2ZXJyZXEucmVzdWx0
Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9CisKK3dp
bmRvdy5rZXlzID0gWworICAgICItSW5maW5pdHkiLAorICAgICItMiIsCisgICAgIi0xIiwKKyAg
ICAiMCIsCisgICAgIjEiLAorICAgICIyIiwKKyAgICAiSW5maW5pdHkiLAorCisgICAgIicwJyIs
CisgICAgIicxJyIsCisgICAgIicyJyIsCisgICAgIidBJyIsCisgICAgIidCJyIsCisgICAgIidD
JyIsCisgICAgIidhJyIsCisgICAgIidiJyIsCisgICAgIidjJyIKK107CisKKworZnVuY3Rpb24g
cG9wdWxhdGVTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJwb3B1bGF0aW5n
IHN0b3JlLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgdHJhbnMub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHZhciBpbmRleEtleSA9IDA7Cisg
ICAgdmFyIGtleXMgPSB3aW5kb3cua2V5cy5zbGljZSgpOworICAgIGtleXMucmV2ZXJzZSgpOwor
ICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgdmFyIHZhbHVlID0geyBp
bmRleEtleTogaW5kZXhLZXksIGNvdW50OiBjb3VudCsrIH07CisgICAgICAgIGV2YWxBbmRMb2co
InN0b3JlLnB1dCgiICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgIiwgIiArIGtleSArICIpIik7
CisgICAgfSk7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGNoZWNrU3RvcmU7Cit9CisKK2Z1bmN0
aW9uIGNoZWNrU3RvcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiaXRlcmF0aW5n
IGN1cnNvci4uLiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIGV2YWxBbmRMb2coInN0b3Jl
ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXgg
PSBzdG9yZS5pbmRleCgnaW5kZXgnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgIGN1cnJlcSA9IGV2YWxBbmRMb2coImN1cnJlcSA9IGluZGV4Lm9wZW5DdXJzb3Io
KSIpOworICAgIGV2YWxBbmRMb2coImNvdW50ID0gMCIpOworICAgIHZhciBpbmRleEtleSA9IDA7
CisgICAgY3VycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBjdXJy
ZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChjdXJyZXEucmVzdWx0KSB7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBjdXJyZXEucmVzdWx0Iik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsIFN0cmluZyhpbmRleEtleSkpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImN1cnNvci5wcmltYXJ5S2V5Iiwgd2luZG93LmtleXNbY291bnQrK10p
OworICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImNvdW50ID09PSBrZXlzLmxlbmd0aCIpOworICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICB9CisgICAgfTsKK30KKwordGVzdCgpOworCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115652</attachid>
            <date>2011-11-17 12:15:29 -0800</date>
            <delta_ts>2011-11-23 11:30:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72567-20111117121528.patch</filename>
            <type>text/plain</type>
            <size>24728</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM1NzEwOTNiNjQwZDNm
Y2Q1Zjg1MGQ3ZWRiMjUzNDk1NmVkOTRmNC4uMGVmOTQ0NWQzN2U1Mzc3OTY4NmJmYzYwOGM4YjAy
ZWRkMjZkZjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTE3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbmRl
eGVzIHNob3VsZCBiZSBzZWNvbmRhcmlseSBzb3J0ZWQgb24gcHJpbWFyeSBrZXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLmh0bWwKKworICAgICAgICAqIHN0b3JhZ2Uv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
Ojpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4RGF0
YUtleTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Oklu
ZGV4RGF0YUtleTo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpJbmRleERhdGFLZXk6OnByaW1hcnlLZXkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxE
QkNvZGluZy5oOgorCiAyMDExLTExLTE1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAwMjEzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhOTNjN2Q2OGE4ZmRlMDkwZGVhNTYxMjlhY2Yw
MTM5NDBkYThlZmE0Li41ZjEyMzE3ZDQ2ZjFjZjkzZmMwZTI5ODZlN2I2ZTZiODAyOWU1YjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTE3ICBK
b3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJ
bmRleGVzIHNob3VsZCBiZSBzZWNvbmRhcmlseSBzb3J0ZWQgb24gcHJpbWFyeSBrZXkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJMZXZl
bERCQ29kaW5nVGVzdC5jcHA6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nOjpURVNUKToKKwog
MjAxMS0xMS0xNSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gc2Nyb2xsIGRlbHRhcyBhcmUgY2xlYXJlZCBkdXJpbmcgY29tbWl0IHRvIHRoZSBt
YWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggOGNmZjkxYmE5ZDFhY2VkNDU5MjMzZDkzZDAzNGU2OWE1YjIxOWFi
OC4uZWM3NWQwZmMwNmQ5NWRlY2FmYzQ1OWRmN2NhNjA5YWE2NDBjNmQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC03Nzks
OCArNzc5LDggQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFTdGFydCA9IEluZGV4RGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIG1pbklEQktleSgp
LCAwKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhRW5kID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgbWF4SURCS2V5KCks
IDApOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFTdGFydCA9IEluZGV4RGF0YUtl
eTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOworICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFFbmQgPSBJbmRleERhdGFLZXk6OmVuY29kZU1h
eEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKIAogICAgIGlmICghZGVs
ZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGluZGV4RGF0YVN0YXJ0LCBpbmRl
eERhdGFFbmQpKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJv
ci4iKTsKQEAgLTc5NCw4ICs3OTQsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1
dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QgbwogICAgIGNv
bnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9IHN0
YXRpY19jYXN0PGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKj4ocmVjb3JkSWRlbnRpZmll
cik7CiAKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwotICAgIGNvbnN0IGludDY0
X3QgZ2xvYmFsU2VxdWVuY2VOdW1iZXIgPSBnZXROZXdWZXJzaW9uTnVtYmVyKG1fY3VycmVudFRy
YW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKLSAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5LCBnbG9iYWxTZXF1ZW5jZU51bWJlcik7Cisg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCBs
ZXZlbERCUmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKIAogICAgIFZlY3RvcjxjaGFy
PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKGVuY29kZVZhckludChsZXZlbERCUmVjb3JkSWRlbnRp
Zmllci0+dmVyc2lvbigpKSk7CkBAIC04NTYsNyArODU1LDcgQEAgc3RhdGljIGJvb2wgZmluZEtl
eUluSW5kZXgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLAogewogICAgIEFTU0VSVChmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmlzRW1wdHkoKSk7CiAK
LSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSwgMCk7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGxldmVsZGJLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXkpOwogICAgIE93blB0cjxMZXZlbERCSXRlcmF0
b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgaXQtPnNlZWsobGV2
ZWxkYktleSk7CiAKQEAgLTEyOTMsMTUgKzEyOTIsMTUgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29y
KGkKICAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpO
RVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJ
Q0FURSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKLSAgICAgICAgY3Vyc29yT3B0aW9ucy5s
b3dLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBtaW5JREJLZXkoKSwgMCk7CisgICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5ID0g
SW5kZXhEYXRhS2V5OjplbmNvZGVNaW5LZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5k
ZXhJZCk7CiAgICAgICAgIGN1cnNvck9wdGlvbnMubG93T3BlbiA9IGZhbHNlOyAvLyBJbmNsdWRl
ZC4KICAgICB9IGVsc2UgewotICAgICAgICBjdXJzb3JPcHRpb25zLmxvd0tleSA9IEluZGV4RGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+
bG93ZXIoKSwgMCk7CisgICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5ID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKnJhbmdlLT5sb3dl
cigpKTsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5sb3dPcGVuID0gcmFuZ2UtPmxvd2VyT3Blbigp
OwogICAgIH0KIAogICAgIGlmICghdXBwZXJCb3VuZCkgewotICAgICAgICBjdXJzb3JPcHRpb25z
LmhpZ2hLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBtYXhJREJLZXkoKSwgMCk7CisgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaEtl
eSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQpOwogICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7IC8vIElu
Y2x1ZGVkLgogCiAgICAgICAgIGlmICghY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7IC8vIFdlIG5l
ZWQgYSBrZXkgdGhhdCBleGlzdHMuCkBAIC0xMzEwLDcgKzEzMDksNyBAQCBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhL
ZXlDdXJzb3IoaQogICAgICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0g
SW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
KnJhbmdlLT51cHBlcigpLCAwKTsKKyAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gSW5k
ZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKnJh
bmdlLT51cHBlcigpKTsKICAgICAgICAgaWYgKCFmaW5kTGFzdEluZGV4S2V5RXF1YWxUbyhtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBjdXJzb3JPcHRp
b25zLmhpZ2hLZXkpKSAvLyBTZWVrIHRvIHRoZSAqbGFzdCoga2V5IGluIHRoZSBzZXQgb2Ygbm9u
LXVuaXF1ZSBrZXlzLgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGN1cnNvck9wdGlv
bnMuaGlnaE9wZW4gPSByYW5nZS0+dXBwZXJPcGVuKCk7CkBAIC0xMzMzLDE1ICsxMzMyLDE1IEBA
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3Rv
cmU6Om9wZW5JbmRleEN1cnNvcihpbnQ2CiAgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGly
ZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElE
QkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOwogCiAgICAgaWYgKCFsb3dlckJvdW5kKSB7Ci0g
ICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgbWluSURCS2V5KCksIDApOworICAgICAgICBj
dXJzb3JPcHRpb25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAgICAgICBjdXJzb3JPcHRpb25zLmxvd09w
ZW4gPSBmYWxzZTsgLy8gSW5jbHVkZWQuCiAgICAgfSBlbHNlIHsKLSAgICAgICAgY3Vyc29yT3B0
aW9ucy5sb3dLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCAqcmFuZ2UtPmxvd2VyKCksIDApOworICAgICAgICBjdXJzb3JPcHRpb25z
Lmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsICpyYW5nZS0+bG93ZXIoKSk7CiAgICAgICAgIGN1cnNvck9wdGlvbnMubG93T3Bl
biA9IHJhbmdlLT5sb3dlck9wZW4oKTsKICAgICB9CiAKICAgICBpZiAoIXVwcGVyQm91bmQpIHsK
LSAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgbWF4SURCS2V5KCksIDApOworICAgICAg
ICBjdXJzb3JPcHRpb25zLmhpZ2hLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZU1heEtleShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5o
aWdoT3BlbiA9IGZhbHNlOyAvLyBJbmNsdWRlZC4KIAogICAgICAgICBpZiAoIWN1cnNvck9wdGlv
bnMuZm9yd2FyZCkgeyAvLyBXZSBuZWVkIGEga2V5IHRoYXQgZXhpc3RzLgpAQCAtMTM1MCw3ICsx
MzQ5LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKGludDYKICAgICAgICAgICAgIGN1cnNvck9wdGlv
bnMuaGlnaE9wZW4gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGN1
cnNvck9wdGlvbnMuaGlnaEtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+dXBwZXIoKSwgMCk7CisgICAgICAgIGN1cnNv
ck9wdGlvbnMuaGlnaEtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+dXBwZXIoKSk7CiAgICAgICAgIGlmICghZmluZExh
c3RJbmRleEtleUVxdWFsVG8obV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGN1cnNvck9wdGlv
bnMuaGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSkgLy8gU2VlayB0byB0aGUgKmxhc3Qq
IGtleSBpbiB0aGUgc2V0IG9mIG5vbi11bmlxdWUga2V5cy4KICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gcmFuZ2UtPnVwcGVyT3BlbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKaW5kZXggMjBmNDVh
YjVmOWE0ZmQ1NGJlNTE3MDExZGU2OWY1MmI3MzRlYzcyNi4uMWNjYWMxZWQ5NmZlYzUwZDQ1Njg4
MmQ3ODU4ZmY5MmIwNjczMzA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJDb2RpbmcuY3BwCkBAIC0xMDksMTIgKzEwOSwxNCBAQAogLy8KIC8vIEluZGV4IGRhdGE6CiAv
LwotLy8gICAgIFRoZSBwcmVmaXggaXMgZm9sbG93ZWQgYnkgYSB0eXBlIGJ5dGUuIFRoZSB1c2Vy
IGtleSBpcyBhbiBlbmNvZGVkIElEQktleS4gVGhlIHNlcXVlbmNlIG51bWJlciBpcyBhIHZhcmlh
YmxlIGxlbmd0aCBpbnRlZ2VyLgorLy8gICAgIFRoZSBwcmVmaXggaXMgZm9sbG93ZWQgYnkgYSB0
eXBlIGJ5dGUuIFRoZSBpbmRleCBrZXkgaXMgYW4gZW5jb2RlZCBJREJLZXkuIFRoZSBzZXF1ZW5j
ZSBudW1iZXIgaXMgYSB2YXJpYWJsZSBsZW5ndGggaW50ZWdlci4KKy8vICAgICBUaGUgcHJpbWFy
eSBrZXkgaXMgYW4gZW5jb2RlZCBJREJLZXkuCiAvLwotLy8gICAgIDxkYXRhYmFzZSBpZCwgb2Jq
ZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgdXNlciBrZXksIHNlcXVlbmNlIG51bWJlcj4gPT4gInZl
cnNpb24iLCB1c2VyIGtleSBbSW5kZXhEYXRhS2V5XQorLy8gICAgIDxkYXRhYmFzZSBpZCwgb2Jq
ZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgaW5kZXgga2V5LCBzZXF1ZW5jZSBudW1iZXIsIHByaW1h
cnkga2V5PiA9PiAidmVyc2lvbiIsIHByaW1hcnkga2V5IFtJbmRleERhdGFLZXldCiAvLwotLy8g
ICAgIChUaGUgc2VxdWVuY2UgbnVtYmVyIGlzIHVzZWQgdG8gYWxsb3cgdHdvIGVudHJpZXMgd2l0
aCB0aGUgc2FtZSB1c2VyIGtleQotLy8gICAgIGluIG5vbi11bmlxdWUgaW5kZXhlcy4gVGhlICJ2
ZXJzaW9uIiBmaWVsZCBpcyB1c2VkIHRvIHdlZWQgb3V0IHN0YWxlCisvLyAgICAgKFRoZSBzZXF1
ZW5jZSBudW1iZXIgaXMgb2Jzb2xldGU7IGl0IHdhcyB1c2VkIHRvIGFsbG93IHR3byBlbnRyaWVz
IHdpdGgKKy8vICAgICB0aGUgc2FtZSB1c2VyIChpbmRleCkga2V5IGluIG5vbi11bmlxdWUgaW5k
ZXhlcyBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mCisvLyAgICAgdGhlIHByaW1hcnkga2V5IGlu
IHRoZSBkYXRhLiBUaGUgInZlcnNpb24iIGZpZWxkIGlzIHVzZWQgdG8gd2VlZCBvdXQgc3RhbGUK
IC8vICAgICBpbmRleCBkYXRhLiBXaGVuZXZlciBuZXcgb2JqZWN0IHN0b3JlIGRhdGEgaXMgaW5z
ZXJ0ZWQsIGl0IGdldHMgYSBuZXcKIC8vICAgICAidmVyc2lvbiIgbnVtYmVyLCBhbmQgbmV3IGlu
ZGV4IGRhdGEgaXMgd3JpdHRlbiB3aXRoIHRoaXMgbnVtYmVyLiBXaGVuCiAvLyAgICAgdGhlIGlu
ZGV4IGlzIHVzZWQgZm9yIGxvb2stdXBzLCBlbnRyaWVzIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCB0
aGUKQEAgLTczNSw4ICs3MzcsOCBAQCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEs
IGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCiAgICAgICAgIEFTU0VSVChw
dHJBKTsKICAgICAgICAgQVNTRVJUKHB0ckIpOwogCi0gICAgICAgIGJvb2wgaWdub3JlU2VxdWVu
Y2VOdW1iZXIgPSBpbmRleEtleXM7Ci0gICAgICAgIHJldHVybiBpbmRleERhdGFLZXlBLmNvbXBh
cmUoaW5kZXhEYXRhS2V5QiwgaWdub3JlU2VxdWVuY2VOdW1iZXIpOworICAgICAgICBib29sIGln
bm9yZUR1cGxpY2F0ZXMgPSBpbmRleEtleXM7CisgICAgICAgIHJldHVybiBpbmRleERhdGFLZXlB
LmNvbXBhcmUoaW5kZXhEYXRhS2V5QiwgaWdub3JlRHVwbGljYXRlcyk7CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDAwLDQ0ICsxNDAyLDY2IEBAIGNvbnN0IGNoYXIq
IEluZGV4RGF0YUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1p
dCwgSW5kZXhEYXRhCiAgICAgcmVzdWx0LT5tX2RhdGFiYXNlSWQgPSBwcmVmaXgubV9kYXRhYmFz
ZUlkOwogICAgIHJlc3VsdC0+bV9vYmplY3RTdG9yZUlkID0gcHJlZml4Lm1fb2JqZWN0U3RvcmVJ
ZDsKICAgICByZXN1bHQtPm1faW5kZXhJZCA9IHByZWZpeC5tX2luZGV4SWQ7CisgICAgcmVzdWx0
LT5tX3NlcXVlbmNlTnVtYmVyID0gLTE7CisgICAgcmVzdWx0LT5tX2VuY29kZWRQcmltYXJ5S2V5
ID0gbWluSURCS2V5KCk7CisKICAgICBwID0gZXh0cmFjdEVuY29kZWRJREJLZXkocCwgbGltaXQs
ICZyZXN1bHQtPm1fZW5jb2RlZFVzZXJLZXkpOwogICAgIGlmICghcCkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgaWYgKHAgPT0gbGltaXQpIHsKLSAgICAgICAgcmVzdWx0LT5tX3NlcXVlbmNlTnVt
YmVyID0gLTE7IC8vIEZJWE1FOiBXZSBzaG91bGQgY2hhbmdlIGl0IHNvIHRoYXQgYWxsIGtleXMg
aGF2ZSBhIHNlcXVlbmNlIG51bWJlci4gU2hvdWxkbid0IG5lZWQgdG8gaGFuZGxlIHRoaXMgY2Fz
ZS4KKworICAgIC8vIFtvcHRpb25hbF0gc2VxdWVuY2UgbnVtYmVyCisgICAgaWYgKHAgPT0gbGlt
aXQpCiAgICAgICAgIHJldHVybiBwOwotICAgIH0KLSAgICByZXR1cm4gZGVjb2RlVmFySW50KHAs
IGxpbWl0LCByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIpOworICAgIHAgPSAgZGVjb2RlVmFySW50
KHAsIGxpbWl0LCByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIpOworICAgIGlmICghcCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBbb3B0aW9uYWxdIHByaW1hcnkga2V5CisgICAgaWYgKHAg
PT0gbGltaXQpCisgICAgICAgIHJldHVybiBwOworICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktl
eShwLCBsaW1pdCwgJnJlc3VsdC0+bV9lbmNvZGVkUHJpbWFyeUtleSk7CisgICAgaWYgKCFwKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBwOwogfQogCi1WZWN0b3I8Y2hhcj4gSW5k
ZXhEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkVXNlcktleSwg
aW50NjRfdCBzZXF1ZW5jZU51bWJlcikKK1ZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29k
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRVc2VyS2V5LCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGVuY29kZWRQcmltYXJ5S2V5LCBpbnQ2NF90IHNlcXVlbmNlTnVtYmVyKQogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICByZXQuYXBwZW5kKGVuY29k
ZWRVc2VyS2V5KTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikp
OworICAgIHJldC5hcHBlbmQoZW5jb2RlZFByaW1hcnlLZXkpOwogICAgIHJldHVybiByZXQ7CiB9
CiAKLVZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIHVz
ZXJLZXksIGludDY0X3Qgc2VxdWVuY2VOdW1iZXIpCitWZWN0b3I8Y2hhcj4gSW5kZXhEYXRhS2V5
OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiB1c2VyS2V5KQoreworICAgIHJldHVybiBlbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KHVzZXJLZXkp
LCBtaW5JREJLZXkoKSk7Cit9CisKK1ZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29kZU1p
bktleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkKQogewotICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwgZW5jb2RlSURCS2V5KHVzZXJLZXkpLCBzZXF1ZW5jZU51bWJlcik7CisgICAgcmV0
dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBtaW5JREJLZXko
KSwgbWluSURCS2V5KCkpOwogfQogCi1WZWN0b3I8Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGVN
YXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCitWZWN0b3I8
Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKIHsKLSAgICByZXR1cm4gZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDMyX01BWCwgbWF4SURCS2V5KCksIElOVDY0
X01BWCk7CisgICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBtYXhJREJLZXkoKSwgbWF4SURCS2V5KCksIElOVDY0X01BWCk7CiB9CiAKLWludCBJbmRl
eERhdGFLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhEYXRhS2V5JiBvdGhlciwgYm9vbCBpZ25vcmVT
ZXF1ZW5jZU51bWJlcikKK2ludCBJbmRleERhdGFLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhEYXRh
S2V5JiBvdGhlciwgYm9vbCBpZ25vcmVEdXBsaWNhdGVzKQogewogICAgIEFTU0VSVChtX2RhdGFi
YXNlSWQgPj0gMCk7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCA+PSAwKTsKICAgICBBU1NF
UlQobV9pbmRleElkID49IDApOwogICAgIGlmIChpbnQgeCA9IGNvbXBhcmVFbmNvZGVkSURCS2V5
cyhtX2VuY29kZWRVc2VyS2V5LCBvdGhlci5tX2VuY29kZWRVc2VyS2V5KSkKICAgICAgICAgcmV0
dXJuIHg7Ci0gICAgaWYgKGlnbm9yZVNlcXVlbmNlTnVtYmVyKQorICAgIGlmIChpZ25vcmVEdXBs
aWNhdGVzKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoaW50IHggPSBjb21wYXJlRW5jb2Rl
ZElEQktleXMobV9lbmNvZGVkUHJpbWFyeUtleSwgb3RoZXIubV9lbmNvZGVkUHJpbWFyeUtleSkp
CisgICAgICAgIHJldHVybiB4OwogICAgIHJldHVybiBjb21wYXJlSW50cyhtX3NlcXVlbmNlTnVt
YmVyLCBvdGhlci5tX3NlcXVlbmNlTnVtYmVyKTsKIH0KIApAQCAtMTQ2Niw2ICsxNDkwLDEzIEBA
IFBhc3NSZWZQdHI8SURCS2V5PiBJbmRleERhdGFLZXk6OnVzZXJLZXkoKSBjb25zdAogICAgIHJl
dHVybiBrZXk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCS2V5PiBJbmRleERhdGFLZXk6OnByaW1hcnlL
ZXkoKSBjb25zdAoreworICAgIFJlZlB0cjxJREJLZXk+IGtleTsKKyAgICBkZWNvZGVJREJLZXko
bV9lbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBtX2VuY29kZWRQcmltYXJ5S2V5LmVuZCgpLCBr
ZXkpOworICAgIHJldHVybiBrZXk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQkxldmVsREJDb2Rp
bmcKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxl
dmVsREJDb2RpbmcuaAppbmRleCAxNTgxZmJiYmZkNzlmMmZkNjdkZWQwZjNhMmI1OGFjMTk0YTA1
ZmRlLi4xNGM0MmVhNzMzNjFiNDAyMDZkYWM0ZDBkZmQxNzY0MDc5MGVjY2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaApAQCAtMjYxLDIwICsyNjEsMjMgQEAg
Y2xhc3MgSW5kZXhEYXRhS2V5IHsKIHB1YmxpYzoKICAgICBJbmRleERhdGFLZXkoKTsKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBs
aW1pdCwgSW5kZXhEYXRhS2V5KiByZXN1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFVzZXJLZXksIGludDY0X3Qgc2VxdWVu
Y2VOdW1iZXIpOwotICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eSYgdXNlcktleSwgaW50NjRfdCBzZXF1ZW5jZU51bWJlcik7Ci0gICAgc3RhdGljIFZlY3Rvcjxj
aGFyPiBlbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpOwotICAgIGludCBjb21wYXJlKGNvbnN0IEluZGV4RGF0YUtleSYgb3RoZXIsIGJvb2wgaWdu
b3JlU2VxdWVuY2VOdW1iZXIpOworICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFVzZXJLZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5j
b2RlZFByaW1hcnlLZXksIGludDY0X3Qgc2VxdWVuY2VOdW1iZXIgPSAwKTsKKyAgICBzdGF0aWMg
VmVjdG9yPGNoYXI+IGVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIHVzZXJLZXkpOworICAgIHN0YXRp
YyBWZWN0b3I8Y2hhcj4gZW5jb2RlTWluS2V5KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOworICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4g
ZW5jb2RlTWF4S2V5KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQpOworICAgIGludCBjb21wYXJlKGNvbnN0IEluZGV4RGF0YUtleSYgb3Ro
ZXIsIGJvb2wgaWdub3JlRHVwbGljYXRlcyk7CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkKCkgY29u
c3Q7CiAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkKCkgY29uc3Q7CiAgICAgaW50NjRfdCBpbmRl
eElkKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHVzZXJLZXkoKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAg
IGludDY0X3QgbV9pbmRleElkOwogICAgIFZlY3RvcjxjaGFyPiBtX2VuY29kZWRVc2VyS2V5Owor
ICAgIFZlY3RvcjxjaGFyPiBtX2VuY29kZWRQcmltYXJ5S2V5OwogICAgIGludDY0X3QgbV9zZXF1
ZW5jZU51bWJlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAKaW5kZXggN2Q2MTU5ZTZhMWIxZmM0YWYzMzViOWU4
ZjQ2MDJlM2U2MzM0ZDhjZS4uNjAzMzEwNTFmMzJkYWVjMjI0OWU0YmM5NGUzMDY5NzAxNTM1ZDE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERCQ29k
aW5nVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERC
Q29kaW5nVGVzdC5jcHAKQEAgLTQ4MywxMyArNDgzLDE3IEBAIFRFU1QoSURCTGV2ZWxEQkNvZGlu
Z1Rlc3QsIENvbXBhcmlzb25UZXN0KQogICAgIGtleXMuYXBwZW5kKE9iamVjdFN0b3JlRGF0YUtl
eTo6ZW5jb2RlKDEsIDEsIG1heElEQktleSgpKSk7CiAgICAga2V5cy5hcHBlbmQoRXhpc3RzRW50
cnlLZXk6OmVuY29kZSgxLCAxLCBtaW5JREJLZXkoKSkpOwogICAgIGtleXMuYXBwZW5kKEV4aXN0
c0VudHJ5S2V5OjplbmNvZGUoMSwgMSwgbWF4SURCS2V5KCkpKTsKLSAgICBrZXlzLmFwcGVuZChJ
bmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWluSURCS2V5KCksIDApKTsKLSAgICBrZXlz
LmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWluSURCS2V5KCksIDEpKTsK
LSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWF4SURCS2V5
KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwg
bWF4SURCS2V5KCksIDEpKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgx
LCAxLCAzMSwgbWluSURCS2V5KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6
OmVuY29kZSgxLCAyLCAzMCwgbWluSURCS2V5KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRl
eERhdGFLZXk6OmVuY29kZU1heEtleSgxLCAyKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRh
S2V5OjplbmNvZGUoMSwgMSwgMzAsIG1pbklEQktleSgpLCBtaW5JREJLZXkoKSwgMCkpOworICAg
IGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtaW5JREJLZXkoKSwg
bWluSURCS2V5KCksIDEpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgx
LCAxLCAzMCwgbWluSURCS2V5KCksIG1heElEQktleSgpLCAwKSk7CisgICAga2V5cy5hcHBlbmQo
SW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwgMzAsIG1pbklEQktleSgpLCBtYXhJREJLZXkoKSwg
MSkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtYXhJ
REJLZXkoKSwgbWluSURCS2V5KCksIDApKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6
OmVuY29kZSgxLCAxLCAzMCwgbWF4SURCS2V5KCksIG1pbklEQktleSgpLCAxKSk7CisgICAga2V5
cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwgMzAsIG1heElEQktleSgpLCBtYXhJ
REJLZXkoKSwgMCkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEs
IDMwLCBtYXhJREJLZXkoKSwgbWF4SURCS2V5KCksIDEpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRl
eERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMSwgbWluSURCS2V5KCksIG1pbklEQktleSgpLCAwKSk7
CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMiwgMzAsIG1pbklEQktl
eSgpLCBtaW5JREJLZXkoKSwgMCkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5j
b2RlTWF4S2V5KDEsIDIsIElOVDMyX01BWCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrZXlzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IExldmVsREJTbGljZSBrZXlBKGtl
eXNbaV0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDExMDY2OTg1ZmNjOTFmNzM5MWZhYTQzMjM3YjFkYTBiMDQwYTJkMTku
LjQ0YTllMGFhZTBkNjNmMDk2NjkyZTk5N2Y3MTFmM2ExYjY3MTJlZGQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMS0xMS0xNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEluZGV4ZWREQjogSW5kZXhlcyBzaG91bGQgYmUgc2Vjb25kYXJpbHkgc29ydGVk
IG9uIHByaW1hcnkga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTE1ICBUb255IEdlbnRpbGNvcmUg
IDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBwZXJmL2RvY3VtZW50
LWNvbnRhaW5zLmh0bWwgaXMgZmxha3kgb24gd2luCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZhNWNhN2MwYjc2ZDdkZjkxZWZmYTE1N2UxOTk5ODMx
MzNhYjRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk3IEBACitU
ZXN0IEluZGV4ZWREQiBwcmltYXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJz
b3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitJREJDdXJzb3IgPSB3aW5kb3cu
SURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJzb3I7CitQQVNTIElEQkN1cnNvciA9PSBu
dWxsIGlzIGZhbHNlCitJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3
aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24KK1BBU1MgSURCVHJhbnNhY3Rpb24gPT0gbnVsbCBp
cyBmYWxzZQorCitvcGVucmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1wcmltYXJ5LWtleS1v
cmRlcicpCitkYiA9IG9wZW5yZXEucmVzdWx0Cit2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykK
K3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK2luZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4JywgJ2luZGV4S2V5JykKKworcG9wdWxhdGluZyBzdG9yZS4uLgordHJh
bnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQor
c3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK3N0b3JlLnB1dCh7ImluZGV4S2V5
IjowLCJjb3VudCI6MH0sICdjJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MX0s
ICdiJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6Mn0sICdhJykKK3N0b3JlLnB1
dCh7ImluZGV4S2V5IjowLCJjb3VudCI6M30sICdDJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5Ijow
LCJjb3VudCI6NH0sICdCJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6NX0sICdB
JykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6Nn0sICcyJykKK3N0b3JlLnB1dCh7
ImluZGV4S2V5IjowLCJjb3VudCI6N30sICcxJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJj
b3VudCI6OH0sICcwJykKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6OX0sIEluZmlu
aXR5KQorc3RvcmUucHV0KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxMH0sIDIpCitzdG9yZS5wdXQo
eyJpbmRleEtleSI6MCwiY291bnQiOjExfSwgMSkKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJj
b3VudCI6MTJ9LCAwKQorc3RvcmUucHV0KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxM30sIC0xKQor
c3RvcmUucHV0KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxNH0sIC0yKQorc3RvcmUucHV0KHsiaW5k
ZXhLZXkiOjAsImNvdW50IjoxNX0sIC1JbmZpbml0eSkKKworaXRlcmF0aW5nIGN1cnNvci4uLgor
dHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkp
CitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRl
eCgnaW5kZXgnKTsKK2N1cnJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoKQorY291bnQgPSAwCitjdXJz
b3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyAtSW5maW5pdHkKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vyc29y
LmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIC0yCitjdXJzb3IgPSBjdXJyZXEu
cmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAt
MQorY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgMAorY3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iu
a2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMQorY3Vyc29yID0gY3VycmVxLnJl
c3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgMgor
Y3Vyc29yID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29y
LnByaW1hcnlLZXkgaXMgSW5maW5pdHkKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1MgY3Vy
c29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICcwJworY3Vyc29yID0gY3Vy
cmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkg
aXMgJzEnCitjdXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFT
UyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMicKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BBU1Mg
Y3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICdBJworY3Vyc29yID0g
Y3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlL
ZXkgaXMgJ0InCitjdXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnQycKK2N1cnNvciA9IGN1cnJlcS5yZXN1bHQKK1BB
U1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzICdhJworY3Vyc29y
ID0gY3VycmVxLnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgJ2InCitjdXJzb3IgPSBjdXJyZXEucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMg
MAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnYycKK1BBU1MgY291bnQgPT09IGtleXMubGVu
Z3RoIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
cHJpbWFyeS1rZXktb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMDgzZTk5ZTQ4YjdmZDgw
ODViNDU1YTY0ZjBlZTg1YmRmOTQxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbApAQCAtMCwwICsx
LDExNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBwcmltYXJ5IGtleSBvcmRlcmluZyBhbmQg
cmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIg
fHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAg
IHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgZXZhbEFuZExvZygiSURC
Q3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOwor
ICAgIHNob3VsZEJlRmFsc2UoIklEQkN1cnNvciA9PSBudWxsIik7CisgICAgZXZhbEFuZExvZygi
SURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElE
QlRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVs
bCIpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRh
YmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGV2YWxBbmRMb2coIm9wZW5yZXEgPSBpbmRl
eGVkREIub3BlbignY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyJykiKTsKKyAgICBvcGVucmVxLm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVucmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5yZXEucmVzdWx0Iik7
CisgICAgICAgIGV2YWxBbmRMb2coInZlcnJlcSA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
ICAgICB2ZXJyZXEub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICB2
ZXJyZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScpIik7
CisKKyAgICAgICAgICAgIHZlcnJlcS5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7
CisgICAgICAgIH07CisgICAgfTsKK30KKword2luZG93LmtleXMgPSBbCisgICAgIi1JbmZpbml0
eSIsCisgICAgIi0yIiwKKyAgICAiLTEiLAorICAgICIwIiwKKyAgICAiMSIsCisgICAgIjIiLAor
ICAgICJJbmZpbml0eSIsCisKKyAgICAiJzAnIiwKKyAgICAiJzEnIiwKKyAgICAiJzInIiwKKyAg
ICAiJ0EnIiwKKyAgICAiJ0InIiwKKyAgICAiJ0MnIiwKKyAgICAiJ2EnIiwKKyAgICAiJ2InIiwK
KyAgICAiJ2MnIgorXTsKKworCitmdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHZhciBjb3VudCA9
IDA7CisgICAgdmFyIGluZGV4S2V5ID0gMDsKKyAgICB2YXIga2V5cyA9IHdpbmRvdy5rZXlzLnNs
aWNlKCk7CisgICAga2V5cy5yZXZlcnNlKCk7CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtl
eSkgeworICAgICAgICB2YXIgdmFsdWUgPSB7IGluZGV4S2V5OiBpbmRleEtleSwgY291bnQ6IGNv
dW50KysgfTsKKyAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBKU09OLnN0cmluZ2lm
eSh2YWx1ZSkgKyAiLCAiICsga2V5ICsgIikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBs
ZXRlID0gY2hlY2tTdG9yZTsKK30KKworZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09O
TFkpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KTsiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOwor
ICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgY3VycmVxID0gZXZhbEFuZExv
ZygiY3VycmVxID0gaW5kZXgub3BlbkN1cnNvcigpIik7CisgICAgZXZhbEFuZExvZygiY291bnQg
PSAwIik7CisgICAgdmFyIGluZGV4S2V5ID0gMDsKKyAgICBjdXJyZXEub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGN1cnJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgaWYgKGN1cnJlcS5yZXN1bHQpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImN1
cnNvciA9IGN1cnJlcS5yZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5
IiwgU3RyaW5nKGluZGV4S2V5KSk7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1h
cnlLZXkiLCB3aW5kb3cua2V5c1tjb3VudCsrXSk7CisgICAgICAgICAgICBjdXJzb3IuY29udGlu
dWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQg
PT09IGtleXMubGVuZ3RoIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9
OworfQorCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116386</attachid>
            <date>2011-11-23 11:30:46 -0800</date>
            <delta_ts>2011-11-24 10:10:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72567-20111123113045.patch</filename>
            <type>text/plain</type>
            <size>25667</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I4MDMyZTk3ZWIxZGQw
NWQ5Mjg1ZjQxYzBkZTZjMzFiYzg2MDU4My4uM2ZiMGM2YjIzZjc3YzVmNzJlYWJkZjYxNzI2ODdk
NDA0N2M2N2Q4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDExLTExLTIyICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbmRl
eGVzIHNob3VsZCBiZSBzZWNvbmRhcmlseSBzb3J0ZWQgb24gcHJpbWFyeSBrZXkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYnkgYWRk
aW5nIHRoZSBwcmltYXJ5IGtleSAoaS5lLiB1bmlxdWUga2V5IGluIHRoZQorICAgICAgICBvYmpl
Y3Qgc3RvcmUpIHRvIHRoZSBJbmRleERhdGFLZXkgKGkuZS4gdGhlIGNvbXBvc2l0ZSBrZXkgdXNl
ZAorICAgICAgICBpbiB0aGUgaW5kZXguIFByZXZpb3VzbHksIG5vbi11bmlxdWUgZW50cmllcyBp
biB0aGUgaW5kZXggd2VyZQorICAgICAgICBzdG9yZWQgd2l0aCBhIHVuaXF1ZSAoYW5kIGhpZGRl
bikgc2VxdWVuY2VOdW1iZXIsIHNvIG9yZGVyaW5nIHdhcworICAgICAgICBub3QgcHJlZGljdGFi
bGUgYnkgc2NyaXB0cyAob3IgcGVyIHNwZWMpLiBUaGUgc2VxdWVuY2VOdW1iZXIKKyAgICAgICAg
aXMgbm93IGRlcHJlY2F0ZWQgYnV0IHN0aWxsIHByZXNlbnQgaW4gdGhlIExldmVsREIgYmFja2lu
ZyBzdG9yZQorICAgICAgICB0byBhdm9pZCBoYXZpbmcgdG8gZG8gYSBkYXRhIG1pZ3JhdGlvbi4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3Jk
ZXIuaHRtbAorCisgICAgICAgICogc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZv
clJlY29yZCk6CisgICAgICAgICogc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjplbmNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5Ojpjb21wYXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4RGF0YUtleTo6cHJpbWFyeUtleSk6
CisgICAgICAgICogc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmg6CisKIDIwMTEtMTEtMjIgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBDb3JlIEFuaW1hdGlvbiBwbHVnaW5zIGluIGNvbXBvc2l0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNDM4M2UyOGY3ZWUwZThiZjA1NzAyNWVkYzBkNGJlZTU0Y2ZmMTY5Yy4u
YjFkMjZjN2ZhZmEzOGIyMjVlYzgyYjljNzQ0ODZlMWY5MjE5MmE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0yMyAgSm9zaHVhIEJlbGwgIDxq
c2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogSW5kZXhlcyBzaG91bGQg
YmUgc2Vjb25kYXJpbHkgc29ydGVkIG9uIHByaW1hcnkga2V5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZXMgdGhlIEluZGV4RGF0YUtleSB1bml0
IHRlc3RzIHRvIGluY2x1ZGUgcHJpbWFyeSBrZXlzLiBUaGUKKyAgICAgICAgZGVwcmVjYXRlZCBz
ZXF1ZW5jZU51bWJlciBlbGVtZW50IG9mIEluZGV4RGF0YUtleSBpcyBzdGlsbCB0ZXN0ZWQsCisg
ICAgICAgIGFsdGhvdWdoIG5vIGxvbmdlciB1c2VkIGJ5IGNhbGxlcnMuCisKKyAgICAgICAgKiB0
ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHA6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5n
OjpURVNUKToKKwogMjAxMS0xMS0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IENvcmUgQW5pbWF0aW9uIHBsdWdpbnMgaW4g
Y29tcG9zaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggOGNmZjkxYmE5ZDFhY2VkNDU5MjMzZDkzZDAzNGU2OWE1YjIxOWFi
OC4uZWM3NWQwZmMwNmQ5NWRlY2FmYzQ1OWRmN2NhNjA5YWE2NDBjNmQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC03Nzks
OCArNzc5LDggQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFTdGFydCA9IEluZGV4RGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIG1pbklEQktleSgp
LCAwKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhRW5kID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgbWF4SURCS2V5KCks
IDApOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFTdGFydCA9IEluZGV4RGF0YUtl
eTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOworICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFFbmQgPSBJbmRleERhdGFLZXk6OmVuY29kZU1h
eEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKIAogICAgIGlmICghZGVs
ZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGluZGV4RGF0YVN0YXJ0LCBpbmRl
eERhdGFFbmQpKSB7CiAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJv
ci4iKTsKQEAgLTc5NCw4ICs3OTQsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1
dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QgbwogICAgIGNv
bnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9IHN0
YXRpY19jYXN0PGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKj4ocmVjb3JkSWRlbnRpZmll
cik7CiAKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwotICAgIGNvbnN0IGludDY0
X3QgZ2xvYmFsU2VxdWVuY2VOdW1iZXIgPSBnZXROZXdWZXJzaW9uTnVtYmVyKG1fY3VycmVudFRy
YW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKLSAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5LCBnbG9iYWxTZXF1ZW5jZU51bWJlcik7Cisg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCBs
ZXZlbERCUmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKIAogICAgIFZlY3RvcjxjaGFy
PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKGVuY29kZVZhckludChsZXZlbERCUmVjb3JkSWRlbnRp
Zmllci0+dmVyc2lvbigpKSk7CkBAIC04NTYsNyArODU1LDcgQEAgc3RhdGljIGJvb2wgZmluZEtl
eUluSW5kZXgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLAogewogICAgIEFTU0VSVChmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmlzRW1wdHkoKSk7CiAK
LSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSwgMCk7CisgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGxldmVsZGJLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXkpOwogICAgIE93blB0cjxMZXZlbERCSXRlcmF0
b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgaXQtPnNlZWsobGV2
ZWxkYktleSk7CiAKQEAgLTEyOTMsMTUgKzEyOTIsMTUgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29y
KGkKICAgICBjdXJzb3JPcHRpb25zLnVuaXF1ZSA9IChkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpO
RVhUX05PX0RVUExJQ0FURSB8fCBkaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJ
Q0FURSk7CiAKICAgICBpZiAoIWxvd2VyQm91bmQpIHsKLSAgICAgICAgY3Vyc29yT3B0aW9ucy5s
b3dLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBtaW5JREJLZXkoKSwgMCk7CisgICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5ID0g
SW5kZXhEYXRhS2V5OjplbmNvZGVNaW5LZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5k
ZXhJZCk7CiAgICAgICAgIGN1cnNvck9wdGlvbnMubG93T3BlbiA9IGZhbHNlOyAvLyBJbmNsdWRl
ZC4KICAgICB9IGVsc2UgewotICAgICAgICBjdXJzb3JPcHRpb25zLmxvd0tleSA9IEluZGV4RGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+
bG93ZXIoKSwgMCk7CisgICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5ID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKnJhbmdlLT5sb3dl
cigpKTsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5sb3dPcGVuID0gcmFuZ2UtPmxvd2VyT3Blbigp
OwogICAgIH0KIAogICAgIGlmICghdXBwZXJCb3VuZCkgewotICAgICAgICBjdXJzb3JPcHRpb25z
LmhpZ2hLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBtYXhJREJLZXkoKSwgMCk7CisgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaEtl
eSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQpOwogICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7IC8vIElu
Y2x1ZGVkLgogCiAgICAgICAgIGlmICghY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7IC8vIFdlIG5l
ZWQgYSBrZXkgdGhhdCBleGlzdHMuCkBAIC0xMzEwLDcgKzEzMDksNyBAQCBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhL
ZXlDdXJzb3IoaQogICAgICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0g
SW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
KnJhbmdlLT51cHBlcigpLCAwKTsKKyAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gSW5k
ZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKnJh
bmdlLT51cHBlcigpKTsKICAgICAgICAgaWYgKCFmaW5kTGFzdEluZGV4S2V5RXF1YWxUbyhtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBjdXJzb3JPcHRp
b25zLmhpZ2hLZXkpKSAvLyBTZWVrIHRvIHRoZSAqbGFzdCoga2V5IGluIHRoZSBzZXQgb2Ygbm9u
LXVuaXF1ZSBrZXlzLgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGN1cnNvck9wdGlv
bnMuaGlnaE9wZW4gPSByYW5nZS0+dXBwZXJPcGVuKCk7CkBAIC0xMzMzLDE1ICsxMzMyLDE1IEBA
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3Rv
cmU6Om9wZW5JbmRleEN1cnNvcihpbnQ2CiAgICAgY3Vyc29yT3B0aW9ucy51bmlxdWUgPSAoZGly
ZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgfHwgZGlyZWN0aW9uID09IElE
QkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpOwogCiAgICAgaWYgKCFsb3dlckJvdW5kKSB7Ci0g
ICAgICAgIGN1cnNvck9wdGlvbnMubG93S2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgbWluSURCS2V5KCksIDApOworICAgICAgICBj
dXJzb3JPcHRpb25zLmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlTWluS2V5KGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAgICAgICBjdXJzb3JPcHRpb25zLmxvd09w
ZW4gPSBmYWxzZTsgLy8gSW5jbHVkZWQuCiAgICAgfSBlbHNlIHsKLSAgICAgICAgY3Vyc29yT3B0
aW9ucy5sb3dLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCAqcmFuZ2UtPmxvd2VyKCksIDApOworICAgICAgICBjdXJzb3JPcHRpb25z
Lmxvd0tleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsICpyYW5nZS0+bG93ZXIoKSk7CiAgICAgICAgIGN1cnNvck9wdGlvbnMubG93T3Bl
biA9IHJhbmdlLT5sb3dlck9wZW4oKTsKICAgICB9CiAKICAgICBpZiAoIXVwcGVyQm91bmQpIHsK
LSAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgbWF4SURCS2V5KCksIDApOworICAgICAg
ICBjdXJzb3JPcHRpb25zLmhpZ2hLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZU1heEtleShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5o
aWdoT3BlbiA9IGZhbHNlOyAvLyBJbmNsdWRlZC4KIAogICAgICAgICBpZiAoIWN1cnNvck9wdGlv
bnMuZm9yd2FyZCkgeyAvLyBXZSBuZWVkIGEga2V5IHRoYXQgZXhpc3RzLgpAQCAtMTM1MCw3ICsx
MzQ5LDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6b3BlbkluZGV4Q3Vyc29yKGludDYKICAgICAgICAgICAgIGN1cnNvck9wdGlv
bnMuaGlnaE9wZW4gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGN1
cnNvck9wdGlvbnMuaGlnaEtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+dXBwZXIoKSwgMCk7CisgICAgICAgIGN1cnNv
ck9wdGlvbnMuaGlnaEtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+dXBwZXIoKSk7CiAgICAgICAgIGlmICghZmluZExh
c3RJbmRleEtleUVxdWFsVG8obV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGN1cnNvck9wdGlv
bnMuaGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSkgLy8gU2VlayB0byB0aGUgKmxhc3Qq
IGtleSBpbiB0aGUgc2V0IG9mIG5vbi11bmlxdWUga2V5cy4KICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gcmFuZ2UtPnVwcGVyT3BlbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKaW5kZXggMjBmNDVh
YjVmOWE0ZmQ1NGJlNTE3MDExZGU2OWY1MmI3MzRlYzcyNi4uMWNjYWMxZWQ5NmZlYzUwZDQ1Njg4
MmQ3ODU4ZmY5MmIwNjczMzA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJDb2RpbmcuY3BwCkBAIC0xMDksMTIgKzEwOSwxNCBAQAogLy8KIC8vIEluZGV4IGRhdGE6CiAv
LwotLy8gICAgIFRoZSBwcmVmaXggaXMgZm9sbG93ZWQgYnkgYSB0eXBlIGJ5dGUuIFRoZSB1c2Vy
IGtleSBpcyBhbiBlbmNvZGVkIElEQktleS4gVGhlIHNlcXVlbmNlIG51bWJlciBpcyBhIHZhcmlh
YmxlIGxlbmd0aCBpbnRlZ2VyLgorLy8gICAgIFRoZSBwcmVmaXggaXMgZm9sbG93ZWQgYnkgYSB0
eXBlIGJ5dGUuIFRoZSBpbmRleCBrZXkgaXMgYW4gZW5jb2RlZCBJREJLZXkuIFRoZSBzZXF1ZW5j
ZSBudW1iZXIgaXMgYSB2YXJpYWJsZSBsZW5ndGggaW50ZWdlci4KKy8vICAgICBUaGUgcHJpbWFy
eSBrZXkgaXMgYW4gZW5jb2RlZCBJREJLZXkuCiAvLwotLy8gICAgIDxkYXRhYmFzZSBpZCwgb2Jq
ZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgdXNlciBrZXksIHNlcXVlbmNlIG51bWJlcj4gPT4gInZl
cnNpb24iLCB1c2VyIGtleSBbSW5kZXhEYXRhS2V5XQorLy8gICAgIDxkYXRhYmFzZSBpZCwgb2Jq
ZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgaW5kZXgga2V5LCBzZXF1ZW5jZSBudW1iZXIsIHByaW1h
cnkga2V5PiA9PiAidmVyc2lvbiIsIHByaW1hcnkga2V5IFtJbmRleERhdGFLZXldCiAvLwotLy8g
ICAgIChUaGUgc2VxdWVuY2UgbnVtYmVyIGlzIHVzZWQgdG8gYWxsb3cgdHdvIGVudHJpZXMgd2l0
aCB0aGUgc2FtZSB1c2VyIGtleQotLy8gICAgIGluIG5vbi11bmlxdWUgaW5kZXhlcy4gVGhlICJ2
ZXJzaW9uIiBmaWVsZCBpcyB1c2VkIHRvIHdlZWQgb3V0IHN0YWxlCisvLyAgICAgKFRoZSBzZXF1
ZW5jZSBudW1iZXIgaXMgb2Jzb2xldGU7IGl0IHdhcyB1c2VkIHRvIGFsbG93IHR3byBlbnRyaWVz
IHdpdGgKKy8vICAgICB0aGUgc2FtZSB1c2VyIChpbmRleCkga2V5IGluIG5vbi11bmlxdWUgaW5k
ZXhlcyBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mCisvLyAgICAgdGhlIHByaW1hcnkga2V5IGlu
IHRoZSBkYXRhLiBUaGUgInZlcnNpb24iIGZpZWxkIGlzIHVzZWQgdG8gd2VlZCBvdXQgc3RhbGUK
IC8vICAgICBpbmRleCBkYXRhLiBXaGVuZXZlciBuZXcgb2JqZWN0IHN0b3JlIGRhdGEgaXMgaW5z
ZXJ0ZWQsIGl0IGdldHMgYSBuZXcKIC8vICAgICAidmVyc2lvbiIgbnVtYmVyLCBhbmQgbmV3IGlu
ZGV4IGRhdGEgaXMgd3JpdHRlbiB3aXRoIHRoaXMgbnVtYmVyLiBXaGVuCiAvLyAgICAgdGhlIGlu
ZGV4IGlzIHVzZWQgZm9yIGxvb2stdXBzLCBlbnRyaWVzIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCB0
aGUKQEAgLTczNSw4ICs3MzcsOCBAQCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2UmIGEs
IGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCiAgICAgICAgIEFTU0VSVChw
dHJBKTsKICAgICAgICAgQVNTRVJUKHB0ckIpOwogCi0gICAgICAgIGJvb2wgaWdub3JlU2VxdWVu
Y2VOdW1iZXIgPSBpbmRleEtleXM7Ci0gICAgICAgIHJldHVybiBpbmRleERhdGFLZXlBLmNvbXBh
cmUoaW5kZXhEYXRhS2V5QiwgaWdub3JlU2VxdWVuY2VOdW1iZXIpOworICAgICAgICBib29sIGln
bm9yZUR1cGxpY2F0ZXMgPSBpbmRleEtleXM7CisgICAgICAgIHJldHVybiBpbmRleERhdGFLZXlB
LmNvbXBhcmUoaW5kZXhEYXRhS2V5QiwgaWdub3JlRHVwbGljYXRlcyk7CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNDAwLDQ0ICsxNDAyLDY2IEBAIGNvbnN0IGNoYXIq
IEluZGV4RGF0YUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1p
dCwgSW5kZXhEYXRhCiAgICAgcmVzdWx0LT5tX2RhdGFiYXNlSWQgPSBwcmVmaXgubV9kYXRhYmFz
ZUlkOwogICAgIHJlc3VsdC0+bV9vYmplY3RTdG9yZUlkID0gcHJlZml4Lm1fb2JqZWN0U3RvcmVJ
ZDsKICAgICByZXN1bHQtPm1faW5kZXhJZCA9IHByZWZpeC5tX2luZGV4SWQ7CisgICAgcmVzdWx0
LT5tX3NlcXVlbmNlTnVtYmVyID0gLTE7CisgICAgcmVzdWx0LT5tX2VuY29kZWRQcmltYXJ5S2V5
ID0gbWluSURCS2V5KCk7CisKICAgICBwID0gZXh0cmFjdEVuY29kZWRJREJLZXkocCwgbGltaXQs
ICZyZXN1bHQtPm1fZW5jb2RlZFVzZXJLZXkpOwogICAgIGlmICghcCkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgaWYgKHAgPT0gbGltaXQpIHsKLSAgICAgICAgcmVzdWx0LT5tX3NlcXVlbmNlTnVt
YmVyID0gLTE7IC8vIEZJWE1FOiBXZSBzaG91bGQgY2hhbmdlIGl0IHNvIHRoYXQgYWxsIGtleXMg
aGF2ZSBhIHNlcXVlbmNlIG51bWJlci4gU2hvdWxkbid0IG5lZWQgdG8gaGFuZGxlIHRoaXMgY2Fz
ZS4KKworICAgIC8vIFtvcHRpb25hbF0gc2VxdWVuY2UgbnVtYmVyCisgICAgaWYgKHAgPT0gbGlt
aXQpCiAgICAgICAgIHJldHVybiBwOwotICAgIH0KLSAgICByZXR1cm4gZGVjb2RlVmFySW50KHAs
IGxpbWl0LCByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIpOworICAgIHAgPSAgZGVjb2RlVmFySW50
KHAsIGxpbWl0LCByZXN1bHQtPm1fc2VxdWVuY2VOdW1iZXIpOworICAgIGlmICghcCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBbb3B0aW9uYWxdIHByaW1hcnkga2V5CisgICAgaWYgKHAg
PT0gbGltaXQpCisgICAgICAgIHJldHVybiBwOworICAgIHAgPSBleHRyYWN0RW5jb2RlZElEQktl
eShwLCBsaW1pdCwgJnJlc3VsdC0+bV9lbmNvZGVkUHJpbWFyeUtleSk7CisgICAgaWYgKCFwKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBwOwogfQogCi1WZWN0b3I8Y2hhcj4gSW5k
ZXhEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkVXNlcktleSwg
aW50NjRfdCBzZXF1ZW5jZU51bWJlcikKK1ZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29k
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRVc2VyS2V5LCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGVuY29kZWRQcmltYXJ5S2V5LCBpbnQ2NF90IHNlcXVlbmNlTnVtYmVyKQogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICByZXQuYXBwZW5kKGVuY29k
ZWRVc2VyS2V5KTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikp
OworICAgIHJldC5hcHBlbmQoZW5jb2RlZFByaW1hcnlLZXkpOwogICAgIHJldHVybiByZXQ7CiB9
CiAKLVZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIHVz
ZXJLZXksIGludDY0X3Qgc2VxdWVuY2VOdW1iZXIpCitWZWN0b3I8Y2hhcj4gSW5kZXhEYXRhS2V5
OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiB1c2VyS2V5KQoreworICAgIHJldHVybiBlbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KHVzZXJLZXkp
LCBtaW5JREJLZXkoKSk7Cit9CisKK1ZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29kZU1p
bktleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkKQogewotICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwgZW5jb2RlSURCS2V5KHVzZXJLZXkpLCBzZXF1ZW5jZU51bWJlcik7CisgICAgcmV0
dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBtaW5JREJLZXko
KSwgbWluSURCS2V5KCkpOwogfQogCi1WZWN0b3I8Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGVN
YXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCitWZWN0b3I8
Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKIHsKLSAgICByZXR1cm4gZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDMyX01BWCwgbWF4SURCS2V5KCksIElOVDY0
X01BWCk7CisgICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBtYXhJREJLZXkoKSwgbWF4SURCS2V5KCksIElOVDY0X01BWCk7CiB9CiAKLWludCBJbmRl
eERhdGFLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhEYXRhS2V5JiBvdGhlciwgYm9vbCBpZ25vcmVT
ZXF1ZW5jZU51bWJlcikKK2ludCBJbmRleERhdGFLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhEYXRh
S2V5JiBvdGhlciwgYm9vbCBpZ25vcmVEdXBsaWNhdGVzKQogewogICAgIEFTU0VSVChtX2RhdGFi
YXNlSWQgPj0gMCk7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCA+PSAwKTsKICAgICBBU1NF
UlQobV9pbmRleElkID49IDApOwogICAgIGlmIChpbnQgeCA9IGNvbXBhcmVFbmNvZGVkSURCS2V5
cyhtX2VuY29kZWRVc2VyS2V5LCBvdGhlci5tX2VuY29kZWRVc2VyS2V5KSkKICAgICAgICAgcmV0
dXJuIHg7Ci0gICAgaWYgKGlnbm9yZVNlcXVlbmNlTnVtYmVyKQorICAgIGlmIChpZ25vcmVEdXBs
aWNhdGVzKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoaW50IHggPSBjb21wYXJlRW5jb2Rl
ZElEQktleXMobV9lbmNvZGVkUHJpbWFyeUtleSwgb3RoZXIubV9lbmNvZGVkUHJpbWFyeUtleSkp
CisgICAgICAgIHJldHVybiB4OwogICAgIHJldHVybiBjb21wYXJlSW50cyhtX3NlcXVlbmNlTnVt
YmVyLCBvdGhlci5tX3NlcXVlbmNlTnVtYmVyKTsKIH0KIApAQCAtMTQ2Niw2ICsxNDkwLDEzIEBA
IFBhc3NSZWZQdHI8SURCS2V5PiBJbmRleERhdGFLZXk6OnVzZXJLZXkoKSBjb25zdAogICAgIHJl
dHVybiBrZXk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCS2V5PiBJbmRleERhdGFLZXk6OnByaW1hcnlL
ZXkoKSBjb25zdAoreworICAgIFJlZlB0cjxJREJLZXk+IGtleTsKKyAgICBkZWNvZGVJREJLZXko
bV9lbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBtX2VuY29kZWRQcmltYXJ5S2V5LmVuZCgpLCBr
ZXkpOworICAgIHJldHVybiBrZXk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQkxldmVsREJDb2Rp
bmcKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxl
dmVsREJDb2RpbmcuaAppbmRleCAxNTgxZmJiYmZkNzlmMmZkNjdkZWQwZjNhMmI1OGFjMTk0YTA1
ZmRlLi4xNGM0MmVhNzMzNjFiNDAyMDZkYWM0ZDBkZmQxNzY0MDc5MGVjY2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaApAQCAtMjYxLDIwICsyNjEsMjMgQEAg
Y2xhc3MgSW5kZXhEYXRhS2V5IHsKIHB1YmxpYzoKICAgICBJbmRleERhdGFLZXkoKTsKICAgICBz
dGF0aWMgY29uc3QgY2hhciogZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBs
aW1pdCwgSW5kZXhEYXRhS2V5KiByZXN1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFVzZXJLZXksIGludDY0X3Qgc2VxdWVu
Y2VOdW1iZXIpOwotICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eSYgdXNlcktleSwgaW50NjRfdCBzZXF1ZW5jZU51bWJlcik7Ci0gICAgc3RhdGljIFZlY3Rvcjxj
aGFyPiBlbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpOwotICAgIGludCBjb21wYXJlKGNvbnN0IEluZGV4RGF0YUtleSYgb3RoZXIsIGJvb2wgaWdu
b3JlU2VxdWVuY2VOdW1iZXIpOworICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFVzZXJLZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5j
b2RlZFByaW1hcnlLZXksIGludDY0X3Qgc2VxdWVuY2VOdW1iZXIgPSAwKTsKKyAgICBzdGF0aWMg
VmVjdG9yPGNoYXI+IGVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIHVzZXJLZXkpOworICAgIHN0YXRp
YyBWZWN0b3I8Y2hhcj4gZW5jb2RlTWluS2V5KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOworICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4g
ZW5jb2RlTWF4S2V5KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQpOworICAgIGludCBjb21wYXJlKGNvbnN0IEluZGV4RGF0YUtleSYgb3Ro
ZXIsIGJvb2wgaWdub3JlRHVwbGljYXRlcyk7CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkKCkgY29u
c3Q7CiAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkKCkgY29uc3Q7CiAgICAgaW50NjRfdCBpbmRl
eElkKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IHVzZXJLZXkoKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAg
IGludDY0X3QgbV9pbmRleElkOwogICAgIFZlY3RvcjxjaGFyPiBtX2VuY29kZWRVc2VyS2V5Owor
ICAgIFZlY3RvcjxjaGFyPiBtX2VuY29kZWRQcmltYXJ5S2V5OwogICAgIGludDY0X3QgbV9zZXF1
ZW5jZU51bWJlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAKaW5kZXggN2Q2MTU5ZTZhMWIxZmM0YWYzMzViOWU4
ZjQ2MDJlM2U2MzM0ZDhjZS4uNjAzMzEwNTFmMzJkYWVjMjI0OWU0YmM5NGUzMDY5NzAxNTM1ZDE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERCQ29k
aW5nVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERC
Q29kaW5nVGVzdC5jcHAKQEAgLTQ4MywxMyArNDgzLDE3IEBAIFRFU1QoSURCTGV2ZWxEQkNvZGlu
Z1Rlc3QsIENvbXBhcmlzb25UZXN0KQogICAgIGtleXMuYXBwZW5kKE9iamVjdFN0b3JlRGF0YUtl
eTo6ZW5jb2RlKDEsIDEsIG1heElEQktleSgpKSk7CiAgICAga2V5cy5hcHBlbmQoRXhpc3RzRW50
cnlLZXk6OmVuY29kZSgxLCAxLCBtaW5JREJLZXkoKSkpOwogICAgIGtleXMuYXBwZW5kKEV4aXN0
c0VudHJ5S2V5OjplbmNvZGUoMSwgMSwgbWF4SURCS2V5KCkpKTsKLSAgICBrZXlzLmFwcGVuZChJ
bmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWluSURCS2V5KCksIDApKTsKLSAgICBrZXlz
LmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWluSURCS2V5KCksIDEpKTsK
LSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgbWF4SURCS2V5
KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwg
bWF4SURCS2V5KCksIDEpKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgx
LCAxLCAzMSwgbWluSURCS2V5KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6
OmVuY29kZSgxLCAyLCAzMCwgbWluSURCS2V5KCksIDApKTsKLSAgICBrZXlzLmFwcGVuZChJbmRl
eERhdGFLZXk6OmVuY29kZU1heEtleSgxLCAyKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRh
S2V5OjplbmNvZGUoMSwgMSwgMzAsIG1pbklEQktleSgpLCBtaW5JREJLZXkoKSwgMCkpOworICAg
IGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtaW5JREJLZXkoKSwg
bWluSURCS2V5KCksIDEpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgx
LCAxLCAzMCwgbWluSURCS2V5KCksIG1heElEQktleSgpLCAwKSk7CisgICAga2V5cy5hcHBlbmQo
SW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwgMzAsIG1pbklEQktleSgpLCBtYXhJREJLZXkoKSwg
MSkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtYXhJ
REJLZXkoKSwgbWluSURCS2V5KCksIDApKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6
OmVuY29kZSgxLCAxLCAzMCwgbWF4SURCS2V5KCksIG1pbklEQktleSgpLCAxKSk7CisgICAga2V5
cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwgMzAsIG1heElEQktleSgpLCBtYXhJ
REJLZXkoKSwgMCkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEs
IDMwLCBtYXhJREJLZXkoKSwgbWF4SURCS2V5KCksIDEpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRl
eERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMSwgbWluSURCS2V5KCksIG1pbklEQktleSgpLCAwKSk7
CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMiwgMzAsIG1pbklEQktl
eSgpLCBtaW5JREJLZXkoKSwgMCkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5j
b2RlTWF4S2V5KDEsIDIsIElOVDMyX01BWCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrZXlzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IExldmVsREJTbGljZSBrZXlBKGtl
eXNbaV0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQ3NTcyMjM3OWU1OGNlZjM5ZGE5ZmVlODQyODMyOTYwMDFiMDdmOGQu
LjA5YzQ2ODM1ODFlZTZiZWQ3OGZiNzM0ZTMyNTIzNzMyNzk3MzZmODggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMS0xMS0yMiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEluZGV4ZWREQjogSW5kZXhlcyBzaG91bGQgYmUgc2Vjb25kYXJpbHkgc29ydGVk
IG9uIHByaW1hcnkga2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1h
cnkta2V5LW9yZGVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTIyICBBZGFtIEtsZWluICA8YWRh
bWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBzb21lIGZsYWt5IGV4cGVjdGF0aW9u
cyBhZGRlZCBieSBtZSBmaXZlIG1vbnRocyBhZ28uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTI2ZTlmYTA0OTM4ODM2OTA2OGY1YWE0NjY2ZGUzY2Iz
NzU5N2FkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLXByaW1hcnkta2V5LW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk3IEBACitU
ZXN0IEluZGV4ZWREQiBwcmltYXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJz
b3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitJREJDdXJzb3IgPSB3aW5kb3cu
SURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJzb3I7CitQQVNTIElEQkN1cnNvciA9PSBu
dWxsIGlzIGZhbHNlCitJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3
aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24KK1BBU1MgSURCVHJhbnNhY3Rpb24gPT0gbnVsbCBp
cyBmYWxzZQorCitvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItcHJpbWFyeS1r
ZXktb3JkZXInKQorZGIgPSBvcGVuUmVxdWVzdC5yZXN1bHQKK3ZlcnNpb25DaGFuZ2VSZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbignMScpCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZScpCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICdpbmRleEtleScpCisKK3Bv
cHVsYXRpbmcgc3RvcmUuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7
CitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjB9LCAnYycpCitzdG9yZS5wdXQoeyJp
bmRleEtleSI6MCwiY291bnQiOjF9LCAnYicpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291
bnQiOjJ9LCAnYScpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjN9LCAnQycpCitz
dG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjR9LCAnQicpCitzdG9yZS5wdXQoeyJpbmRl
eEtleSI6MCwiY291bnQiOjV9LCAnQScpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQi
OjZ9LCAnMicpCitzdG9yZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjd9LCAnMScpCitzdG9y
ZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjh9LCAnMCcpCitzdG9yZS5wdXQoeyJpbmRleEtl
eSI6MCwiY291bnQiOjl9LCBJbmZpbml0eSkKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3Vu
dCI6MTB9LCAyKQorc3RvcmUucHV0KHsiaW5kZXhLZXkiOjAsImNvdW50IjoxMX0sIDEpCitzdG9y
ZS5wdXQoeyJpbmRleEtleSI6MCwiY291bnQiOjEyfSwgMCkKK3N0b3JlLnB1dCh7ImluZGV4S2V5
IjowLCJjb3VudCI6MTN9LCAtMSkKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MTR9
LCAtMikKK3N0b3JlLnB1dCh7ImluZGV4S2V5IjowLCJjb3VudCI6MTV9LCAtSW5maW5pdHkpCisK
K2l0ZXJhdGluZyBjdXJzb3IuLi4KK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7CitjdXJzb3JSZXF1ZXN0ID0gaW5kZXgu
b3BlbkN1cnNvcigpCitjb3VudCA9IDAKK2N1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0CitQ
QVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAtSW5maW5pdHkK
K2N1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFT
UyBjdXJzb3IucHJpbWFyeUtleSBpcyAtMgorY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQK
K1BBU1MgY3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIC0xCitjdXJz
b3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIDAKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgMAorY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQKK1BBU1Mg
Y3Vyc29yLmtleSBpcyAwCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIDEKK2N1cnNvciA9IGN1
cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyAyCitjdXJzb3IgPSBjdXJzb3JSZXF1ZXN0LnJlc3VsdAorUEFTUyBjdXJzb3Iu
a2V5IGlzIDAKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgSW5maW5pdHkKK2N1cnNvciA9IGN1
cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyAnMCcKK2N1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNv
ci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnMScKK2N1cnNvciA9IGN1cnNv
clJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAnMicKK2N1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5r
ZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnQScKK2N1cnNvciA9IGN1cnNvclJl
cXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtl
eSBpcyAnQicKK2N1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkg
aXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnQycKK2N1cnNvciA9IGN1cnNvclJlcXVl
c3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAnYScKK2N1cnNvciA9IGN1cnNvclJlcXVlc3QucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMg
MAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAnYicKK2N1cnNvciA9IGN1cnNvclJlcXVlc3Qu
cmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgMAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAn
YycKK1BBU1MgY291bnQgPT09IGtleXMubGVuZ3RoIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFyeS1rZXktb3JkZXIuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1wcmltYXJ5LWtleS1vcmRlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjYzdkNzljNTcyYjdlMjNjMWQ0NjI0M2ExNmMwNjVkMDY5MjZjYTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcHJpbWFy
eS1rZXktb3JkZXIuaHRtbApAQCAtMCwwICsxLDExNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QiBwcmltYXJ5IGtleSBvcmRlcmluZyBhbmQgcmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxBbmRMb2coImlu
ZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3
aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBu
dWxsIik7CisgICAgZXZhbEFuZExvZygiSURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3
aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQkN1cnNvciA9
PSBudWxsIik7CisgICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJh
bnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVsbCIpOworCisgICAgcHJlcGFyZURhdGFiYXNlKCk7
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1wcmltYXJ5
LWtleS1vcmRlcicpIik7CisgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBldmFsQW5kTG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFs
QW5kTG9nKCJ2ZXJzaW9uQ2hhbmdlUmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOworICAg
ICAgICB2ZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHZlcnNpb25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
c3RvcmUnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgnLCAnaW5kZXhLZXknKSIpOworCisgICAgICAgICAgICB2ZXJzaW9uQ2hhbmdl
UmVxdWVzdC5yZXN1bHQub25jb21wbGV0ZSA9IHBvcHVsYXRlU3RvcmU7CisgICAgICAgIH07Cisg
ICAgfTsKK30KKword2luZG93LmtleXMgPSBbCisgICAgIi1JbmZpbml0eSIsCisgICAgIi0yIiwK
KyAgICAiLTEiLAorICAgICIwIiwKKyAgICAiMSIsCisgICAgIjIiLAorICAgICJJbmZpbml0eSIs
CisKKyAgICAiJzAnIiwKKyAgICAiJzEnIiwKKyAgICAiJzInIiwKKyAgICAiJ0EnIiwKKyAgICAi
J0InIiwKKyAgICAiJ0MnIiwKKyAgICAiJ2EnIiwKKyAgICAiJ2InIiwKKyAgICAiJ2MnIgorXTsK
KworCitmdW5jdGlvbiBwb3B1bGF0ZVN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoInBvcHVsYXRpbmcgc3RvcmUuLi4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRy
YW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFu
cy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIGlu
ZGV4S2V5ID0gMDsKKyAgICB2YXIga2V5cyA9IHdpbmRvdy5rZXlzLnNsaWNlKCk7CisgICAga2V5
cy5yZXZlcnNlKCk7CisgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgeworICAgICAgICB2
YXIgdmFsdWUgPSB7IGluZGV4S2V5OiBpbmRleEtleSwgY291bnQ6IGNvdW50KysgfTsKKyAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUucHV0KCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyAiLCAi
ICsga2V5ICsgIikiKTsKKyAgICB9KTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gY2hlY2tTdG9y
ZTsKK30KKworZnVuY3Rpb24gY2hlY2tTdG9yZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJpdGVyYXRpbmcgY3Vyc29yLi4uIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50
cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworICAgIHRyYW5zLm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBl
Y3RlZEFib3J0Q2FsbGJhY2s7CisgICAgY3Vyc29yUmVxdWVzdCA9IGV2YWxBbmRMb2coImN1cnNv
clJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCkiKTsKKyAgICBldmFsQW5kTG9nKCJjb3VudCA9
IDAiKTsKKyAgICB2YXIgaW5kZXhLZXkgPSAwOworICAgIGN1cnNvclJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChjdXJzb3JSZXF1ZXN0LnJlc3VsdCkgeworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gY3Vyc29yUmVxdWVzdC5yZXN1bHQiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgU3RyaW5nKGluZGV4S2V5KSk7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCB3aW5kb3cua2V5c1tjb3VudCsrXSk7
CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiY291bnQgPT09IGtleXMubGVuZ3RoIik7CisgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCit0ZXN0KCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>