<?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>151640</bug_id>
          
          <creation_ts>2015-11-27 22:17:15 -0800</creation_ts>
          <short_desc>Modern IDB: Support keyPath injection into object store records</short_desc>
          <delta_ts>2015-11-30 10:16:38 -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>Other</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>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</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>1144634</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-27 22:17:15 -0800</bug_when>
    <thetext>Modern IDB: Support keyPath injection into object store records</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144688</commentid>
    <comment_count>1</comment_count>
      <attachid>266225</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-29 10:22:28 -0800</bug_when>
    <thetext>Created attachment 266225
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144780</commentid>
    <comment_count>2</comment_count>
      <attachid>266225</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-11-30 09:32:47 -0800</bug_when>
    <thetext>Comment on attachment 266225
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:488
&gt; +    static NeverDestroyed&lt;RefPtr&lt;VM&gt;&gt; vm = VM::create();

Anders once asked me to not use NeverDestroyed for heap-allocated objects. You can just use a static VM* and leak the reference.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:495
&gt; +    static NeverDestroyed&lt;Strong&lt;JSGlobalObject&gt;&gt; globalObject;

LazyNeverDestroyed?

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:568
&gt; +        RefPtr&lt;SerializedScriptValue&gt; serializedValue = SerializedScriptValue::create(&amp;databaseThreadExecState(), value, nullptr, nullptr);

You can use auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144800</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-30 10:16:38 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/192798</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266225</attachid>
            <date>2015-11-29 10:22:28 -0800</date>
            <delta_ts>2015-11-30 09:32:47 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17785</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTRmMGM1Li4wMDNhZWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMTEt
MjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFN1cHBvcnQga2V5UGF0aCBpbmplY3Rpb24gaW50byBvYmplY3Qgc3RvcmUgcmVjb3Jkcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTY0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE1LTExLTE4ICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmddIENyYXNoIGlu
IERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpIHdoZW4gYWxsb3dpbmcgYSBtZWRpYSBk
b2N1bWVudCB0byBsb2FkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYzY0ODRkMC4uMTE2YWFlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMsNiArNzMsNyBAQCBpbnNwZWN0b3Iv
aW5kZXhlZGRiCiAjIEJ1dCBNb2Rlcm4gSW5kZXhlZERCIGlzLgogc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuIFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2FkZC10d2ljZS1mYWls
dXJlLmh0bWwgWyBQYXNzIF0KK3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVu
dC1pbmRleGVzLmh0bWwgWyBQYXNzIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtl
eXBhdGguaHRtbCBbIFBhc3MgXQogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1s
IFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUu
aHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUzZGM3YjMuLmU3MTY1ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNSBAQAorMjAxNS0xMS0yOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogU3VwcG9ydCBrZXlQYXRoIGluamVjdGlvbiBp
bnRvIG9iamVjdCBzdG9yZSByZWNvcmRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChBdCBsZWFzdCBvbmUgZXhpc3RpbmcgZmFp
bHVyZSBub3cgcGFzc2VzIGFuZCBpcyB1bnNraXBwZWQsCisgICAgICAgIHdoaWxlIG1hbnkgb3Ro
ZXIgZXhpc3RpbmcgZmFpbHVyZXMgYXJlIG5vdyBjbG9zZXIgdG8gcGFzc2luZykuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhl
c0ZvclB1dFJlY29yZCk6IFVzZSB0aGUgbmV3IFVuaXF1ZUlEQkRhdGFiYXNlIFZNL0V4ZWNTdGF0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OnBvcHVs
YXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6aW5kZXhWTSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OmluZGV4R2xvYmFsRXhlYyk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZFZNKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFk
RXhlY1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1QdXRPckFkZCk6IElmIGFwcHJvcHJpYXRlLCBpbmplY3QgdGhlIGtleSB0aGF0
IHdpbGwgYmUgdXNlZCBpbnRvCisgICAgICAgICAgdGhlIHZhbHVlIGJlZm9yZSBzdG9yaW5nIHRo
ZSByZWNvcmQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmg6CisKKyAgICAgICAgQWRkIG1vZGVybiBKU1ZhbHVlL0V4ZWNTdGF0ZSYgdmVyc2lv
biBvZiBzb21lIGJpbmRpbmcgdXRpbGl0aWVzLCBmb3IgdXNlIHRvZGF5IGFuZCBpbiBwcmVwYXJh
dGlvbiBvZiBnZXR0aW5nIAorICAgICAgICByaWQgb2YgdGhlIERPTVJlcXVlc3RTdGF0ZSBhbmQg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmVyc2lvbnMgbGF0ZXI6CisgICAgICAgICogYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppZGJLZXlU
b0pTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWVEYXRhVG9KU1ZhbHVlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmg6CisKIDIwMTUtMTEtMjcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IENsYXNzLWlm
eSBJREJHZXRSZXN1bHQgbWFraW5nIGl0IGltcG9zc2libGUgdG8gZ2V0IHRoZSBkYXRhIG1lbWJl
cnMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCBmMzIwYzcwLi5lNzY3NjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJJbmRleEtleS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMjY3LDI3ICsyNjgsNiBAQCBJ
REJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbgogICAgIHJldHVybiBlcnJvcjsKIH0KIAotc3RhdGljIFZN
JiBpbmRleFZNKCkKLXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFZNPj4gdm0gPSBWTTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJu
ICp2bS5nZXQoKTsKLX0KLQotc3RhdGljIEV4ZWNTdGF0ZSYgaW5kZXhHbG9iYWxFeGVjKCkKLXsK
LSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3Ryb25nPEpTR2xvYmFsT2JqZWN0Pj4gZ2xvYmFsT2JqZWN0OwotICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBnbG9i
YWxPYmplY3QuZ2V0KCkuc2V0KGluZGV4Vk0oKSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZShpbmRl
eFZNKCksIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5kZXhWTSgpLCBqc051bGwo
KSkpKTsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLQotICAgIFJFTEVBU0Vf
QVNTRVJUKGdsb2JhbE9iamVjdC5nZXQoKS0+Z2xvYmFsRXhlYygpKTsKLSAgICByZXR1cm4gKmds
b2JhbE9iamVjdC5nZXQoKS0+Z2xvYmFsRXhlYygpOwotfQotCiB2b2lkIE1lbW9yeU9iamVjdFN0
b3JlOjp1cGRhdGVDdXJzb3JzRm9yUHV0UmVjb3JkKHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVy
YXRvciBpdGVyYXRvcikKIHsKICAgICBmb3IgKGF1dG8mIGN1cnNvciA6IG1fY3Vyc29ycy52YWx1
ZXMoKSkKQEAgLTMwOCw5ICsyODgsOSBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJ
bmRleGVzRm9yRGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmIHZhbHVlKQogCiBJREJFcnJv
ciBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJL
ZXlEYXRhJiBrZXksIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKIHsKLSAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKGluZGV4Vk0oKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihV
bmlxdWVJREJEYXRhYmFzZTo6ZGF0YWJhc2VUaHJlYWRWTSgpKTsKIAotICAgIGF1dG8ganNWYWx1
ZSA9IGlkYlZhbHVlRGF0YVRvSlNWYWx1ZShpbmRleEdsb2JhbEV4ZWMoKSwgdmFsdWUpOworICAg
IGF1dG8ganNWYWx1ZSA9IGlkYlZhbHVlRGF0YVRvSlNWYWx1ZShVbmlxdWVJREJEYXRhYmFzZTo6
ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwgdmFsdWUpOwogICAgIGlmIChqc1ZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTMxOSw3ICsyOTksNyBA
QCBJREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChj
b25zdCBJREJLZXlEYXRhJiBrZXksIGNvbgogCiAgICAgZm9yIChhdXRvKiBpbmRleCA6IG1faW5k
ZXhlc0J5TmFtZS52YWx1ZXMoKSkgewogICAgICAgICBJbmRleEtleSBpbmRleEtleTsKLSAgICAg
ICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKGluZGV4R2xvYmFsRXhlYygpLCBpbmRleC0+aW5m
bygpLCBqc1ZhbHVlLCBpbmRleEtleSk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1
ZShVbmlxdWVJREJEYXRhYmFzZTo6ZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwgaW5kZXgtPmlu
Zm8oKSwganNWYWx1ZSwgaW5kZXhLZXkpOwogCiAgICAgICAgIGlmIChpbmRleEtleS5pc051bGwo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzQwLDIxICszMjAsMjAgQEAgSURCRXJyb3Ig
TWVtb3J5T2JqZWN0U3RvcmU6OnVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoY29uc3QgSURCS2V5
RGF0YSYga2V5LCBjb24KICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLQogSURCRXJyb3IgTWVtb3J5
T2JqZWN0U3RvcmU6OnBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4
JiBpbmRleCkKIHsKICAgICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoaW5kZXhWTSgpKTsKKyAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKFVuaXF1ZUlEQkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZFZNKCkpOwogCiAgICAg
Zm9yIChhdXRvIGl0ZXJhdG9yIDogKm1fa2V5VmFsdWVTdG9yZSkgewotICAgICAgICBhdXRvIGpz
VmFsdWUgPSBpZGJWYWx1ZURhdGFUb0pTVmFsdWUoaW5kZXhHbG9iYWxFeGVjKCksIGl0ZXJhdG9y
LnZhbHVlKTsKKyAgICAgICAgYXV0byBqc1ZhbHVlID0gaWRiVmFsdWVEYXRhVG9KU1ZhbHVlKFVu
aXF1ZUlEQkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpLCBpdGVyYXRvci52YWx1
ZSk7CiAgICAgICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OwotICAgICAgICBnZW5l
cmF0ZUluZGV4S2V5Rm9yVmFsdWUoaW5kZXhHbG9iYWxFeGVjKCksIGluZGV4LmluZm8oKSwganNW
YWx1ZSwgaW5kZXhLZXkpOworICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoVW5pcXVl
SURCRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFkRXhlY1N0YXRlKCksIGluZGV4LmluZm8oKSwganNW
YWx1ZSwgaW5kZXhLZXkpOwogCiAgICAgICAgIGlmIChpbmRleEtleS5pc051bGwoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggOGY5MWQ3My4u
MjBhOWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0zNiw4ICszNiwxMSBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2Vy
dmVyIHsKICAgICAKQEAgLTQ3OSw3ICs0ODIsMjggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkK
ICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSUQsIHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCByZXF1ZXN0RGF0YS5vYmplY3RTdG9yZUlk
ZW50aWZpZXIoKSwga2V5RGF0YSwgdmFsdWVEYXRhLCBvdmVyd3JpdGVNb2RlKSk7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEsIEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCitWTSYgVW5pcXVlSURCRGF0
YWJhc2U6OmRhdGFiYXNlVGhyZWFkVk0oKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8Vk0+PiB2bSA9IFZNOjpjcmVhdGUo
KTsKKyAgICByZXR1cm4gKnZtLmdldCgpOworfQorCitFeGVjU3RhdGUmIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkYXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cm9uZzxKU0dsb2JhbE9iamVjdD4+
IGdsb2JhbE9iamVjdDsKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAg
IGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LmdldCgpLnNldChkYXRh
YmFzZVRocmVhZFZNKCksIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoZGF0YWJhc2VUaHJlYWRWTSgp
LCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGRhdGFiYXNlVGhyZWFkVk0oKSwganNO
dWxsKCkpKSk7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBSRUxF
QVNFX0FTU0VSVChnbG9iYWxPYmplY3QuZ2V0KCktPmdsb2JhbEV4ZWMoKSk7CisgICAgcmV0dXJu
ICpnbG9iYWxPYmplY3QuZ2V0KCktPmdsb2JhbEV4ZWMoKTsKK30KKwordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3Qg
VGhyZWFkU2FmZURhdGFCdWZmZXImIG9yaWdpbmFsUmVjb3JkVmFsdWUsIEluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6
OnBlcmZvcm1QdXRPckFkZCIpOwpAQCAtNDk3LDYgKzUyMSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQlJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBib29sIHVzZWRLZXlJc0dlbmVy
YXRlZCA9IGZhbHNlOwogICAgIGlmIChvYmplY3RTdG9yZUluZm8tPmF1dG9JbmNyZW1lbnQoKSAm
JiAha2V5RGF0YS5pc1ZhbGlkKCkpIHsKICAgICAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAg
ICAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKQEAgLTUwNiw2
ICs1MzEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICB1c2VkS2V5LnNldE51bWJlclZhbHVlKGtleU51bWJlcik7CisgICAgICAgIHVzZWRL
ZXlJc0dlbmVyYXRlZCA9IHRydWU7CiAgICAgfSBlbHNlCiAgICAgICAgIHVzZWRLZXkgPSBrZXlE
YXRhOwogCkBAIC01MjEsNiArNTQ3LDMzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICAvLyAzLjQuMS4yIE9iamVjdCBTdG9yZSBTdG9yYWdlIE9wZXJh
dGlvbgorICAgIC8vIElmIE9iamVjdFN0b3JlIGhhcyBhIGtleSBwYXRoIGFuZCB0aGUga2V5IGlz
IGF1dG9nZW5lcmF0ZWQsIHRoZW4gaW5qZWN0IHRoZSBrZXkgaW50byB0aGUgdmFsdWUKKyAgICAv
LyB1c2luZyBzdGVwcyB0byBhc3NpZ24gYSBrZXkgdG8gYSB2YWx1ZSB1c2luZyBhIGtleSBwYXRo
LgorICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIGluamVjdGVkUmVjb3JkVmFsdWU7CisgICAgaWYg
KHVzZWRLZXlJc0dlbmVyYXRlZCAmJiAhb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkuaXNOdWxs
KCkpIHsKKyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihkYXRhYmFzZVRocmVhZFZNKCkpOwor
CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlRGF0YVRvSlNWYWx1
ZShkYXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpLCBvcmlnaW5hbFJlY29yZFZhbHVlKTsKKyAgICAg
ICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIG1fc2VydmVyLnBvc3RE
YXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIElEQkVycm9y
KElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gZGVzZXJpYWxpemUgcmVjb3JkIHZhbHVlIGZvciByZWNvcmQga2V5IGluamVjdGlvbiIpKSwg
dXNlZEtleSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKSwg
dXNlZEtleSwgdmFsdWUsIG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpKSkgeworICAgICAgICAg
ICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRl
bnRpZmllciwgSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6Q29uc3RyYWludEVycm9yLCBBU0NJ
SUxpdGVyYWwoIlVuYWJsZSB0byBpbmplY3QgcmVjb3JkIGtleSBpbnRvIHJlY29yZCB2YWx1ZSIp
KSwgdXNlZEtleSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoJmRhdGFiYXNlVGhyZWFkRXhlY1N0YXRlKCksIHZhbHVlLCBu
dWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgaWYgKGRhdGFiYXNlVGhyZWFkRXhlY1N0YXRlKCku
aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tS
ZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIElEQkVycm9yKElEQkV4Y2VwdGlv
bkNvZGU6OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXpl
IHJlY29yZCB2YWx1ZSBhZnRlciBpbmplY3RpbmcgcmVjb3JkIGtleSIpKSwgdXNlZEtleSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW5qZWN0ZWRSZWNvcmRW
YWx1ZSA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjb3B5VmVjdG9yKHNlcmlhbGl6ZWRWYWx1ZS0+
ZGF0YSgpKTsKKyAgICB9CisKICAgICAvLyAzLjQuMSBPYmplY3QgU3RvcmUgU3RvcmFnZSBPcGVy
YXRpb24KICAgICAvLyAuLi5JZiBhIHJlY29yZCBhbHJlYWR5IGV4aXN0cyBpbiBzdG9yZSAuLi4K
ICAgICAvLyB0aGVuIHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gc3RvcmUgdXNpbmcgdGhlIHN0ZXBz
IGZvciBkZWxldGluZyByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlLi4uCkBAIC01MzEsNyAr
NTg0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSwgdmFsdWVEYXRhKTsKKyAgICBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXksIGluamVjdGVkUmVjb3JkVmFsdWUuZGF0YSgp
ID8gaW5qZWN0ZWRSZWNvcmRWYWx1ZSA6IG9yaWdpbmFsUmVjb3JkVmFsdWUpOwogCiAgICAgbV9z
ZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmll
ciwgZXJyb3IsIHVzZWRLZXkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggOTU1NzY0
OC4uYzQxZDFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5o
IgorI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUluZm8uaCIKICNpbmNsdWRlICJJ
REJHZXRSZXN1bHQuaCIKQEAgLTk3LDYgKzk4LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxl
RGVsZXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAg
ICAgYm9vbCBkZWxldGVQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZWxldGVQZW5kaW5nOyB9
CiAKKyAgICBzdGF0aWMgSlNDOjpWTSYgZGF0YWJhc2VUaHJlYWRWTSgpOworICAgIHN0YXRpYyBK
U0M6OkV4ZWNTdGF0ZSYgZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKTsKKwogcHJpdmF0ZToKICAg
ICBVbmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAKaW5kZXggNzEzNDI4Ni4uODA1YWRjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTExNSw3ICsx
MTUsNyBAQCBKU1ZhbHVlIGlkYktleURhdGFUb0pTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMs
IGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIH0KIAotc3RhdGljIEpTVmFsdWUgaWRiS2V5
VG9KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSURCS2V5KiBrZXkpCitzdGF0aWMgSlNWYWx1ZSBpZGJLZXlUb0pTVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJREJLZXkqIGtleSkKIHsKICAg
ICBpZiAoIWtleSB8fCAhZXhlYykgewogICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSB1bmRlZmlu
ZWQsIG5vdCBudWxsLgpAQCAtMjk0LDcgKzI5NCwzNSBAQCBib29sIGluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJL
ZQogICAgIGlmIChwYXJlbnQuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKCFzZXQoZXhlYywgcGFyZW50LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCBpZGJL
ZXlUb0pTVmFsdWUoZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSwga2V5LmdldCgpKSkpCisgICAgaWYgKCFzZXQoZXhlYywgcGFyZW50
LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCBpZGJLZXlUb0pTVmFsdWUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBrZXkuZ2V0KCkpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVl
KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBKU0M6OkpT
VmFsdWUgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCit7CisgICAgTE9HKEluZGV4
ZWREQiwgImluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSIpOworCisgICAgQVNTRVJUKGtleVBh
dGgudHlwZSgpID09IEluZGV4ZWREQjo6S2V5UGF0aFR5cGU6OlN0cmluZyk7CisKKyAgICBWZWN0
b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CisgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJy
b3I7CisgICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGguc3RyaW5nKCksIGtleVBhdGhFbGVtZW50
cywgZXJyb3IpOworICAgIEFTU0VSVChlcnJvciA9PSBJREJLZXlQYXRoUGFyc2VFcnJvcjo6Tm9u
ZSk7CisKKyAgICBpZiAoa2V5UGF0aEVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgSlNWYWx1ZSBwYXJlbnQgPSBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCgm
ZXhlYywgdmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEp
OworICAgIGlmIChwYXJlbnQuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYXV0byBrZXkgPSBrZXlEYXRhLm1heWJlQ3JlYXRlSURCS2V5KCk7CisgICAgaWYgKCFr
ZXkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghc2V0KCZleGVjLCBwYXJlbnQs
IGtleVBhdGhFbGVtZW50cy5sYXN0KCksIGlkYktleVRvSlNWYWx1ZSgmZXhlYywgZXhlYy5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGtleS5nZXQoKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQwOSwyMSArNDM3LDI2IEBAIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsCiAgICAgaWYgKCFleGVjU3RhdGUpCiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSgpOwogCisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWNT
dGF0ZS0+dm0oKSwgZGVzZXJpYWxpemVJREJWYWx1ZURhdGFUb0pTVmFsdWUoKmV4ZWNTdGF0ZSwg
dmFsdWVEYXRhKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlRGF0YVRv
SlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IHZhbHVlRGF0YSkKK3sKICAgICBpZiAoIXZhbHVlRGF0YS5kYXRhKCkpCi0gICAgICAgIHJldHVy
biBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShleGVjU3RhdGUtPnZtKCksIGpzVW5kZWZpbmVkKCkp
OworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSA9ICp2YWx1ZURhdGEuZGF0YSgpOwogICAgIEpTVmFsdWUgcmVzdWx0OwogICAg
IGlmIChkYXRhLnNpemUoKSkgewogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJl
Qnl0ZXMoZGF0YSk7CiAKLSAgICAgICAgZXhlY1N0YXRlLT52bSgpLmFwaUxvY2soKS5sb2NrKCk7
Ci0gICAgICAgIHJlc3VsdCA9IHNlcmlhbGl6ZWRWYWx1ZS0+ZGVzZXJpYWxpemUoZXhlY1N0YXRl
LCBleGVjU3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMCwgTm9uVGhyb3dpbmcpOwotICAg
ICAgICBleGVjU3RhdGUtPnZtKCkuYXBpTG9jaygpLnVubG9jaygpOworICAgICAgICBleGVjLnZt
KCkuYXBpTG9jaygpLmxvY2soKTsKKyAgICAgICAgcmVzdWx0ID0gc2VyaWFsaXplZFZhbHVlLT5k
ZXNlcmlhbGl6ZSgmZXhlYywgZXhlYy5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIE5vblRocm93
aW5nKTsKKyAgICAgICAgZXhlYy52bSgpLmFwaUxvY2soKS51bmxvY2soKTsKICAgICB9IGVsc2UK
ICAgICAgICAgcmVzdWx0ID0ganNOdWxsKCk7CiAKLSAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoZXhlY1N0YXRlLT52bSgpLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9N
UmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBC
dWZmZXIsIGJvb2wga2V5SXNEZWZpbmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDViYzQ0NDIuLjE5M2I5MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgY2xhc3MgSURCS2V5RGF0YTsKIElEQktleVBhdGggaWRiS2V5UGF0aEZyb21W
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAKIGJvb2wgaW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7Citib29sIGluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IElEQktleURhdGEmLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IElEQktleVBhdGgmKTsKIAogUmVmUHRyPElEQktleT4gY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogUmVmUHRyPElEQktl
eT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7
CkBAIC02MSw2ICs2Miw4IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURC
VmFsdWVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBUCiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSosIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBrZXlJc0RlZmluZWQpOwogV0VCQ09SRV9FWFBP
UlQgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGJvb2wga2V5SXNEZWZpbmVkKTsK
IAorSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVEYXRhVG9KU1ZhbHVlKEpTQzo6RXhl
Y1N0YXRlJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSk7CisKIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleVRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwg
UGFzc1JlZlB0cjxJREJLZXk+KTsKIFJlZlB0cjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXko
RE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgSlNDOjpKU1ZhbHVlJik7CiBSZWZQdHI8SURCS2V5PiBz
Y3JpcHRWYWx1ZVRvSURCS2V5KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJik7
Cg==
</data>
<flag name="review"
          id="291239"
          type_id="1"
          status="+"
          setter="aestes"
    />
    <flag name="commit-queue"
          id="291240"
          type_id="3"
          status="-"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>