<?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>151675</bug_id>
          
          <creation_ts>2015-11-30 14:30:16 -0800</creation_ts>
          <short_desc>Modern IDB: &quot;prevunique&quot; cursors should point at the lowest primary key that matches, not the highest</short_desc>
          <delta_ts>2015-11-30 22:23:29 -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>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>150882</blocked>
    
    <blocked>151684</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144950</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-30 14:30:16 -0800</bug_when>
    <thetext>Modern IDB: &quot;prevunique&quot; cursors should point at the lowest primary key that matches, not the highest.

This is so that &quot;nextunique&quot; and &quot;prevunique&quot; both point at the same primary key record for an index entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144991</commentid>
    <comment_count>1</comment_count>
      <attachid>266291</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-30 15:43:13 -0800</bug_when>
    <thetext>Created attachment 266291
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145001</commentid>
    <comment_count>2</comment_count>
      <attachid>266291</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-30 16:00:30 -0800</bug_when>
    <thetext>Comment on attachment 266291
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/IndexValueEntry.cpp:222
&gt; -    auto iterator = std::set&lt;IDBKeyData&gt;::reverse_iterator(m_orderedKeys-&gt;upper_bound(key));
&gt; +
&gt; +    std::set&lt;IDBKeyData&gt;::reverse_iterator iterator = std::set&lt;IDBKeyData&gt;::reverse_iterator(m_orderedKeys-&gt;upper_bound(key));

Why the change here? Is it useful to repeat std::set&lt;IDBKeyData&gt;::reverse_iterator twice?

&gt; Source/WebCore/Modules/indexeddb/server/IndexValueEntry.h:38
&gt; +enum class CursorDuplicity;

Is this kind of forward declaration of an enum class sufficient? If so, that’s great and I was not aware until now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145023</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-30 16:39:18 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 266291 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266291&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/IndexValueEntry.cpp:222
&gt; &gt; -    auto iterator = std::set&lt;IDBKeyData&gt;::reverse_iterator(m_orderedKeys-&gt;upper_bound(key));
&gt; &gt; +
&gt; &gt; +    std::set&lt;IDBKeyData&gt;::reverse_iterator iterator = std::set&lt;IDBKeyData&gt;::reverse_iterator(m_orderedKeys-&gt;upper_bound(key));
&gt; 
&gt; Why the change here? Is it useful to repeat
&gt; std::set&lt;IDBKeyData&gt;::reverse_iterator twice?

The patch was more complicated originally and required a fully-typed local variable to play with.

Then it got easier again and I forgot to make it auto.

Will-do!

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/IndexValueEntry.h:38
&gt; &gt; +enum class CursorDuplicity;
&gt; 
&gt; Is this kind of forward declaration of an enum class sufficient? If so,
&gt; that’s great and I was not aware until now.

Yes, it is! It&apos;s one of the understated great things about enum class!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145025</commentid>
    <comment_count>4</comment_count>
      <attachid>266300</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-30 16:42:06 -0800</bug_when>
    <thetext>Created attachment 266300
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145052</commentid>
    <comment_count>5</comment_count>
      <attachid>266300</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-30 17:28:27 -0800</bug_when>
    <thetext>Comment on attachment 266300
Patch for landing

Clearing flags on attachment: 266300

Committed r192847: &lt;http://trac.webkit.org/changeset/192847&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266291</attachid>
            <date>2015-11-30 15:43:13 -0800</date>
            <delta_ts>2015-11-30 16:38:10 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22605</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMjViMWU3Li4yYWUwMTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTUtMTEt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJ
REI6ICJwcmV2dW5pcXVlIiBjdXJzb3JzIHNob3VsZCBwb2ludCBhdCB0aGUgbG93ZXN0IHByaW1h
cnkga2V5IHRoYXQgbWF0Y2hlcywgbm90IHRoZSBoaWdoZXN0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjc1LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJz
b3ItMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lu
ZGV4LWN1cnNvci0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaW5kZXgtY3Vyc29yLTMtZXhwZWN0ZWQudHh0OgorCisyMDE1LTExLTMwICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBNb2Rlcm4gSURCOiBDb3JyZWN0
IGhhbmRsaW5nIG9mIGN1cnNvcnMgZmluaXNoaW5nIGl0ZXJhdGlvbi4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTY2NAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2JiNTFmYS4uNjhhZmFh
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtODksNiArODksNyBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUt
dXBkYXRlcy1pbmRleGVzLmh0bWwgWyBQYXNzIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
ZGVsZXRlLXJlc3VsdC5odG1sIFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2
ZW50LXNvdXJjZS5odG1sIFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2Jh
bC1kYXRhLmh0bWwgWyBQYXNzIF0KK3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJl
di1uby1kdXBsaWNhdGUuaHRtbCBbIFBhc3MgXQogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9r
ZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5odG1sIFsgUGFzcyBdCiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQuaHRtbCBb
IFBhc3MgXQogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1u
by1rZXkuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMS1leHBlY3RlZC50eHQKaW5kZXgg
OWY5MGRlOGMuLmY3N2I5MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVjdGVkLnR4dApAQCAt
MzU2LDI1ICszNTYsMjUgQEAgU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1
cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRl
eDEKIEN1cnNvciBrZXkgaXM6IEQKLUN1cnNvciBwcmltYXJ5IGtleSBpczogMTIKK0N1cnNvciBw
cmltYXJ5IGtleSBpczogMTAKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBTdWNj
ZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJl
dnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQwot
Q3Vyc29yIHByaW1hcnkga2V5IGlzOiA5CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDcKIEN1cnNv
ciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5n
IGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBp
czogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQgotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiA2
CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDQKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmpl
Y3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlv
biBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtl
eSBpczogQQotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAzCitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6
IDEKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiAKIFN0YXJ0aW5nIGEgbmV3IGN1
cnNvcjogdGVzdEN1cnNvckRpcmVjdGlvbihpbmRleDIsICdwcmV2dW5pcXVlJykKQEAgLTM4Miwy
NSArMzgyLDI1IEBAIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3Ig
ZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgyCiBD
dXJzb3Iga2V5IGlzOiBkCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDEyCitDdXJzb3IgcHJpbWFy
eSBrZXkgaXM6IDEwCiBDdXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQogU3VjY2VzcyBv
cGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlx
dWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDIKIEN1cnNvciBrZXkgaXM6IGMKLUN1cnNv
ciBwcmltYXJ5IGtleSBpczogOQorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiA3CiBDdXJzb3IgdmFs
dWUgaXM6IFtvYmplY3QgT2JqZWN0XQogU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJz
b3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRl
c3RJbmRleDIKIEN1cnNvciBrZXkgaXM6IGIKLUN1cnNvciBwcmltYXJ5IGtleSBpczogNgorQ3Vy
c29yIHByaW1hcnkga2V5IGlzOiA0CiBDdXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQog
U3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6
IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDIKIEN1cnNvciBrZXkgaXM6
IGEKLUN1cnNvciBwcmltYXJ5IGtleSBpczogMworQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxCiBD
dXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQogRG9uZQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0y
LWV4cGVjdGVkLnR4dAppbmRleCA2YWQ0YzJiLi45MDVlNzM1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3It
Mi1leHBlY3RlZC50eHQKQEAgLTU1LDcgKzU1LDcgQEAgU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJh
dGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3Vy
Y2UgaXM6IFRlc3RJbmRleDEKIEN1cnNvciBrZXkgaXM6IEMKLUN1cnNvciBwcmltYXJ5IGtleSBp
czogOQorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiA3CiBDdXJzb3IgdmFsdWUgaXM6IFtvYmplY3Qg
T2JqZWN0XQogCiBTdGFydGluZyBhIG5ldyBjdXJzb3I6IHRlc3RDdXJzb3JEaXJlY3Rpb24oJ25l
eHQnLCBJREJLZXlSYW5nZS5ib3VuZCgnQicsICdDJykpCkBAIC0xNTMsMTMgKzE1MywxMyBAQCBT
dWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczog
cHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczog
QwotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiA5CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDcKIEN1
cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0
aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJj
ZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQgotQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiA2CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDQKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBP
YmplY3RdCiAKIFN0YXJ0aW5nIGEgbmV3IGN1cnNvcjogdGVzdEN1cnNvckRpcmVjdGlvbignbmV4
dCcsIElEQktleVJhbmdlLnVwcGVyQm91bmQoJ0InKSkKQEAgLTI1NywxMyArMjU3LDEzIEBAIFN1
Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBw
cmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBC
Ci1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDYKK0N1cnNvciBwcmltYXJ5IGtleSBpczogNAogQ3Vy
c29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRp
bmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Igc291cmNl
IGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBBCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6
IDMKK0N1cnNvciBwcmltYXJ5IGtleSBpczogMQogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9i
amVjdF0KIAogU3RhcnRpbmcgYSBuZXcgY3Vyc29yOiB0ZXN0Q3Vyc29yRGlyZWN0aW9uKCduZXh0
JywgSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgnQycpKQpAQCAtMzYxLDEzICszNjEsMTMgQEAgU3Vj
Y2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHBy
ZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDEKIEN1cnNvciBrZXkgaXM6IEQK
LUN1cnNvciBwcmltYXJ5IGtleSBpczogMTIKK0N1cnNvciBwcmltYXJ5IGtleSBpczogMTAKIEN1
cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0
aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJj
ZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQwotQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiA5CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDcKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBP
YmplY3RdCiAKIFN0YXJ0aW5nIGEgbmV3IGN1cnNvcjogdGVzdEN1cnNvckRpcmVjdGlvbignbmV4
dCcsIElEQktleVJhbmdlLm9ubHkoJ0InKSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBTdWNjZXNzIG9w
ZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1
ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQgotQ3Vyc29y
IHByaW1hcnkga2V5IGlzOiA2CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDQKIEN1cnNvciB2YWx1
ZSBpczogW29iamVjdCBPYmplY3RdCiBEb25lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMtZXhwZWN0ZWQu
dHh0CmluZGV4IGQ3NGU5YzUuLjE0YTRhY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLWV4cGVjdGVk
LnR4dApAQCAtMjQwLDM1ICsyNDAsMjYgQEAgU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBj
dXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6
IFRlc3RJbmRleDEKIEN1cnNvciBrZXkgaXM6IEkKLUN1cnNvciBwcmltYXJ5IGtleSBpczogMTgK
K0N1cnNvciBwcmltYXJ5IGtleSBpczogMTcKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmpl
Y3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlv
biBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtl
eSBpczogSAotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxNgorQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiAxNQogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KLURlbGV0ZWQga2V5IDE2IGZy
b20gb2JqZWN0IHN0b3JlCiBEZWxldGVkIGtleSAxNSBmcm9tIG9iamVjdCBzdG9yZQogRGVsZXRl
ZCBrZXkgMTQgZnJvbSBvYmplY3Qgc3RvcmUKLVN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcg
Y3Vyc29yCi1DdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCi1DdXJzb3Igc291cmNlIGlz
OiBUZXN0SW5kZXgxCi1DdXJzb3Iga2V5IGlzOiBHCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDEz
Ci1DdXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQogRGVsZXRlZCBrZXkgMTMgZnJvbSBv
YmplY3Qgc3RvcmUKLURlbGV0ZWQga2V5IDEyIGZyb20gb2JqZWN0IHN0b3JlCi1EZWxldGVkIGtl
eSAxMSBmcm9tIG9iamVjdCBzdG9yZQogU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJz
b3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRl
c3RJbmRleDEKLUN1cnNvciBrZXkgaXM6IEUKLUN1cnNvciBwcmltYXJ5IGtleSBpczogMTAKK0N1
cnNvciBrZXkgaXM6IEYKK0N1cnNvciBwcmltYXJ5IGtleSBpczogMTEKIEN1cnNvciB2YWx1ZSBp
czogW29iamVjdCBPYmplY3RdCitEZWxldGVkIGtleSAxMSBmcm9tIG9iamVjdCBzdG9yZQogRGVs
ZXRlZCBrZXkgMTAgZnJvbSBvYmplY3Qgc3RvcmUKIERlbGV0ZWQga2V5IDkgZnJvbSBvYmplY3Qg
c3RvcmUKLURlbGV0ZWQga2V5IDggZnJvbSBvYmplY3Qgc3RvcmUKIFN1Y2Nlc3Mgb3BlbmluZyBv
ciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJz
b3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCkBAIC0yODIsMTcgKzI3MywxMCBAQCBTdWNjZXNzIG9w
ZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1
ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQgotQ3Vyc29y
IHByaW1hcnkga2V5IGlzOiA0CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDMKIEN1cnNvciB2YWx1
ZSBpczogW29iamVjdCBPYmplY3RdCi1EZWxldGVkIGtleSA0IGZyb20gb2JqZWN0IHN0b3JlCiBE
ZWxldGVkIGtleSAzIGZyb20gb2JqZWN0IHN0b3JlCiBEZWxldGVkIGtleSAyIGZyb20gb2JqZWN0
IHN0b3JlCi1TdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgotQ3Vyc29yIGRpcmVj
dGlvbiBpczogcHJldnVuaXF1ZQotQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQotQ3Vyc29y
IGtleSBpczogQQotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxCi1DdXJzb3IgdmFsdWUgaXM6IFtv
YmplY3QgT2JqZWN0XQogRGVsZXRlZCBrZXkgMSBmcm9tIG9iamVjdCBzdG9yZQogU3VjY2VzcyBv
cGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIERvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTQyY2Q2Li44
OWNiYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTUtMTEtMzAgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJREI6ICJwcmV2dW5p
cXVlIiBjdXJzb3JzIHNob3VsZCBwb2ludCBhdCB0aGUgbG93ZXN0IHByaW1hcnkga2V5IHRoYXQg
bWF0Y2hlcywgbm90IHRoZSBoaWdoZXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjc1LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoQ292ZXJlZCBieSBhdCBsZWFzdCBvbmUg
ZmFpbGluZyB0ZXN0IHRoYXQgbm93IHBhc3NlcywgYW5kIHVwZGF0ZXMgdG8gcHJldmlvdXNseSBp
bmNvcnJlY3QgdGVzdHMpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lu
ZGV4VmFsdWVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFs
dWVFbnRyeTo6cmV2ZXJzZUJlZ2luKTogSWYgQ3Vyc29yRHVwbGljaXR5IGlzIE5vRHVwbGljYXRl
cywgc3RhcnQgYXQgdGhlIGxvd2VzdAorICAgICAgICAgIGVudHJ5IGluc3RlYWQgb2YgdGhlIGhp
Z2hlc3QuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVFbnRyeTo6cmV2
ZXJzZUZpbmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVl
RW50cnkuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lu
ZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFs
dWVTdG9yZTo6cmV2ZXJzZUZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJbmRl
eFZhbHVlU3RvcmU6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6SXRlcmF0b3I6Om5leHRJbmRleEVudHJ5KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmg6CisgICAgICAg
IAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleEN1cnNvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUluZGV4Q3Vyc29yOjpNZW1v
cnlJbmRleEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUluZGV4
Q3Vyc29yOjppdGVyYXRlKToKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkN1cnNvckluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29ySW5m
bzo6ZHVwbGljaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckluZm86OmlzRGlyZWN0
aW9uTm9EdXBsaWNhdGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJDdXJzb3JJbmZvLmg6CisKKzIwMTUtMTEtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCiAgICAgICAgIE1vZGVybiBJREI6IENvcnJlY3QgaGFuZGxpbmcgb2Yg
Y3Vyc29ycyBmaW5pc2hpbmcgaXRlcmF0aW9uLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjY0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVFbnRyeS5jcHAKaW5kZXgg
ZTFjOTFiMC4uNmU1YWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0luZGV4VmFsdWVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVFbnRyeS5jcHAKQEAgLTI4LDYgKzI4LDgg
QEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCQ3Vyc29y
SW5mby5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIApA
QCAtMTc2LDcgKzE3OCw3IEBAIEluZGV4VmFsdWVFbnRyeTo6SXRlcmF0b3IgSW5kZXhWYWx1ZUVu
dHJ5OjpiZWdpbigpCiAgICAgcmV0dXJuIHsgKnRoaXMsIG1fb3JkZXJlZEtleXMtPmJlZ2luKCkg
fTsKIH0KIAotSW5kZXhWYWx1ZUVudHJ5OjpJdGVyYXRvciBJbmRleFZhbHVlRW50cnk6OnJldmVy
c2VCZWdpbigpCitJbmRleFZhbHVlRW50cnk6Okl0ZXJhdG9yIEluZGV4VmFsdWVFbnRyeTo6cmV2
ZXJzZUJlZ2luKEN1cnNvckR1cGxpY2l0eSBkdXBsaWNpdHkpCiB7CiAgICAgaWYgKG1fdW5pcXVl
KSB7CiAgICAgICAgIEFTU0VSVChtX2tleSk7CkBAIC0xODQsNyArMTg2LDEzIEBAIEluZGV4VmFs
dWVFbnRyeTo6SXRlcmF0b3IgSW5kZXhWYWx1ZUVudHJ5OjpyZXZlcnNlQmVnaW4oKQogICAgIH0K
IAogICAgIEFTU0VSVChtX29yZGVyZWRLZXlzKTsKLSAgICByZXR1cm4geyAqdGhpcywgbV9vcmRl
cmVkS2V5cy0+cmJlZ2luKCkgfTsKKworICAgIGlmIChkdXBsaWNpdHkgPT0gQ3Vyc29yRHVwbGlj
aXR5OjpEdXBsaWNhdGVzKQorICAgICAgICByZXR1cm4geyAqdGhpcywgbV9vcmRlcmVkS2V5cy0+
cmJlZ2luKCkgfTsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29yZGVyZWRLZXlzLT5yZW5kKCk7
CisgICAgLS1pdGVyYXRvcjsKKyAgICByZXR1cm4geyAqdGhpcywgaXRlcmF0b3IgfTsKIH0KIAog
SW5kZXhWYWx1ZUVudHJ5OjpJdGVyYXRvciBJbmRleFZhbHVlRW50cnk6OmZpbmQoY29uc3QgSURC
S2V5RGF0YSYga2V5KQpAQCAtMjAyLDcgKzIxMCw3IEBAIEluZGV4VmFsdWVFbnRyeTo6SXRlcmF0
b3IgSW5kZXhWYWx1ZUVudHJ5OjpmaW5kKGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICByZXR1
cm4geyAqdGhpcywgaXRlcmF0b3IgfTsKIH0KIAotSW5kZXhWYWx1ZUVudHJ5OjpJdGVyYXRvciBJ
bmRleFZhbHVlRW50cnk6OnJldmVyc2VGaW5kKGNvbnN0IElEQktleURhdGEmIGtleSkKK0luZGV4
VmFsdWVFbnRyeTo6SXRlcmF0b3IgSW5kZXhWYWx1ZUVudHJ5OjpyZXZlcnNlRmluZChjb25zdCBJ
REJLZXlEYXRhJiBrZXksIEN1cnNvckR1cGxpY2l0eSkKIHsKICAgICBpZiAobV91bmlxdWUpIHsK
ICAgICAgICAgQVNTRVJUKG1fa2V5KTsKQEAgLTIxMCw3ICsyMTgsOSBAQCBJbmRleFZhbHVlRW50
cnk6Okl0ZXJhdG9yIEluZGV4VmFsdWVFbnRyeTo6cmV2ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0
YSYga2V5KQogICAgIH0KIAogICAgIEFTU0VSVChtX29yZGVyZWRLZXlzKTsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gc3RkOjpzZXQ8SURCS2V5RGF0YT46OnJldmVyc2VfaXRlcmF0b3IobV9vcmRlcmVk
S2V5cy0+dXBwZXJfYm91bmQoa2V5KSk7CisKKyAgICBzdGQ6OnNldDxJREJLZXlEYXRhPjo6cmV2
ZXJzZV9pdGVyYXRvciBpdGVyYXRvciA9IHN0ZDo6c2V0PElEQktleURhdGE+OjpyZXZlcnNlX2l0
ZXJhdG9yKG1fb3JkZXJlZEtleXMtPnVwcGVyX2JvdW5kKGtleSkpOworCiAgICAgaWYgKGl0ZXJh
dG9yID09IG1fb3JkZXJlZEtleXMtPnJlbmQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFs
dWVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4
VmFsdWVFbnRyeS5oCmluZGV4IDFhZmQ3NWYuLjgxODNmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmgK
QEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaHJlYWRTYWZl
RGF0YUJ1ZmZlcjsKIAorZW51bSBjbGFzcyBDdXJzb3JEdXBsaWNpdHk7CisKIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCiBjbGFzcyBJbmRleFZhbHVlRW50cnkgewpAQCAtNzcsMTIgKzc5LDEyIEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgSXRlcmF0b3IgYmVnaW4oKTsKLSAgICBJdGVyYXRvciBy
ZXZlcnNlQmVnaW4oKTsKKyAgICBJdGVyYXRvciByZXZlcnNlQmVnaW4oQ3Vyc29yRHVwbGljaXR5
KTsKIAogICAgIC8vIEZpbmRzIHRoZSBrZXksIG9yIHRoZSBuZXh0IGhpZ2hlciByZWNvcmQgYWZ0
ZXIgdGhlIGtleS4KICAgICBJdGVyYXRvciBmaW5kKGNvbnN0IElEQktleURhdGEmKTsKICAgICAv
LyBGaW5kcyB0aGUga2V5LCBvciB0aGUgbmV4dCBsb3dlc3QgcmVjb3JkIGJlZm9yZSB0aGUga2V5
LgotICAgIEl0ZXJhdG9yIHJldmVyc2VGaW5kKGNvbnN0IElEQktleURhdGEmKTsKKyAgICBJdGVy
YXRvciByZXZlcnNlRmluZChjb25zdCBJREJLZXlEYXRhJiwgQ3Vyc29yRHVwbGljaXR5KTsKIAog
ICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1
ZVN0b3JlLmNwcAppbmRleCA1ODI0NWFjLi42ZWRjZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNw
cApAQCAtMjMxLDcgKzIzMSw3IEBAIEluZGV4VmFsdWVTdG9yZTo6SXRlcmF0b3IgSW5kZXhWYWx1
ZVN0b3JlOjpmaW5kKGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCCiAgICAgcmV0dXJu
IHsgKnRoaXMsIGl0ZXJhdG9yLCBwcmltYXJ5SXRlcmF0b3IgfTsKIH0KIAotSW5kZXhWYWx1ZVN0
b3JlOjpJdGVyYXRvciBJbmRleFZhbHVlU3RvcmU6OnJldmVyc2VGaW5kKGNvbnN0IElEQktleURh
dGEmIGtleSwgYm9vbCBvcGVuKQorSW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvciBJbmRleFZhbHVl
U3RvcmU6OnJldmVyc2VGaW5kKGNvbnN0IElEQktleURhdGEmIGtleSwgQ3Vyc29yRHVwbGljaXR5
IGR1cGxpY2l0eSwgYm9vbCBvcGVuKQogewogICAgIElEQktleVJhbmdlRGF0YSByYW5nZTsKICAg
ICBpZiAoIWtleS5pc051bGwoKSkKQEAgLTI0NywxMiArMjQ3LDEyIEBAIEluZGV4VmFsdWVTdG9y
ZTo6SXRlcmF0b3IgSW5kZXhWYWx1ZVN0b3JlOjpyZXZlcnNlRmluZChjb25zdCBJREJLZXlEYXRh
JiBrZXksIGJvCiAgICAgYXV0byByZWNvcmQgPSBtX3JlY29yZHMuZ2V0KCppdGVyYXRvcik7CiAg
ICAgQVNTRVJUKHJlY29yZCk7CiAKLSAgICBhdXRvIHByaW1hcnlJdGVyYXRvciA9IHJlY29yZC0+
cmV2ZXJzZUJlZ2luKCk7CisgICAgYXV0byBwcmltYXJ5SXRlcmF0b3IgPSByZWNvcmQtPnJldmVy
c2VCZWdpbihkdXBsaWNpdHkpOwogICAgIEFTU0VSVChwcmltYXJ5SXRlcmF0b3IuaXNWYWxpZCgp
KTsKLSAgICByZXR1cm4geyAqdGhpcywgaXRlcmF0b3IsIHByaW1hcnlJdGVyYXRvciB9OworICAg
IHJldHVybiB7ICp0aGlzLCBkdXBsaWNpdHksIGl0ZXJhdG9yLCBwcmltYXJ5SXRlcmF0b3IgfTsK
IH0KIAotSW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvciBJbmRleFZhbHVlU3RvcmU6OnJldmVyc2VG
aW5kKGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSkK
K0luZGV4VmFsdWVTdG9yZTo6SXRlcmF0b3IgSW5kZXhWYWx1ZVN0b3JlOjpyZXZlcnNlRmluZChj
b25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIEN1cnNv
ckR1cGxpY2l0eSBkdXBsaWNpdHkpCiB7CiAgICAgQVNTRVJUKCFrZXkuaXNOdWxsKCkpOwogICAg
IEFTU0VSVCghcHJpbWFyeUtleS5pc051bGwoKSk7CkBAIC0yNjgsOSArMjY4LDkgQEAgSW5kZXhW
YWx1ZVN0b3JlOjpJdGVyYXRvciBJbmRleFZhbHVlU3RvcmU6OnJldmVyc2VGaW5kKGNvbnN0IElE
QktleURhdGEmIGtleSwgY28KICAgICBhdXRvIHJlY29yZCA9IG1fcmVjb3Jkcy5nZXQoKml0ZXJh
dG9yKTsKICAgICBBU1NFUlQocmVjb3JkKTsKIAotICAgIGF1dG8gcHJpbWFyeUl0ZXJhdG9yID0g
cmVjb3JkLT5yZXZlcnNlRmluZChwcmltYXJ5S2V5KTsKKyAgICBhdXRvIHByaW1hcnlJdGVyYXRv
ciA9IHJlY29yZC0+cmV2ZXJzZUZpbmQocHJpbWFyeUtleSwgZHVwbGljaXR5KTsKICAgICBpZiAo
cHJpbWFyeUl0ZXJhdG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHsgKnRoaXMsIGl0ZXJh
dG9yLCBwcmltYXJ5SXRlcmF0b3IgfTsKKyAgICAgICAgcmV0dXJuIHsgKnRoaXMsIGR1cGxpY2l0
eSwgaXRlcmF0b3IsIHByaW1hcnlJdGVyYXRvciB9OwogCiAgICAgLy8gSWYgd2UgZGlkbid0IGZp
bmQgYSBwcmltYXJ5IGtleSBpdGVyYXRvciBpbiB0aGlzIGVudHJ5LAogICAgIC8vIHdlIG5lZWQg
dG8gbW92ZSBvbiB0byBzdGFydCBvZiB0aGUgbmV4dCByZWNvcmQuCkBAIC0yODEsMTAgKzI4MSwx
MCBAQCBJbmRleFZhbHVlU3RvcmU6Okl0ZXJhdG9yIEluZGV4VmFsdWVTdG9yZTo6cmV2ZXJzZUZp
bmQoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjbwogICAgIHJlY29yZCA9IG1fcmVjb3Jkcy5nZXQo
Kml0ZXJhdG9yKTsKICAgICBBU1NFUlQocmVjb3JkKTsKIAotICAgIHByaW1hcnlJdGVyYXRvciA9
IHJlY29yZC0+cmV2ZXJzZUJlZ2luKCk7CisgICAgcHJpbWFyeUl0ZXJhdG9yID0gcmVjb3JkLT5y
ZXZlcnNlQmVnaW4oZHVwbGljaXR5KTsKICAgICBBU1NFUlQocHJpbWFyeUl0ZXJhdG9yLmlzVmFs
aWQoKSk7CiAKLSAgICByZXR1cm4geyAqdGhpcywgaXRlcmF0b3IsIHByaW1hcnlJdGVyYXRvciB9
OworICAgIHJldHVybiB7ICp0aGlzLCBkdXBsaWNpdHksIGl0ZXJhdG9yLCBwcmltYXJ5SXRlcmF0
b3IgfTsKIH0KIAogCkBAIC0yOTUsOSArMjk1LDEwIEBAIEluZGV4VmFsdWVTdG9yZTo6SXRlcmF0
b3I6Okl0ZXJhdG9yKEluZGV4VmFsdWVTdG9yZSYgc3RvcmUsIHN0ZDo6c2V0PElEQktleURhdGE+
CiB7CiB9CiAKLUluZGV4VmFsdWVTdG9yZTo6SXRlcmF0b3I6Okl0ZXJhdG9yKEluZGV4VmFsdWVT
dG9yZSYgc3RvcmUsIHN0ZDo6c2V0PElEQktleURhdGE+OjpyZXZlcnNlX2l0ZXJhdG9yIGl0ZXJh
dG9yLCBJbmRleFZhbHVlRW50cnk6Okl0ZXJhdG9yIHByaW1hcnlJdGVyYXRvcikKK0luZGV4VmFs
dWVTdG9yZTo6SXRlcmF0b3I6Okl0ZXJhdG9yKEluZGV4VmFsdWVTdG9yZSYgc3RvcmUsIEN1cnNv
ckR1cGxpY2l0eSBkdXBsaWNpdHksIHN0ZDo6c2V0PElEQktleURhdGE+OjpyZXZlcnNlX2l0ZXJh
dG9yIGl0ZXJhdG9yLCBJbmRleFZhbHVlRW50cnk6Okl0ZXJhdG9yIHByaW1hcnlJdGVyYXRvcikK
ICAgICA6IG1fc3RvcmUoJnN0b3JlKQogICAgICwgbV9mb3J3YXJkKGZhbHNlKQorICAgICwgbV9k
dXBsaWNpdHkoZHVwbGljaXR5KQogICAgICwgbV9yZXZlcnNlSXRlcmF0b3IoaXRlcmF0b3IpCiAg
ICAgLCBtX3ByaW1hcnlLZXlJdGVyYXRvcihwcmltYXJ5SXRlcmF0b3IpCiB7CkBAIC0zMzAsNyAr
MzMxLDcgQEAgSW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvciYgSW5kZXhWYWx1ZVN0b3JlOjpJdGVy
YXRvcjo6bmV4dEluZGV4RW50cnkoKQogICAgICAgICBhdXRvKiBlbnRyeSA9IG1fc3RvcmUtPm1f
cmVjb3Jkcy5nZXQoKm1fcmV2ZXJzZUl0ZXJhdG9yKTsKICAgICAgICAgQVNTRVJUKGVudHJ5KTsK
IAotICAgICAgICBtX3ByaW1hcnlLZXlJdGVyYXRvciA9IGVudHJ5LT5yZXZlcnNlQmVnaW4oKTsK
KyAgICAgICAgbV9wcmltYXJ5S2V5SXRlcmF0b3IgPSBlbnRyeS0+cmV2ZXJzZUJlZ2luKG1fZHVw
bGljaXR5KTsKICAgICAgICAgQVNTRVJUKG1fcHJpbWFyeUtleUl0ZXJhdG9yLmlzVmFsaWQoKSk7
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5oCmluZGV4IGZjY2RmODMuLjExYjBkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZh
bHVlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SW5kZXhWYWx1ZVN0b3JlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIklEQktl
eURhdGEuaCIKICNpbmNsdWRlICJJbmRleFZhbHVlRW50cnkuaCIKICNpbmNsdWRlIDxzZXQ+CkBA
IC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEl0ZXJhdG9yKElu
ZGV4VmFsdWVTdG9yZSYsIHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRvciwgSW5kZXhWYWx1
ZUVudHJ5OjpJdGVyYXRvcik7Ci0gICAgICAgIEl0ZXJhdG9yKEluZGV4VmFsdWVTdG9yZSYsIHN0
ZDo6c2V0PElEQktleURhdGE+OjpyZXZlcnNlX2l0ZXJhdG9yLCBJbmRleFZhbHVlRW50cnk6Okl0
ZXJhdG9yKTsKKyAgICAgICAgSXRlcmF0b3IoSW5kZXhWYWx1ZVN0b3JlJiwgQ3Vyc29yRHVwbGlj
aXR5LCBzdGQ6OnNldDxJREJLZXlEYXRhPjo6cmV2ZXJzZV9pdGVyYXRvciwgSW5kZXhWYWx1ZUVu
dHJ5OjpJdGVyYXRvcik7CiAKICAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgICAgIGJv
b2wgaXNWYWxpZCgpOwpAQCAtODIsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSW5kZXhWYWx1ZVN0b3JlKiBtX3N0b3JlIHsgbnVsbHB0ciB9OwogICAgICAgICBib29s
IG1fZm9yd2FyZCB7IHRydWUgfTsKKyAgICAgICAgQ3Vyc29yRHVwbGljaXR5IG1fZHVwbGljaXR5
IHsgQ3Vyc29yRHVwbGljaXR5OjpEdXBsaWNhdGVzIH07CiAgICAgICAgIHN0ZDo6c2V0PElEQktl
eURhdGE+OjppdGVyYXRvciBtX2ZvcndhcmRJdGVyYXRvcjsKICAgICAgICAgc3RkOjpzZXQ8SURC
S2V5RGF0YT46OnJldmVyc2VfaXRlcmF0b3IgbV9yZXZlcnNlSXRlcmF0b3I7CiAKQEAgLTkwLDEx
ICs5MiwxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHBvaW50aW5n
IHRvIHRoZSBmaXJzdCBwcmltYXJ5S2V5IHJlY29yZCBpbiB0aGUgcmVxdWVzdGVkIGtleSwgb3Ig
dGhlIG5leHQga2V5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuCiAgICAgSXRlcmF0b3IgZmluZChjb25z
dCBJREJLZXlEYXRhJiwgYm9vbCBvcGVuID0gZmFsc2UpOwotICAgIEl0ZXJhdG9yIHJldmVyc2VG
aW5kKGNvbnN0IElEQktleURhdGEmLCBib29sIG9wZW4gPSBmYWxzZSk7CisgICAgSXRlcmF0b3Ig
cmV2ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0YSYsIEN1cnNvckR1cGxpY2l0eSwgYm9vbCBvcGVu
ID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyBhbiBpdGVyYXRvciBwb2ludGluZyB0byB0aGUg
a2V5L3ByaW1hcnlLZXkgcmVjb3JkLCBvciB0aGUgbmV4dCBvbmUgYWZ0ZXIgaXQgaWYgaXQgZG9l
c24ndCBleGlzdC4KICAgICBJdGVyYXRvciBmaW5kKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJLZXlEYXRhJiBwcmltYXJ5S2V5KTsKLSAgICBJdGVyYXRvciByZXZlcnNlRmluZChjb25zdCBJ
REJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSk7CisgICAgSXRlcmF0b3Ig
cmV2ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlL
ZXksIEN1cnNvckR1cGxpY2l0eSk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpzZXQ8SURCS2V5RGF0
YT46Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJbmRleEN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXhDdXJzb3IuY3BwCmluZGV4IDI2MTAwYTkuLmU1MmJlOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJbmRleEN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUluZGV4Q3Vyc29yLmNwcApAQCAtNTAsNyArNTAsNyBAQCBNZW1vcnlJbmRl
eEN1cnNvcjo6TWVtb3J5SW5kZXhDdXJzb3IoTWVtb3J5SW5kZXgmIGluZGV4LCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbgogICAgIGlmIChtX2luZm8uaXNEaXJlY3Rpb25Gb3J3YXJkKCkpCiAgICAg
ICAgIGl0ZXJhdG9yID0gdmFsdWVTdG9yZS0+ZmluZChtX2luZm8ucmFuZ2UoKS5sb3dlcktleSwg
bV9pbmZvLnJhbmdlKCkubG93ZXJPcGVuKTsKICAgICBlbHNlCi0gICAgICAgIGl0ZXJhdG9yID0g
dmFsdWVTdG9yZS0+cmV2ZXJzZUZpbmQobV9pbmZvLnJhbmdlKCkudXBwZXJLZXksIG1faW5mby5y
YW5nZSgpLnVwcGVyT3Blbik7CisgICAgICAgIGl0ZXJhdG9yID0gdmFsdWVTdG9yZS0+cmV2ZXJz
ZUZpbmQobV9pbmZvLnJhbmdlKCkudXBwZXJLZXksIG1faW5mby5kdXBsaWNpdHkoKSwgbV9pbmZv
LnJhbmdlKCkudXBwZXJPcGVuKTsKIAogICAgIGlmIChpdGVyYXRvci5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgbV9jdXJyZW50S2V5ID0gaXRlcmF0b3Iua2V5KCk7CkBAIC05MCw3ICs5MCw3IEBAIHZv
aWQgTWVtb3J5SW5kZXhDdXJzb3I6Oml0ZXJhdGUoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1aW50
MzJfdCBjb3VudCwgSURCR2V0UmVzCiAgICAgICAgIGlmIChtX2luZm8uaXNEaXJlY3Rpb25Gb3J3
YXJkKCkpCiAgICAgICAgICAgICBtX2N1cnJlbnRJdGVyYXRvciA9IHZhbHVlU3RvcmUtPmZpbmQo
bV9jdXJyZW50S2V5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9jdXJyZW50SXRlcmF0
b3IgPSB2YWx1ZVN0b3JlLT5yZXZlcnNlRmluZChtX2N1cnJlbnRLZXkpOworICAgICAgICAgICAg
bV9jdXJyZW50SXRlcmF0b3IgPSB2YWx1ZVN0b3JlLT5yZXZlcnNlRmluZChtX2N1cnJlbnRLZXks
IG1faW5mby5kdXBsaWNpdHkoKSk7CiAKICAgICAgICAgaWYgKCFtX2N1cnJlbnRJdGVyYXRvci5p
c1ZhbGlkKCkpIHsKICAgICAgICAgICAgIG1fY3VycmVudEtleSA9IHsgfTsKQEAgLTEzMCwxMCAr
MTMwLDEwIEBAIHZvaWQgTWVtb3J5SW5kZXhDdXJzb3I6Oml0ZXJhdGUoY29uc3QgSURCS2V5RGF0
YSYga2V5LCB1aW50MzJfdCBjb3VudCwgSURCR2V0UmVzCiAgICAgICAgICAgICBtX2N1cnJlbnRJ
dGVyYXRvciA9IHZhbHVlU3RvcmUtPmZpbmQobV9jdXJyZW50S2V5LCB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2
OgotICAgICAgICAgICAgbV9jdXJyZW50SXRlcmF0b3IgPSB2YWx1ZVN0b3JlLT5yZXZlcnNlRmlu
ZChtX2N1cnJlbnRLZXksIG1fY3VycmVudFByaW1hcnlLZXkpOworICAgICAgICAgICAgbV9jdXJy
ZW50SXRlcmF0b3IgPSB2YWx1ZVN0b3JlLT5yZXZlcnNlRmluZChtX2N1cnJlbnRLZXksIG1fY3Vy
cmVudFByaW1hcnlLZXksIG1faW5mby5kdXBsaWNpdHkoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldk5vRHVwbGljYXRl
OgotICAgICAgICAgICAgbV9jdXJyZW50SXRlcmF0b3IgPSB2YWx1ZVN0b3JlLT5yZXZlcnNlRmlu
ZChtX2N1cnJlbnRLZXksIHRydWUpOworICAgICAgICAgICAgbV9jdXJyZW50SXRlcmF0b3IgPSB2
YWx1ZVN0b3JlLT5yZXZlcnNlRmluZChtX2N1cnJlbnRLZXksIG1faW5mby5kdXBsaWNpdHkoKSwg
dHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xNTUsNyArMTU1LDcg
QEAgdm9pZCBNZW1vcnlJbmRleEN1cnNvcjo6aXRlcmF0ZShjb25zdCBJREJLZXlEYXRhJiBrZXks
IHVpbnQzMl90IGNvdW50LCBJREJHZXRSZXMKICAgICBBU1NFUlQobV9jdXJyZW50SXRlcmF0b3Iu
aXNWYWxpZCgpKTsKIAogICAgIHdoaWxlIChjb3VudCkgewotICAgICAgICBpZiAobV9pbmZvLmlz
RGlyZWN0aW9uTm9EdXBsaWNhdGUoKSkKKyAgICAgICAgaWYgKG1faW5mby5kdXBsaWNpdHkoKSA9
PSBDdXJzb3JEdXBsaWNpdHk6Ok5vRHVwbGljYXRlcykKICAgICAgICAgICAgIG1fY3VycmVudEl0
ZXJhdG9yLm5leHRJbmRleEVudHJ5KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsrbV9j
dXJyZW50SXRlcmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5jcHAKaW5kZXggOTBlYjY5MS4uMGUxNTUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1
cnNvckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJDdXJzb3JJbmZvLmNwcApAQCAtODQsOSArODQsOSBAQCBib29sIElEQkN1cnNvckluZm86
OmlzRGlyZWN0aW9uRm9yd2FyZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGlyZWN0aW9uID09IElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0IHx8IG1fZGlyZWN0aW9uID09IEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0Tm9EdXBsaWNhdGU7CiB9CiAKLWJvb2wgSURCQ3Vyc29y
SW5mbzo6aXNEaXJlY3Rpb25Ob0R1cGxpY2F0ZSgpIGNvbnN0CitDdXJzb3JEdXBsaWNpdHkgSURC
Q3Vyc29ySW5mbzo6ZHVwbGljaXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kaXJlY3Rpb24g
PT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHROb0R1cGxpY2F0ZSB8fCBtX2RpcmVj
dGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldk5vRHVwbGljYXRlOworICAg
IHJldHVybiBtX2RpcmVjdGlvbiA9PSBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dE5v
RHVwbGljYXRlIHx8IG1fZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQ
cmV2Tm9EdXBsaWNhdGUgPyBDdXJzb3JEdXBsaWNpdHk6Ok5vRHVwbGljYXRlcyA6IEN1cnNvckR1
cGxpY2l0eTo6RHVwbGljYXRlczsKIH0KIAogSURCQ3Vyc29ySW5mbyBJREJDdXJzb3JJbmZvOjpp
c29sYXRlZENvcHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmgKaW5kZXggY2E3MWUzNy4uNDAxZTUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1
cnNvckluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCQ3Vyc29ySW5mby5oCkBAIC00NSw2ICs0NSwxMSBAQCBlbnVtIGNsYXNzIEN1cnNvclR5cGU7
CiAKIHN0cnVjdCBJREJLZXlSYW5nZURhdGE7CiAKK2VudW0gY2xhc3MgQ3Vyc29yRHVwbGljaXR5
IHsKKyAgICBEdXBsaWNhdGVzLAorICAgIE5vRHVwbGljYXRlcywKK307CisKIGNsYXNzIElEQkN1
cnNvckluZm8gewogcHVibGljOgogICAgIHN0YXRpYyBJREJDdXJzb3JJbmZvIG9iamVjdFN0b3Jl
Q3Vyc29yKElEQkNsaWVudDo6SURCVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uKTsKQEAgLTYwLDcgKzY1LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9CiAKICAgICBib29sIGlzRGlyZWN0
aW9uRm9yd2FyZCgpIGNvbnN0OwotICAgIGJvb2wgaXNEaXJlY3Rpb25Ob0R1cGxpY2F0ZSgpIGNv
bnN0OworICAgIEN1cnNvckR1cGxpY2l0eSBkdXBsaWNpdHkoKSBjb25zdDsKIAogICAgIElEQkN1
cnNvckluZm8gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="291305"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="291306"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266300</attachid>
            <date>2015-11-30 16:42:06 -0800</date>
            <delta_ts>2015-11-30 17:28:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22193</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNTBlM2IzLi45Yzg2ZjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTUtMTEt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJ
REI6ICJwcmV2dW5pcXVlIiBjdXJzb3JzIHNob3VsZCBwb2ludCBhdCB0aGUgbG93ZXN0IHByaW1h
cnkga2V5IHRoYXQgbWF0Y2hlcywgbm90IHRoZSBoaWdoZXN0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjc1LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3It
MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LWN1cnNvci0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaW5kZXgtY3Vyc29yLTMtZXhwZWN0ZWQudHh0OgorCisyMDE1LTExLTMwICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBNb2Rlcm4gSURCOiBTZXQgdGhlIGNv
cnJlY3Qgc291cmNlIG9uIHRoZSBJREJSZXF1ZXN0IGZvciBjdXJzb3IgdXBkYXRlcwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjY1CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3YmI1MWZh
Li42OGFmYWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCkBAIC04OSw2ICs4OSw3IEBAIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3Vyc29y
LXVwZGF0ZS11cGRhdGVzLWluZGV4ZXMuaHRtbCBbIFBhc3MgXQogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9kZWxldGUtcmVzdWx0Lmh0bWwgWyBQYXNzIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvZXZlbnQtc291cmNlLmh0bWwgWyBQYXNzIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvZ2xvYmFsLWRhdGEuaHRtbCBbIFBhc3MgXQorc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9p
bmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sIFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0bWwgWyBQYXNzIF0KIHN0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3Nl
ZC5odG1sIFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVu
dHMtcHV0LW5vLWtleS5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVjdGVkLnR4
dAppbmRleCA5ZjkwZGU4Yy4uZjc3YjkzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTEtZXhwZWN0ZWQu
dHh0CkBAIC0zNTYsMjUgKzM1NiwyNSBAQCBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1
cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczog
VGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogRAotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxMgor
Q3Vyc29yIHByaW1hcnkga2V5IGlzOiAxMAogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVj
dF0KIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9u
IGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5
IGlzOiBDCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDkKK0N1cnNvciBwcmltYXJ5IGtleSBpczog
NwogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIFN1Y2Nlc3Mgb3BlbmluZyBvciBp
dGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Ig
c291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBCCi1DdXJzb3IgcHJpbWFyeSBr
ZXkgaXM6IDYKK0N1cnNvciBwcmltYXJ5IGtleSBpczogNAogQ3Vyc29yIHZhbHVlIGlzOiBbb2Jq
ZWN0IE9iamVjdF0KIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3Ig
ZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBD
dXJzb3Iga2V5IGlzOiBBCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDMKK0N1cnNvciBwcmltYXJ5
IGtleSBpczogMQogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIAogU3RhcnRpbmcg
YSBuZXcgY3Vyc29yOiB0ZXN0Q3Vyc29yRGlyZWN0aW9uKGluZGV4MiwgJ3ByZXZ1bmlxdWUnKQpA
QCAtMzgyLDI1ICszODIsMjUgQEAgU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IK
IEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJ
bmRleDIKIEN1cnNvciBrZXkgaXM6IGQKLUN1cnNvciBwcmltYXJ5IGtleSBpczogMTIKK0N1cnNv
ciBwcmltYXJ5IGtleSBpczogMTAKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBT
dWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczog
cHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MgogQ3Vyc29yIGtleSBpczog
YwotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiA5CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDcKIEN1
cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0
aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJj
ZSBpczogVGVzdEluZGV4MgogQ3Vyc29yIGtleSBpczogYgotQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiA2CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDQKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBP
YmplY3RdCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVj
dGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MgogQ3Vyc29y
IGtleSBpczogYQotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAzCitDdXJzb3IgcHJpbWFyeSBrZXkg
aXM6IDEKIEN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBEb25lCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgt
Y3Vyc29yLTItZXhwZWN0ZWQudHh0CmluZGV4IDZhZDRjMmIuLjkwNWU3MzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LWN1cnNvci0yLWV4cGVjdGVkLnR4dApAQCAtNTUsNyArNTUsNyBAQCBTdWNjZXNzIG9wZW5pbmcg
b3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vy
c29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogQwotQ3Vyc29yIHByaW1h
cnkga2V5IGlzOiA5CitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDcKIEN1cnNvciB2YWx1ZSBpczog
W29iamVjdCBPYmplY3RdCiAKIFN0YXJ0aW5nIGEgbmV3IGN1cnNvcjogdGVzdEN1cnNvckRpcmVj
dGlvbignbmV4dCcsIElEQktleVJhbmdlLmJvdW5kKCdCJywgJ0MnKSkKQEAgLTE1MywxMyArMTUz
LDEzIEBAIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0
aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Ig
a2V5IGlzOiBDCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDkKK0N1cnNvciBwcmltYXJ5IGtleSBp
czogNwogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIFN1Y2Nlc3Mgb3BlbmluZyBv
ciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJz
b3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBCCi1DdXJzb3IgcHJpbWFy
eSBrZXkgaXM6IDYKK0N1cnNvciBwcmltYXJ5IGtleSBpczogNAogQ3Vyc29yIHZhbHVlIGlzOiBb
b2JqZWN0IE9iamVjdF0KIAogU3RhcnRpbmcgYSBuZXcgY3Vyc29yOiB0ZXN0Q3Vyc29yRGlyZWN0
aW9uKCduZXh0JywgSURCS2V5UmFuZ2UudXBwZXJCb3VuZCgnQicpKQpAQCAtMjU3LDEzICsyNTcs
MTMgQEAgU3VjY2VzcyBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rp
b24gaXM6IHByZXZ1bmlxdWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDEKIEN1cnNvciBr
ZXkgaXM6IEIKLUN1cnNvciBwcmltYXJ5IGtleSBpczogNgorQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiA0CiBDdXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQogU3VjY2VzcyBvcGVuaW5nIG9y
IGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKIEN1cnNv
ciBzb3VyY2UgaXM6IFRlc3RJbmRleDEKIEN1cnNvciBrZXkgaXM6IEEKLUN1cnNvciBwcmltYXJ5
IGtleSBpczogMworQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxCiBDdXJzb3IgdmFsdWUgaXM6IFtv
YmplY3QgT2JqZWN0XQogCiBTdGFydGluZyBhIG5ldyBjdXJzb3I6IHRlc3RDdXJzb3JEaXJlY3Rp
b24oJ25leHQnLCBJREJLZXlSYW5nZS5sb3dlckJvdW5kKCdDJykpCkBAIC0zNjEsMTMgKzM2MSwx
MyBAQCBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlv
biBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtl
eSBpczogRAotQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxMgorQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiAxMAogQ3Vyc29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIFN1Y2Nlc3Mgb3BlbmluZyBv
ciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJz
b3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBDCi1DdXJzb3IgcHJpbWFy
eSBrZXkgaXM6IDkKK0N1cnNvciBwcmltYXJ5IGtleSBpczogNwogQ3Vyc29yIHZhbHVlIGlzOiBb
b2JqZWN0IE9iamVjdF0KIAogU3RhcnRpbmcgYSBuZXcgY3Vyc29yOiB0ZXN0Q3Vyc29yRGlyZWN0
aW9uKCduZXh0JywgSURCS2V5UmFuZ2Uub25seSgnQicpKQpAQCAtNDIzLDcgKzQyMyw3IEBAIFN1
Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBw
cmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBC
Ci1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDYKK0N1cnNvciBwcmltYXJ5IGtleSBpczogNAogQ3Vy
c29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KIERvbmUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMy1l
eHBlY3RlZC50eHQKaW5kZXggZDc0ZTljNS4uMTRhNGFjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMt
ZXhwZWN0ZWQudHh0CkBAIC0yNDAsMzUgKzI0MCwyNiBAQCBTdWNjZXNzIG9wZW5pbmcgb3IgaXRl
cmF0aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNv
dXJjZSBpczogVGVzdEluZGV4MQogQ3Vyc29yIGtleSBpczogSQotQ3Vyc29yIHByaW1hcnkga2V5
IGlzOiAxOAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxNwogQ3Vyc29yIHZhbHVlIGlzOiBbb2Jq
ZWN0IE9iamVjdF0KIFN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3Ig
ZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBD
dXJzb3Iga2V5IGlzOiBICi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDE2CitDdXJzb3IgcHJpbWFy
eSBrZXkgaXM6IDE1CiBDdXJzb3IgdmFsdWUgaXM6IFtvYmplY3QgT2JqZWN0XQotRGVsZXRlZCBr
ZXkgMTYgZnJvbSBvYmplY3Qgc3RvcmUKIERlbGV0ZWQga2V5IDE1IGZyb20gb2JqZWN0IHN0b3Jl
CiBEZWxldGVkIGtleSAxNCBmcm9tIG9iamVjdCBzdG9yZQotU3VjY2VzcyBvcGVuaW5nIG9yIGl0
ZXJhdGluZyBjdXJzb3IKLUN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKLUN1cnNvciBz
b3VyY2UgaXM6IFRlc3RJbmRleDEKLUN1cnNvciBrZXkgaXM6IEcKLUN1cnNvciBwcmltYXJ5IGtl
eSBpczogMTMKLUN1cnNvciB2YWx1ZSBpczogW29iamVjdCBPYmplY3RdCiBEZWxldGVkIGtleSAx
MyBmcm9tIG9iamVjdCBzdG9yZQotRGVsZXRlZCBrZXkgMTIgZnJvbSBvYmplY3Qgc3RvcmUKLURl
bGV0ZWQga2V5IDExIGZyb20gb2JqZWN0IHN0b3JlCiBTdWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0
aW5nIGN1cnNvcgogQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQogQ3Vyc29yIHNvdXJj
ZSBpczogVGVzdEluZGV4MQotQ3Vyc29yIGtleSBpczogRQotQ3Vyc29yIHByaW1hcnkga2V5IGlz
OiAxMAorQ3Vyc29yIGtleSBpczogRgorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiAxMQogQ3Vyc29y
IHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KK0RlbGV0ZWQga2V5IDExIGZyb20gb2JqZWN0IHN0
b3JlCiBEZWxldGVkIGtleSAxMCBmcm9tIG9iamVjdCBzdG9yZQogRGVsZXRlZCBrZXkgOSBmcm9t
IG9iamVjdCBzdG9yZQotRGVsZXRlZCBrZXkgOCBmcm9tIG9iamVjdCBzdG9yZQogU3VjY2VzcyBv
cGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IKIEN1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlx
dWUKIEN1cnNvciBzb3VyY2UgaXM6IFRlc3RJbmRleDEKQEAgLTI4MiwxNyArMjczLDEwIEBAIFN1
Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCiBDdXJzb3IgZGlyZWN0aW9uIGlzOiBw
cmV2dW5pcXVlCiBDdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgxCiBDdXJzb3Iga2V5IGlzOiBC
Ci1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDQKK0N1cnNvciBwcmltYXJ5IGtleSBpczogMwogQ3Vy
c29yIHZhbHVlIGlzOiBbb2JqZWN0IE9iamVjdF0KLURlbGV0ZWQga2V5IDQgZnJvbSBvYmplY3Qg
c3RvcmUKIERlbGV0ZWQga2V5IDMgZnJvbSBvYmplY3Qgc3RvcmUKIERlbGV0ZWQga2V5IDIgZnJv
bSBvYmplY3Qgc3RvcmUKLVN1Y2Nlc3Mgb3BlbmluZyBvciBpdGVyYXRpbmcgY3Vyc29yCi1DdXJz
b3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCi1DdXJzb3Igc291cmNlIGlzOiBUZXN0SW5kZXgx
Ci1DdXJzb3Iga2V5IGlzOiBBCi1DdXJzb3IgcHJpbWFyeSBrZXkgaXM6IDEKLUN1cnNvciB2YWx1
ZSBpczogW29iamVjdCBPYmplY3RdCiBEZWxldGVkIGtleSAxIGZyb20gb2JqZWN0IHN0b3JlCiBT
dWNjZXNzIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogRG9uZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAx
ODg1NmEuLjJiMzZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNSBAQAogMjAxNS0xMS0zMCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuIElEQjog
InByZXZ1bmlxdWUiIGN1cnNvcnMgc2hvdWxkIHBvaW50IGF0IHRoZSBsb3dlc3QgcHJpbWFyeSBr
ZXkgdGhhdCBtYXRjaGVzLCBub3QgdGhlIGhpZ2hlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE2NzUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChDb3ZlcmVkIGJ5IGF0IGxlYXN0
IG9uZSBmYWlsaW5nIHRlc3QgdGhhdCBub3cgcGFzc2VzLCBhbmQgdXBkYXRlcyB0byBwcmV2aW91
c2x5IGluY29ycmVjdCB0ZXN0cykuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSW5kZXhWYWx1ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5k
ZXhWYWx1ZUVudHJ5OjpyZXZlcnNlQmVnaW4pOiBJZiBDdXJzb3JEdXBsaWNpdHkgaXMgTm9EdXBs
aWNhdGVzLCBzdGFydCBhdCB0aGUgbG93ZXN0CisgICAgICAgICAgZW50cnkgaW5zdGVhZCBvZiB0
aGUgaGlnaGVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZUVudHJ5
OjpyZXZlcnNlRmluZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4
VmFsdWVFbnRyeS5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5k
ZXhWYWx1ZVN0b3JlOjpyZXZlcnNlRmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OkluZGV4VmFsdWVTdG9yZTo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvcjo6bmV4dEluZGV4RW50cnkpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuaDoKKyAg
ICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4Q3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXhDdXJzb3I6
Ok1lbW9yeUluZGV4Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
SW5kZXhDdXJzb3I6Oml0ZXJhdGUpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3JJbmZvOjpkdXBsaWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29ySW5mbzo6aXNE
aXJlY3Rpb25Ob0R1cGxpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uaDoKKworMjAxNS0xMS0zMCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW9kZXJuIElEQjogU2V0IHRoZSBjb3JyZWN0
IHNvdXJjZSBvbiB0aGUgSURCUmVxdWVzdCBmb3IgY3Vyc29yIHVwZGF0ZXMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTY2NQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVl
RW50cnkuY3BwCmluZGV4IGUxYzkxYjAuLjk4ZGI5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50cnkuY3Bw
CkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2lu
Y2x1ZGUgIklEQkN1cnNvckluZm8uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IElEQlNlcnZlciB7CiAKQEAgLTE3Niw3ICsxNzgsNyBAQCBJbmRleFZhbHVlRW50cnk6Okl0ZXJh
dG9yIEluZGV4VmFsdWVFbnRyeTo6YmVnaW4oKQogICAgIHJldHVybiB7ICp0aGlzLCBtX29yZGVy
ZWRLZXlzLT5iZWdpbigpIH07CiB9CiAKLUluZGV4VmFsdWVFbnRyeTo6SXRlcmF0b3IgSW5kZXhW
YWx1ZUVudHJ5OjpyZXZlcnNlQmVnaW4oKQorSW5kZXhWYWx1ZUVudHJ5OjpJdGVyYXRvciBJbmRl
eFZhbHVlRW50cnk6OnJldmVyc2VCZWdpbihDdXJzb3JEdXBsaWNpdHkgZHVwbGljaXR5KQogewog
ICAgIGlmIChtX3VuaXF1ZSkgewogICAgICAgICBBU1NFUlQobV9rZXkpOwpAQCAtMTg0LDcgKzE4
NiwxMyBAQCBJbmRleFZhbHVlRW50cnk6Okl0ZXJhdG9yIEluZGV4VmFsdWVFbnRyeTo6cmV2ZXJz
ZUJlZ2luKCkKICAgICB9CiAKICAgICBBU1NFUlQobV9vcmRlcmVkS2V5cyk7Ci0gICAgcmV0dXJu
IHsgKnRoaXMsIG1fb3JkZXJlZEtleXMtPnJiZWdpbigpIH07CisKKyAgICBpZiAoZHVwbGljaXR5
ID09IEN1cnNvckR1cGxpY2l0eTo6RHVwbGljYXRlcykKKyAgICAgICAgcmV0dXJuIHsgKnRoaXMs
IG1fb3JkZXJlZEtleXMtPnJiZWdpbigpIH07CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9vcmRl
cmVkS2V5cy0+cmVuZCgpOworICAgIC0taXRlcmF0b3I7CisgICAgcmV0dXJuIHsgKnRoaXMsIGl0
ZXJhdG9yIH07CiB9CiAKIEluZGV4VmFsdWVFbnRyeTo6SXRlcmF0b3IgSW5kZXhWYWx1ZUVudHJ5
OjpmaW5kKGNvbnN0IElEQktleURhdGEmIGtleSkKQEAgLTIwMiw3ICsyMTAsNyBAQCBJbmRleFZh
bHVlRW50cnk6Okl0ZXJhdG9yIEluZGV4VmFsdWVFbnRyeTo6ZmluZChjb25zdCBJREJLZXlEYXRh
JiBrZXkpCiAgICAgcmV0dXJuIHsgKnRoaXMsIGl0ZXJhdG9yIH07CiB9CiAKLUluZGV4VmFsdWVF
bnRyeTo6SXRlcmF0b3IgSW5kZXhWYWx1ZUVudHJ5OjpyZXZlcnNlRmluZChjb25zdCBJREJLZXlE
YXRhJiBrZXkpCitJbmRleFZhbHVlRW50cnk6Okl0ZXJhdG9yIEluZGV4VmFsdWVFbnRyeTo6cmV2
ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0YSYga2V5LCBDdXJzb3JEdXBsaWNpdHkpCiB7CiAgICAg
aWYgKG1fdW5pcXVlKSB7CiAgICAgICAgIEFTU0VSVChtX2tleSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZUVudHJ5LmgK
aW5kZXggMWFmZDc1Zi4uODE4M2YxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlRW50cnkuaApAQCAtMzUsNiArMzUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRocmVhZFNhZmVEYXRhQnVmZmVyOwog
CitlbnVtIGNsYXNzIEN1cnNvckR1cGxpY2l0eTsKKwogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAK
IGNsYXNzIEluZGV4VmFsdWVFbnRyeSB7CkBAIC03NywxMiArNzksMTIgQEAgcHVibGljOgogICAg
IH07CiAKICAgICBJdGVyYXRvciBiZWdpbigpOwotICAgIEl0ZXJhdG9yIHJldmVyc2VCZWdpbigp
OworICAgIEl0ZXJhdG9yIHJldmVyc2VCZWdpbihDdXJzb3JEdXBsaWNpdHkpOwogCiAgICAgLy8g
RmluZHMgdGhlIGtleSwgb3IgdGhlIG5leHQgaGlnaGVyIHJlY29yZCBhZnRlciB0aGUga2V5Lgog
ICAgIEl0ZXJhdG9yIGZpbmQoY29uc3QgSURCS2V5RGF0YSYpOwogICAgIC8vIEZpbmRzIHRoZSBr
ZXksIG9yIHRoZSBuZXh0IGxvd2VzdCByZWNvcmQgYmVmb3JlIHRoZSBrZXkuCi0gICAgSXRlcmF0
b3IgcmV2ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0YSYpOworICAgIEl0ZXJhdG9yIHJldmVyc2VG
aW5kKGNvbnN0IElEQktleURhdGEmLCBDdXJzb3JEdXBsaWNpdHkpOwogCiAgICAgYm9vbCB1bmlx
dWUoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCmlu
ZGV4IDU4MjQ1YWMuLjZlZGNlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCkBAIC0yMzEsNyAr
MjMxLDcgQEAgSW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvciBJbmRleFZhbHVlU3RvcmU6OmZpbmQo
Y29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREIKICAgICByZXR1cm4geyAqdGhpcywgaXRl
cmF0b3IsIHByaW1hcnlJdGVyYXRvciB9OwogfQogCi1JbmRleFZhbHVlU3RvcmU6Okl0ZXJhdG9y
IEluZGV4VmFsdWVTdG9yZTo6cmV2ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0YSYga2V5LCBib29s
IG9wZW4pCitJbmRleFZhbHVlU3RvcmU6Okl0ZXJhdG9yIEluZGV4VmFsdWVTdG9yZTo6cmV2ZXJz
ZUZpbmQoY29uc3QgSURCS2V5RGF0YSYga2V5LCBDdXJzb3JEdXBsaWNpdHkgZHVwbGljaXR5LCBi
b29sIG9wZW4pCiB7CiAgICAgSURCS2V5UmFuZ2VEYXRhIHJhbmdlOwogICAgIGlmICgha2V5Lmlz
TnVsbCgpKQpAQCAtMjQ3LDEyICsyNDcsMTIgQEAgSW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvciBJ
bmRleFZhbHVlU3RvcmU6OnJldmVyc2VGaW5kKGNvbnN0IElEQktleURhdGEmIGtleSwgYm8KICAg
ICBhdXRvIHJlY29yZCA9IG1fcmVjb3Jkcy5nZXQoKml0ZXJhdG9yKTsKICAgICBBU1NFUlQocmVj
b3JkKTsKIAotICAgIGF1dG8gcHJpbWFyeUl0ZXJhdG9yID0gcmVjb3JkLT5yZXZlcnNlQmVnaW4o
KTsKKyAgICBhdXRvIHByaW1hcnlJdGVyYXRvciA9IHJlY29yZC0+cmV2ZXJzZUJlZ2luKGR1cGxp
Y2l0eSk7CiAgICAgQVNTRVJUKHByaW1hcnlJdGVyYXRvci5pc1ZhbGlkKCkpOwotICAgIHJldHVy
biB7ICp0aGlzLCBpdGVyYXRvciwgcHJpbWFyeUl0ZXJhdG9yIH07CisgICAgcmV0dXJuIHsgKnRo
aXMsIGR1cGxpY2l0eSwgaXRlcmF0b3IsIHByaW1hcnlJdGVyYXRvciB9OwogfQogCi1JbmRleFZh
bHVlU3RvcmU6Okl0ZXJhdG9yIEluZGV4VmFsdWVTdG9yZTo6cmV2ZXJzZUZpbmQoY29uc3QgSURC
S2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5KQorSW5kZXhWYWx1ZVN0
b3JlOjpJdGVyYXRvciBJbmRleFZhbHVlU3RvcmU6OnJldmVyc2VGaW5kKGNvbnN0IElEQktleURh
dGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgQ3Vyc29yRHVwbGljaXR5IGR1
cGxpY2l0eSkKIHsKICAgICBBU1NFUlQoIWtleS5pc051bGwoKSk7CiAgICAgQVNTRVJUKCFwcmlt
YXJ5S2V5LmlzTnVsbCgpKTsKQEAgLTI2OCw5ICsyNjgsOSBAQCBJbmRleFZhbHVlU3RvcmU6Okl0
ZXJhdG9yIEluZGV4VmFsdWVTdG9yZTo6cmV2ZXJzZUZpbmQoY29uc3QgSURCS2V5RGF0YSYga2V5
LCBjbwogICAgIGF1dG8gcmVjb3JkID0gbV9yZWNvcmRzLmdldCgqaXRlcmF0b3IpOwogICAgIEFT
U0VSVChyZWNvcmQpOwogCi0gICAgYXV0byBwcmltYXJ5SXRlcmF0b3IgPSByZWNvcmQtPnJldmVy
c2VGaW5kKHByaW1hcnlLZXkpOworICAgIGF1dG8gcHJpbWFyeUl0ZXJhdG9yID0gcmVjb3JkLT5y
ZXZlcnNlRmluZChwcmltYXJ5S2V5LCBkdXBsaWNpdHkpOwogICAgIGlmIChwcmltYXJ5SXRlcmF0
b3IuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4geyAqdGhpcywgaXRlcmF0b3IsIHByaW1hcnlJ
dGVyYXRvciB9OworICAgICAgICByZXR1cm4geyAqdGhpcywgZHVwbGljaXR5LCBpdGVyYXRvciwg
cHJpbWFyeUl0ZXJhdG9yIH07CiAKICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhIHByaW1hcnkg
a2V5IGl0ZXJhdG9yIGluIHRoaXMgZW50cnksCiAgICAgLy8gd2UgbmVlZCB0byBtb3ZlIG9uIHRv
IHN0YXJ0IG9mIHRoZSBuZXh0IHJlY29yZC4KQEAgLTI4MSwxMCArMjgxLDEwIEBAIEluZGV4VmFs
dWVTdG9yZTo6SXRlcmF0b3IgSW5kZXhWYWx1ZVN0b3JlOjpyZXZlcnNlRmluZChjb25zdCBJREJL
ZXlEYXRhJiBrZXksIGNvCiAgICAgcmVjb3JkID0gbV9yZWNvcmRzLmdldCgqaXRlcmF0b3IpOwog
ICAgIEFTU0VSVChyZWNvcmQpOwogCi0gICAgcHJpbWFyeUl0ZXJhdG9yID0gcmVjb3JkLT5yZXZl
cnNlQmVnaW4oKTsKKyAgICBwcmltYXJ5SXRlcmF0b3IgPSByZWNvcmQtPnJldmVyc2VCZWdpbihk
dXBsaWNpdHkpOwogICAgIEFTU0VSVChwcmltYXJ5SXRlcmF0b3IuaXNWYWxpZCgpKTsKIAotICAg
IHJldHVybiB7ICp0aGlzLCBpdGVyYXRvciwgcHJpbWFyeUl0ZXJhdG9yIH07CisgICAgcmV0dXJu
IHsgKnRoaXMsIGR1cGxpY2l0eSwgaXRlcmF0b3IsIHByaW1hcnlJdGVyYXRvciB9OwogfQogCiAK
QEAgLTI5NSw5ICsyOTUsMTAgQEAgSW5kZXhWYWx1ZVN0b3JlOjpJdGVyYXRvcjo6SXRlcmF0b3Io
SW5kZXhWYWx1ZVN0b3JlJiBzdG9yZSwgc3RkOjpzZXQ8SURCS2V5RGF0YT4KIHsKIH0KIAotSW5k
ZXhWYWx1ZVN0b3JlOjpJdGVyYXRvcjo6SXRlcmF0b3IoSW5kZXhWYWx1ZVN0b3JlJiBzdG9yZSwg
c3RkOjpzZXQ8SURCS2V5RGF0YT46OnJldmVyc2VfaXRlcmF0b3IgaXRlcmF0b3IsIEluZGV4VmFs
dWVFbnRyeTo6SXRlcmF0b3IgcHJpbWFyeUl0ZXJhdG9yKQorSW5kZXhWYWx1ZVN0b3JlOjpJdGVy
YXRvcjo6SXRlcmF0b3IoSW5kZXhWYWx1ZVN0b3JlJiBzdG9yZSwgQ3Vyc29yRHVwbGljaXR5IGR1
cGxpY2l0eSwgc3RkOjpzZXQ8SURCS2V5RGF0YT46OnJldmVyc2VfaXRlcmF0b3IgaXRlcmF0b3Is
IEluZGV4VmFsdWVFbnRyeTo6SXRlcmF0b3IgcHJpbWFyeUl0ZXJhdG9yKQogICAgIDogbV9zdG9y
ZSgmc3RvcmUpCiAgICAgLCBtX2ZvcndhcmQoZmFsc2UpCisgICAgLCBtX2R1cGxpY2l0eShkdXBs
aWNpdHkpCiAgICAgLCBtX3JldmVyc2VJdGVyYXRvcihpdGVyYXRvcikKICAgICAsIG1fcHJpbWFy
eUtleUl0ZXJhdG9yKHByaW1hcnlJdGVyYXRvcikKIHsKQEAgLTMzMCw3ICszMzEsNyBAQCBJbmRl
eFZhbHVlU3RvcmU6Okl0ZXJhdG9yJiBJbmRleFZhbHVlU3RvcmU6Okl0ZXJhdG9yOjpuZXh0SW5k
ZXhFbnRyeSgpCiAgICAgICAgIGF1dG8qIGVudHJ5ID0gbV9zdG9yZS0+bV9yZWNvcmRzLmdldCgq
bV9yZXZlcnNlSXRlcmF0b3IpOwogICAgICAgICBBU1NFUlQoZW50cnkpOwogCi0gICAgICAgIG1f
cHJpbWFyeUtleUl0ZXJhdG9yID0gZW50cnktPnJldmVyc2VCZWdpbigpOworICAgICAgICBtX3By
aW1hcnlLZXlJdGVyYXRvciA9IGVudHJ5LT5yZXZlcnNlQmVnaW4obV9kdXBsaWNpdHkpOwogICAg
ICAgICBBU1NFUlQobV9wcmltYXJ5S2V5SXRlcmF0b3IuaXNWYWxpZCgpKTsKICAgICB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5k
ZXhWYWx1ZVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SW5kZXhWYWx1ZVN0b3JlLmgKaW5kZXggZmNjZGY4My4uMTFiMGQ2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3Rv
cmUuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
KyNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2lu
Y2x1ZGUgIkluZGV4VmFsdWVFbnRyeS5oIgogI2luY2x1ZGUgPHNldD4KQEAgLTY3LDcgKzY4LDcg
QEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgSXRlcmF0b3IoSW5kZXhWYWx1ZVN0b3Jl
Jiwgc3RkOjpzZXQ8SURCS2V5RGF0YT46Oml0ZXJhdG9yLCBJbmRleFZhbHVlRW50cnk6Okl0ZXJh
dG9yKTsKLSAgICAgICAgSXRlcmF0b3IoSW5kZXhWYWx1ZVN0b3JlJiwgc3RkOjpzZXQ8SURCS2V5
RGF0YT46OnJldmVyc2VfaXRlcmF0b3IsIEluZGV4VmFsdWVFbnRyeTo6SXRlcmF0b3IpOworICAg
ICAgICBJdGVyYXRvcihJbmRleFZhbHVlU3RvcmUmLCBDdXJzb3JEdXBsaWNpdHksIHN0ZDo6c2V0
PElEQktleURhdGE+OjpyZXZlcnNlX2l0ZXJhdG9yLCBJbmRleFZhbHVlRW50cnk6Okl0ZXJhdG9y
KTsKIAogICAgICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCk7
CkBAIC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBJbmRleFZh
bHVlU3RvcmUqIG1fc3RvcmUgeyBudWxscHRyIH07CiAgICAgICAgIGJvb2wgbV9mb3J3YXJkIHsg
dHJ1ZSB9OworICAgICAgICBDdXJzb3JEdXBsaWNpdHkgbV9kdXBsaWNpdHkgeyBDdXJzb3JEdXBs
aWNpdHk6OkR1cGxpY2F0ZXMgfTsKICAgICAgICAgc3RkOjpzZXQ8SURCS2V5RGF0YT46Oml0ZXJh
dG9yIG1fZm9yd2FyZEl0ZXJhdG9yOwogICAgICAgICBzdGQ6OnNldDxJREJLZXlEYXRhPjo6cmV2
ZXJzZV9pdGVyYXRvciBtX3JldmVyc2VJdGVyYXRvcjsKIApAQCAtOTAsMTEgKzkyLDExIEBAIHB1
YmxpYzoKIAogICAgIC8vIFJldHVybnMgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGZpcnN0
IHByaW1hcnlLZXkgcmVjb3JkIGluIHRoZSByZXF1ZXN0ZWQga2V5LCBvciB0aGUgbmV4dCBrZXkg
aWYgaXQgZG9lc24ndCBleGlzdC4KICAgICBJdGVyYXRvciBmaW5kKGNvbnN0IElEQktleURhdGEm
LCBib29sIG9wZW4gPSBmYWxzZSk7Ci0gICAgSXRlcmF0b3IgcmV2ZXJzZUZpbmQoY29uc3QgSURC
S2V5RGF0YSYsIGJvb2wgb3BlbiA9IGZhbHNlKTsKKyAgICBJdGVyYXRvciByZXZlcnNlRmluZChj
b25zdCBJREJLZXlEYXRhJiwgQ3Vyc29yRHVwbGljaXR5LCBib29sIG9wZW4gPSBmYWxzZSk7CiAK
ICAgICAvLyBSZXR1cm5zIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBrZXkvcHJpbWFyeUtl
eSByZWNvcmQsIG9yIHRoZSBuZXh0IG9uZSBhZnRlciBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0Lgog
ICAgIEl0ZXJhdG9yIGZpbmQoY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmIHBy
aW1hcnlLZXkpOwotICAgIEl0ZXJhdG9yIHJldmVyc2VGaW5kKGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5KTsKKyAgICBJdGVyYXRvciByZXZlcnNlRmluZChj
b25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgQ3Vyc29yRHVw
bGljaXR5KTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnNldDxJREJLZXlEYXRhPjo6aXRlcmF0b3Ig
bG93ZXN0SXRlcmF0b3JJblJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlu
ZGV4Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJbmRleEN1cnNvci5jcHAKaW5kZXggMjYxMDBhOS4uZTUyYmU5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4Q3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SW5kZXhDdXJzb3IuY3BwCkBAIC01MCw3ICs1MCw3IEBAIE1lbW9yeUluZGV4Q3Vyc29yOjpNZW1v
cnlJbmRleEN1cnNvcihNZW1vcnlJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1cnNvckluZm8mIGlu
CiAgICAgaWYgKG1faW5mby5pc0RpcmVjdGlvbkZvcndhcmQoKSkKICAgICAgICAgaXRlcmF0b3Ig
PSB2YWx1ZVN0b3JlLT5maW5kKG1faW5mby5yYW5nZSgpLmxvd2VyS2V5LCBtX2luZm8ucmFuZ2Uo
KS5sb3dlck9wZW4pOwogICAgIGVsc2UKLSAgICAgICAgaXRlcmF0b3IgPSB2YWx1ZVN0b3JlLT5y
ZXZlcnNlRmluZChtX2luZm8ucmFuZ2UoKS51cHBlcktleSwgbV9pbmZvLnJhbmdlKCkudXBwZXJP
cGVuKTsKKyAgICAgICAgaXRlcmF0b3IgPSB2YWx1ZVN0b3JlLT5yZXZlcnNlRmluZChtX2luZm8u
cmFuZ2UoKS51cHBlcktleSwgbV9pbmZvLmR1cGxpY2l0eSgpLCBtX2luZm8ucmFuZ2UoKS51cHBl
ck9wZW4pOwogCiAgICAgaWYgKGl0ZXJhdG9yLmlzVmFsaWQoKSkgewogICAgICAgICBtX2N1cnJl
bnRLZXkgPSBpdGVyYXRvci5rZXkoKTsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBNZW1vcnlJbmRl
eEN1cnNvcjo6aXRlcmF0ZShjb25zdCBJREJLZXlEYXRhJiBrZXksIHVpbnQzMl90IGNvdW50LCBJ
REJHZXRSZXMKICAgICAgICAgaWYgKG1faW5mby5pc0RpcmVjdGlvbkZvcndhcmQoKSkKICAgICAg
ICAgICAgIG1fY3VycmVudEl0ZXJhdG9yID0gdmFsdWVTdG9yZS0+ZmluZChtX2N1cnJlbnRLZXkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2N1cnJlbnRJdGVyYXRvciA9IHZhbHVlU3Rv
cmUtPnJldmVyc2VGaW5kKG1fY3VycmVudEtleSk7CisgICAgICAgICAgICBtX2N1cnJlbnRJdGVy
YXRvciA9IHZhbHVlU3RvcmUtPnJldmVyc2VGaW5kKG1fY3VycmVudEtleSwgbV9pbmZvLmR1cGxp
Y2l0eSgpKTsKIAogICAgICAgICBpZiAoIW1fY3VycmVudEl0ZXJhdG9yLmlzVmFsaWQoKSkgewog
ICAgICAgICAgICAgbV9jdXJyZW50S2V5ID0geyB9OwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9p
ZCBNZW1vcnlJbmRleEN1cnNvcjo6aXRlcmF0ZShjb25zdCBJREJLZXlEYXRhJiBrZXksIHVpbnQz
Ml90IGNvdW50LCBJREJHZXRSZXMKICAgICAgICAgICAgIG1fY3VycmVudEl0ZXJhdG9yID0gdmFs
dWVTdG9yZS0+ZmluZChtX2N1cnJlbnRLZXksIHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXY6Ci0gICAgICAgICAg
ICBtX2N1cnJlbnRJdGVyYXRvciA9IHZhbHVlU3RvcmUtPnJldmVyc2VGaW5kKG1fY3VycmVudEtl
eSwgbV9jdXJyZW50UHJpbWFyeUtleSk7CisgICAgICAgICAgICBtX2N1cnJlbnRJdGVyYXRvciA9
IHZhbHVlU3RvcmUtPnJldmVyc2VGaW5kKG1fY3VycmVudEtleSwgbV9jdXJyZW50UHJpbWFyeUtl
eSwgbV9pbmZvLmR1cGxpY2l0eSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2Tm9EdXBsaWNhdGU6Ci0gICAgICAgICAg
ICBtX2N1cnJlbnRJdGVyYXRvciA9IHZhbHVlU3RvcmUtPnJldmVyc2VGaW5kKG1fY3VycmVudEtl
eSwgdHJ1ZSk7CisgICAgICAgICAgICBtX2N1cnJlbnRJdGVyYXRvciA9IHZhbHVlU3RvcmUtPnJl
dmVyc2VGaW5kKG1fY3VycmVudEtleSwgbV9pbmZvLmR1cGxpY2l0eSgpLCB0cnVlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE1lbW9y
eUluZGV4Q3Vyc29yOjppdGVyYXRlKGNvbnN0IElEQktleURhdGEmIGtleSwgdWludDMyX3QgY291
bnQsIElEQkdldFJlcwogICAgIEFTU0VSVChtX2N1cnJlbnRJdGVyYXRvci5pc1ZhbGlkKCkpOwog
CiAgICAgd2hpbGUgKGNvdW50KSB7Ci0gICAgICAgIGlmIChtX2luZm8uaXNEaXJlY3Rpb25Ob0R1
cGxpY2F0ZSgpKQorICAgICAgICBpZiAobV9pbmZvLmR1cGxpY2l0eSgpID09IEN1cnNvckR1cGxp
Y2l0eTo6Tm9EdXBsaWNhdGVzKQogICAgICAgICAgICAgbV9jdXJyZW50SXRlcmF0b3IubmV4dElu
ZGV4RW50cnkoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKyttX2N1cnJlbnRJdGVyYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJDdXJzb3JJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJDdXJzb3JJbmZvLmNwcAppbmRleCA5MGViNjkxLi4wZTE1NTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvcklu
Zm8uY3BwCkBAIC04NCw5ICs4NCw5IEBAIGJvb2wgSURCQ3Vyc29ySW5mbzo6aXNEaXJlY3Rpb25G
b3J3YXJkKCkgY29uc3QKICAgICByZXR1cm4gbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb246Ok5leHQgfHwgbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb246Ok5leHROb0R1cGxpY2F0ZTsKIH0KIAotYm9vbCBJREJDdXJzb3JJbmZvOjppc0RpcmVj
dGlvbk5vRHVwbGljYXRlKCkgY29uc3QKK0N1cnNvckR1cGxpY2l0eSBJREJDdXJzb3JJbmZvOjpk
dXBsaWNpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX2RpcmVjdGlvbiA9PSBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbjo6TmV4dE5vRHVwbGljYXRlIHx8IG1fZGlyZWN0aW9uID09IEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2Tm9EdXBsaWNhdGU7CisgICAgcmV0dXJuIG1fZGly
ZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0Tm9EdXBsaWNhdGUgfHwg
bV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlByZXZOb0R1cGxpY2F0
ZSA/IEN1cnNvckR1cGxpY2l0eTo6Tm9EdXBsaWNhdGVzIDogQ3Vyc29yRHVwbGljaXR5OjpEdXBs
aWNhdGVzOwogfQogCiBJREJDdXJzb3JJbmZvIElEQkN1cnNvckluZm86Omlzb2xhdGVkQ29weSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCQ3Vyc29ySW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkN1cnNvckluZm8uaAppbmRleCBjYTcxZTM3Li40MDFlNTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZv
LmgKQEAgLTQ1LDYgKzQ1LDExIEBAIGVudW0gY2xhc3MgQ3Vyc29yVHlwZTsKIAogc3RydWN0IElE
QktleVJhbmdlRGF0YTsKIAorZW51bSBjbGFzcyBDdXJzb3JEdXBsaWNpdHkgeworICAgIER1cGxp
Y2F0ZXMsCisgICAgTm9EdXBsaWNhdGVzLAorfTsKKwogY2xhc3MgSURCQ3Vyc29ySW5mbyB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIElEQkN1cnNvckluZm8gb2JqZWN0U3RvcmVDdXJzb3IoSURCQ2xp
ZW50OjpJREJUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOwpAQCAtNjAs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KIAogICAgIGJvb2wgaXNEaXJlY3Rpb25Gb3J3YXJkKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0RpcmVjdGlvbk5vRHVwbGljYXRlKCkgY29uc3Q7CisgICAgQ3Vy
c29yRHVwbGljaXR5IGR1cGxpY2l0eSgpIGNvbnN0OwogCiAgICAgSURCQ3Vyc29ySW5mbyBpc29s
YXRlZENvcHkoKSBjb25zdDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>