<?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>141520</bug_id>
          
          <creation_ts>2015-02-12 10:38:10 -0800</creation_ts>
          <short_desc>WebKit persistent cache uses a lot of threads</short_desc>
          <delta_ts>2015-02-12 13:32:13 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1068663</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-12 10:38:10 -0800</bug_when>
    <thetext>Parallel retrieves are limited but stores are not. We may end up with lots of dispatch queue threads if they don&apos;t complete fast enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068664</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-12 10:38:32 -0800</bug_when>
    <thetext>rdar://problem/19803304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068702</commentid>
    <comment_count>2</comment_count>
      <attachid>246463</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-12 12:25:07 -0800</bug_when>
    <thetext>Created attachment 246463
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068728</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-12 13:32:13 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/180008</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246463</attachid>
            <date>2015-02-12 12:25:07 -0800</date>
            <delta_ts>2015-02-12 12:41:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>disk-cache-store-limit-2.patch</filename>
            <type>text/plain</type>
            <size>18652</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDAwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE1LTAyLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgcGVyc2lzdGVudCBj
YWNoZSB1c2VzIGEgbG90IG9mIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcmFsbGVsIHJldHJpZXZlcyBhcmUgbGltaXRlZCBidXQgc3Rv
cmVzIGFyZSBub3QuIFdlIG1heSBlbmQgdXAgd2l0aCBsb3RzIG9mIGJhY2tyb3VuZCBpbworICAg
ICAgICBkaXNwYXRjaCBxdWV1ZSB0aHJlYWRzIGlmIHRoZXkgZG9uJ3QgY29tcGxldGUgZmFzdCBl
bm91Z2guCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHBlbmRpbmcgc3RhdGUgZm9yIHdyaXRl
IG9wZXJhdGlvbnMgc2ltaWxhciB0byB3aGF0IHJldHJpZXZlcyBhbHJlYWR5IGhhdmUKKyAgICAg
ICAgYW5kIGxpbWl0cyB0byBudW1iZXIgb2YgYWN0aXZlIG9wZXJhdGlvbnMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisKKyAgICAgICAg
ICAgIENvbWJpbmUgU3RvcmVPcGVyYXRpb24gYW5kIFVwZGF0ZU9wZXJhdGlvbiBhbmQgcmVuYW1l
IHRvIFdyaXRlT3BlcmF0aW9uLgorICAgICAgICAgICAgUmVuYW1lIFJldHJpZXZlT3BlcmF0aW9u
IHRvIFJlYWRPcGVyYXRpb24uCisgICAgICAgICAgICBUaGUgaWRlYSBpcyB0byBlbXBoYXNpemUg
dGhhdCB0aGVzZSBhcmUgZGlzayBvcGVyYXRpb25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGVTdG9yYWdlOjpkaXNwYXRjaFJlYWRPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGVTdG9yYWdlOjpkaXNwYXRjaFBlbmRpbmdSZWFkT3BlcmF0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnJldHJpZXZlRnJvbU1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZVN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGVTdG9y
YWdlOjp1cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGVTdG9yYWdlOjpkaXNw
YXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMpOgorCisgICAgICAgICAgICBPbmx5IGFsbG93IDMg
cGFyYWxsZWwgd3JpdGVzLgorCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZVN0b3JhZ2U6
OmRpc3BhdGNoRnVsbFdyaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlU3RvcmFnZTo6ZGlzcGF0Y2hIZWFkZXJXcml0ZU9wZXJhdGlvbik6CisKKyAgICAgICAgICAg
IE1vcmUgaW5mb3JtYXRpdmUgbmFtZXMuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
U3RvcmFnZTo6ZGlzcGF0Y2hSZXRyaWV2ZU9wZXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoUGVuZGluZ1JldHJpZXZlT3BlcmF0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnJldHJpZXZlQWN0aXZlKTogRGVsZXRl
ZC4KKwogMjAxNS0wMi0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIEFQSSB0byBhbGxvdyBvdmVycmlkaW5nIHRoZSBkZWZh
dWx0IGNvbG9yIGNob29zZXIgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJ
KHJldmlzaW9uIDE3OTgyMykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgPHd0Zi9CbG9vbUZpbHRlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE2Mywy
NSArMTY0LDIyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbW92ZUVudHJ5KGNvbnN0IE5ldHdv
cmtDYWNoZUtleSYpOwogCi0gICAgc3RydWN0IFJldHJpZXZlT3BlcmF0aW9uIHsKKyAgICBzdHJ1
Y3QgUmVhZE9wZXJhdGlvbiB7CiAgICAgICAgIE5ldHdvcmtDYWNoZUtleSBrZXk7CiAgICAgICAg
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKLSAg
ICB2b2lkIGRpc3BhdGNoUmV0cmlldmVPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJl
dHJpZXZlT3BlcmF0aW9uPik7Ci0gICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdSZXRyaWV2ZU9wZXJh
dGlvbnMoKTsKKyAgICB2b2lkIGRpc3BhdGNoUmVhZE9wZXJhdGlvbihjb25zdCBSZWFkT3BlcmF0
aW9uJik7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdSZWFkT3BlcmF0aW9ucygpOwogCi0gICAg
c3RydWN0IFN0b3JlT3BlcmF0aW9uIHsKKyAgICBzdHJ1Y3QgV3JpdGVPcGVyYXRpb24gewogICAg
ICAgICBOZXR3b3JrQ2FjaGVLZXkga2V5OwogICAgICAgICBFbnRyeSBlbnRyeTsKKyAgICAgICAg
T3B0aW9uYWw8RW50cnk+IGV4aXN0aW5nRW50cnk7CiAgICAgICAgIFN0b3JlQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKLQotICAgIHN0cnVjdCBVcGRhdGVPcGVy
YXRpb24gewotICAgICAgICBOZXR3b3JrQ2FjaGVLZXkga2V5OwotICAgICAgICBFbnRyeSBlbnRy
eTsKLSAgICAgICAgRW50cnkgZXhpc3RpbmdFbnRyeTsKLSAgICAgICAgU3RvcmVDb21wbGV0aW9u
SGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcjsKLSAgICB9OworICAgIHZvaWQgZGlzcGF0Y2hGdWxs
V3JpdGVPcGVyYXRpb24oY29uc3QgV3JpdGVPcGVyYXRpb24mKTsKKyAgICB2b2lkIGRpc3BhdGNo
SGVhZGVyV3JpdGVPcGVyYXRpb24oY29uc3QgV3JpdGVPcGVyYXRpb24mKTsKKyAgICB2b2lkIGRp
c3BhdGNoUGVuZGluZ1dyaXRlT3BlcmF0aW9ucygpOwogCiAgICAgY29uc3QgU3RyaW5nIG1fYmFz
ZURpcmVjdG9yeVBhdGg7CiAgICAgY29uc3QgU3RyaW5nIG1fZGlyZWN0b3J5UGF0aDsKQEAgLTE5
MywxMSArMTkxLDExIEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaHJpbmtJ
blByb2dyZXNzIHsgZmFsc2UgfTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4aW11bVJldHJp
ZXZlUHJpb3JpdHkgPSA0OwotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZXRyaWV2
ZU9wZXJhdGlvbj4+IG1fcGVuZGluZ1JldHJpZXZlT3BlcmF0aW9uc0J5UHJpb3JpdHlbbWF4aW11
bVJldHJpZXZlUHJpb3JpdHkgKyAxXTsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
UmVhZE9wZXJhdGlvbj4+IG1fcGVuZGluZ1JlYWRPcGVyYXRpb25zQnlQcmlvcml0eVttYXhpbXVt
UmV0cmlldmVQcmlvcml0eSArIDFdOworICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGNvbnN0
IFJlYWRPcGVyYXRpb24+PiBtX2FjdGl2ZVJlYWRPcGVyYXRpb25zOwogCi0gICAgSGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmV0cmlldmVPcGVyYXRpb24+PiBtX2FjdGl2ZVJldHJpZXZl
T3BlcmF0aW9uczsKLSAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBTdG9yZU9wZXJh
dGlvbj4+IG1fYWN0aXZlU3RvcmVPcGVyYXRpb25zOwotICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPGNvbnN0IFVwZGF0ZU9wZXJhdGlvbj4+IG1fYWN0aXZlVXBkYXRlT3BlcmF0aW9uczsKKyAg
ICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgV3JpdGVPcGVyYXRpb24+PiBtX3BlbmRpbmdX
cml0ZU9wZXJhdGlvbnM7CisgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgV3JpdGVP
cGVyYXRpb24+PiBtX2FjdGl2ZVdyaXRlT3BlcmF0aW9uczsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIG11dGFibGUgRGlzcGF0Y2hQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9pb1F1ZXVlOwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2VDb2NvYS5tbQkocmV2aXNpb24gMTc5ODIzKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNjYgKzMzOCw2NyBAQCB2b2lkIE5ldHdvcmtD
YWNoZVN0b3JhZ2U6OnJlbW92ZUVudHJ5KGNvCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nh
Y2hlU3RvcmFnZTo6ZGlzcGF0Y2hSZXRyaWV2ZU9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Y29u
c3QgUmV0cmlldmVPcGVyYXRpb24+IHJldHJpZXZlT3BlcmF0aW9uKQordm9pZCBOZXR3b3JrQ2Fj
aGVTdG9yYWdlOjpkaXNwYXRjaFJlYWRPcGVyYXRpb24oY29uc3QgUmVhZE9wZXJhdGlvbiYgcmVh
ZCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byYgcmV0cmll
dmUgPSAqcmV0cmlldmVPcGVyYXRpb247Ci0gICAgbV9hY3RpdmVSZXRyaWV2ZU9wZXJhdGlvbnMu
YWRkKFdURjo6bW92ZShyZXRyaWV2ZU9wZXJhdGlvbikpOworICAgIEFTU0VSVChtX2FjdGl2ZVJl
YWRPcGVyYXRpb25zLmNvbnRhaW5zKCZyZWFkKSk7CiAKICAgICBTdHJpbmdDYXB0dXJlIGNhY2hl
UGF0aENhcHR1cmUobV9kaXJlY3RvcnlQYXRoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2lvUXVl
dWUuZ2V0KCksIFt0aGlzLCAmcmV0cmlldmUsIGNhY2hlUGF0aENhcHR1cmVdIHsKKyAgICBkaXNw
YXRjaF9hc3luYyhtX2lvUXVldWUuZ2V0KCksIFt0aGlzLCAmcmVhZCwgY2FjaGVQYXRoQ2FwdHVy
ZV0gewogICAgICAgICBpbnQgZmQ7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IG9wZW5GaWxlRm9y
S2V5KHJldHJpZXZlLmtleSwgRmlsZU9wZW5UeXBlOjpSZWFkLCBjYWNoZVBhdGhDYXB0dXJlLnN0
cmluZygpLCBmZCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IG9wZW5GaWxlRm9yS2V5KHJlYWQu
a2V5LCBGaWxlT3BlblR5cGU6OlJlYWQsIGNhY2hlUGF0aENhcHR1cmUuc3RyaW5nKCksIGZkKTsK
IAogICAgICAgICBib29sIGRpZENhbGxDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNlOwotICAgICAg
ICBkaXNwYXRjaF9pb19yZWFkKGNoYW5uZWwuZ2V0KCksIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlzLCBmZCwgJnJl
dHJpZXZlLCBkaWRDYWxsQ29tcGxldGlvbkhhbmRsZXJdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0
YV90IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICBkaXNwYXRjaF9pb19y
ZWFkKGNoYW5uZWwuZ2V0KCksIDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCks
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlzLCBmZCwgJnJlYWQsIGRpZENhbGxDb21w
bGV0aW9uSGFuZGxlcl0oYm9vbCBkb25lLCBkaXNwYXRjaF9kYXRhX3QgZmlsZURhdGEsIGludCBl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZG9uZSkgewogICAgICAgICAgICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRW50cnkocmV0cmlldmUua2V5
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRW50cnkocmVhZC5rZXkpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKCFkaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHJpZXZlLmNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgICAgICAgICAgICAg
ICAgICByZWFkLmNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogCi0gICAgICAgICAgICAgICAg
QVNTRVJUKG1fYWN0aXZlUmV0cmlldmVPcGVyYXRpb25zLmNvbnRhaW5zKCZyZXRyaWV2ZSkpOwot
ICAgICAgICAgICAgICAgIG1fYWN0aXZlUmV0cmlldmVPcGVyYXRpb25zLnJlbW92ZSgmcmV0cmll
dmUpOwotICAgICAgICAgICAgICAgIGRpc3BhdGNoUGVuZGluZ1JldHJpZXZlT3BlcmF0aW9ucygp
OworICAgICAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZVJlYWRPcGVyYXRpb25zLmNvbnRhaW5z
KCZyZWFkKSk7CisgICAgICAgICAgICAgICAgbV9hY3RpdmVSZWFkT3BlcmF0aW9ucy5yZW1vdmUo
JnJlYWQpOworICAgICAgICAgICAgICAgIGRpc3BhdGNoUGVuZGluZ1JlYWRPcGVyYXRpb25zKCk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNT
RVJUKCFkaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIpOyAvLyBXZSBhcmUgcmVxdWVzdGluZyBtYXhp
bXVtIHNpemVkIGNodW5rIHNvIHdlIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkIG1vcmUgdGhhbiBv
bmNlIHdpdGggZGF0YS4KIAotICAgICAgICAgICAgYXV0byBlbnRyeSA9IGRlY29kZUVudHJ5KGZp
bGVEYXRhLCBmZCwgcmV0cmlldmUua2V5KTsKLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHJl
dHJpZXZlLmNvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShlbnRyeSkpOworICAgICAgICAgICAg
YXV0byBlbnRyeSA9IGRlY29kZUVudHJ5KGZpbGVEYXRhLCBmZCwgcmVhZC5rZXkpOworICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gcmVhZC5jb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoZW50
cnkpKTsKICAgICAgICAgICAgIGRpZENhbGxDb21wbGV0aW9uSGFuZGxlciA9IHRydWU7CiAgICAg
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgICAgcmVtb3ZlRW50cnkocmV0cmll
dmUua2V5KTsKKyAgICAgICAgICAgICAgICByZW1vdmVFbnRyeShyZWFkLmtleSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoUGVu
ZGluZ1JldHJpZXZlT3BlcmF0aW9ucygpCit2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3Bh
dGNoUGVuZGluZ1JlYWRPcGVyYXRpb25zKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgY29uc3QgaW50IG1heGltdW1BY3RpdmVSZXRyaWV2ZU9wZXJhdGlvbkNvdW50
ID0gNTsKKyAgICBjb25zdCBpbnQgbWF4aW11bUFjdGl2ZVJlYWRPcGVyYXRpb25Db3VudCA9IDU7
CiAKICAgICBmb3IgKGludCBwcmlvcml0eSA9IG1heGltdW1SZXRyaWV2ZVByaW9yaXR5OyBwcmlv
cml0eSA+PSAwOyAtLXByaW9yaXR5KSB7Ci0gICAgICAgIGlmIChtX2FjdGl2ZVJldHJpZXZlT3Bl
cmF0aW9ucy5zaXplKCkgPiBtYXhpbXVtQWN0aXZlUmV0cmlldmVPcGVyYXRpb25Db3VudCkgewor
ICAgICAgICBpZiAobV9hY3RpdmVSZWFkT3BlcmF0aW9ucy5zaXplKCkgPiBtYXhpbXVtQWN0aXZl
UmVhZE9wZXJhdGlvbkNvdW50KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFn
ZSwgIihOZXR3b3JrUHJvY2VzcykgbGltaXRpbmcgcGFyYWxsZWwgcmV0cmlldmVzIik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0byYgcGVuZGluZ1JldHJpZXZl
UXVldWUgPSBtX3BlbmRpbmdSZXRyaWV2ZU9wZXJhdGlvbnNCeVByaW9yaXR5W3ByaW9yaXR5XTsK
KyAgICAgICAgYXV0byYgcGVuZGluZ1JldHJpZXZlUXVldWUgPSBtX3BlbmRpbmdSZWFkT3BlcmF0
aW9uc0J5UHJpb3JpdHlbcHJpb3JpdHldOwogICAgICAgICBpZiAocGVuZGluZ1JldHJpZXZlUXVl
dWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRpc3BhdGNoUmV0
cmlldmVPcGVyYXRpb24ocGVuZGluZ1JldHJpZXZlUXVldWUudGFrZUZpcnN0KCkpOworICAgICAg
ICBhdXRvIHJlYWRPcGVyYXRpb24gPSBwZW5kaW5nUmV0cmlldmVRdWV1ZS50YWtlRmlyc3QoKTsK
KyAgICAgICAgYXV0byYgcmVhZCA9ICpyZWFkT3BlcmF0aW9uOworICAgICAgICBtX2FjdGl2ZVJl
YWRPcGVyYXRpb25zLmFkZChXVEY6Om1vdmUocmVhZE9wZXJhdGlvbikpOworICAgICAgICBkaXNw
YXRjaFJlYWRPcGVyYXRpb24ocmVhZCk7CiAgICAgfQogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVD4g
Ym9vbCByZXRyaWV2ZUFjdGl2ZShjb25zdCBUJiBvcGVyYXRpb25zLCBjb25zdCBOZXR3b3JrQ2Fj
aGVLZXkmIGtleSwgTmV0d29ya0NhY2hlU3RvcmFnZTo6UmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYgY29tcGxldGlvbkhhbmRsZXIpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZy
b21NZW1vcnkoY29uc3QgVCYgb3BlcmF0aW9ucywgY29uc3QgTmV0d29ya0NhY2hlS2V5JiBrZXks
IE5ldHdvcmtDYWNoZVN0b3JhZ2U6OlJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9ucykgewog
ICAgICAgICBpZiAob3BlcmF0aW9uLT5rZXkgPT0ga2V5KSB7Ci0gICAgICAgICAgICBMT0coTmV0
d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZm91bmQgc3RvcmUgb3BlcmF0aW9u
IGluIHByb2dyZXNzIik7CisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihO
ZXR3b3JrUHJvY2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7CiAgICAg
ICAgICAgICBhdXRvIGVudHJ5ID0gb3BlcmF0aW9uLT5lbnRyeTsKICAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtlbnRyeSwgY29tcGxldGlvbkhh
bmRsZXJdIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtDYWNoZVN0b3JhZ2U6OkVudHJ5PihlbnRyeSkpOwpAQCAtNDE3LDQ0ICs0MTgs
ODcgQEAgdm9pZCBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZShjb25zdAogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAv
LyBTZWUgaWYgd2UgaGF2ZSB0aGUgcmVzb3VyY2UgaW4gbWVtb3J5LgotICAgIGlmIChyZXRyaWV2
ZUFjdGl2ZShtX2FjdGl2ZVN0b3JlT3BlcmF0aW9ucywga2V5LCBjb21wbGV0aW9uSGFuZGxlcikp
CisKKyAgICBpZiAocmV0cmlldmVGcm9tTWVtb3J5KG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucywg
a2V5LCBjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAocmV0cmll
dmVBY3RpdmUobV9hY3RpdmVVcGRhdGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25IYW5kbGVy
KSkKKyAgICBpZiAocmV0cmlldmVGcm9tTWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBr
ZXksIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRmV0Y2gg
ZnJvbSBkaXNrLgotICAgIG1fcGVuZGluZ1JldHJpZXZlT3BlcmF0aW9uc0J5UHJpb3JpdHlbcHJp
b3JpdHldLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJldHJpZXZlT3BlcmF0aW9uPihSZXRyaWV2
ZU9wZXJhdGlvbiB7IGtleSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KSk7Ci0gICAg
ZGlzcGF0Y2hQZW5kaW5nUmV0cmlldmVPcGVyYXRpb25zKCk7CisgICAgbV9wZW5kaW5nUmVhZE9w
ZXJhdGlvbnNCeVByaW9yaXR5W3ByaW9yaXR5XS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZWFk
T3BlcmF0aW9uPihSZWFkT3BlcmF0aW9uIHsga2V5LCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpIH0pKTsKKyAgICBkaXNwYXRjaFBlbmRpbmdSZWFkT3BlcmF0aW9ucygpOwogfQogCiB2b2lk
IE5ldHdvcmtDYWNoZVN0b3JhZ2U6OnN0b3JlKGNvbnN0IE5ldHdvcmtDYWNoZUtleSYga2V5LCBj
b25zdCBFbnRyeSYgZW50cnksIFN0b3JlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCisgICAgYXV0byB3cml0
ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KFdyaXRlT3BlcmF0
aW9uIHsga2V5LCBlbnRyeSwgeyB9LCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwor
ICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKHdyaXRlT3BlcmF0
aW9uKSk7CisKKyAgICAvLyBBZGQga2V5IHRvIHRoZSBmaWx0ZXIgYWxyZWFkeSBoZXJlIGFzIHdl
IGRvIGxvb2t1cHMgZnJvbSB0aGUgcGVuZGluZyBvcGVyYXRpb25zIHRvby4KICAgICBtX2NvbnRl
bnRzRmlsdGVyLmFkZChrZXkuc2hvcnRIYXNoKCkpOwogCi0gICAgYXV0byBzdG9yZU9wZXJhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmVPcGVyYXRpb24+KFN0b3JlT3BlcmF0aW9uIHsga2V5
LCBlbnRyeSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKLSAgICBhdXRvJiBzdG9y
ZSA9ICpzdG9yZU9wZXJhdGlvbjsKLSAgICBtX2FjdGl2ZVN0b3JlT3BlcmF0aW9ucy5hZGQoV1RG
Ojptb3ZlKHN0b3JlT3BlcmF0aW9uKSk7CisgICAgZGlzcGF0Y2hQZW5kaW5nV3JpdGVPcGVyYXRp
b25zKCk7Cit9CisKK3ZvaWQgTmV0d29ya0NhY2hlU3RvcmFnZTo6dXBkYXRlKGNvbnN0IE5ldHdv
cmtDYWNoZUtleSYga2V5LCBjb25zdCBFbnRyeSYgdXBkYXRlRW50cnksIGNvbnN0IEVudHJ5JiBl
eGlzdGluZ0VudHJ5LCBTdG9yZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGF1dG8gd3JpdGVPcGVy
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPihXcml0ZU9wZXJhdGlvbiB7
IGtleSwgdXBkYXRlRW50cnksIGV4aXN0aW5nRW50cnksIFdURjo6bW92ZShjb21wbGV0aW9uSGFu
ZGxlcikgfSk7CisgICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmFwcGVuZChXVEY6Om1vdmUo
d3JpdGVPcGVyYXRpb24pKTsKKworICAgIGRpc3BhdGNoUGVuZGluZ1dyaXRlT3BlcmF0aW9ucygp
OworfQorCit2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoUGVuZGluZ1dyaXRlT3Bl
cmF0aW9ucygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGNvbnN0
IGludCBtYXhpbXVtQWN0aXZlV3JpdGVPcGVyYXRpb25Db3VudCB7IDMgfTsKKworICAgIHdoaWxl
ICghbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9h
Y3RpdmVXcml0ZU9wZXJhdGlvbnMuc2l6ZSgpID49IG1heGltdW1BY3RpdmVXcml0ZU9wZXJhdGlv
bkNvdW50KSB7CisgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3Jr
UHJvY2VzcykgbGltaXRpbmcgcGFyYWxsZWwgd3JpdGVzIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IG1fcGVuZGluZ1dyaXRl
T3BlcmF0aW9ucy50YWtlRmlyc3QoKTsKKyAgICAgICAgYXV0byYgd3JpdGUgPSAqd3JpdGVPcGVy
YXRpb247CisgICAgICAgIG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLmFkZChXVEY6Om1vdmUod3Jp
dGVPcGVyYXRpb24pKTsKKworICAgICAgICBpZiAod3JpdGUuZXhpc3RpbmdFbnRyeSAmJiBtX2Nv
bnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgpKSkgeworICAgICAg
ICAgICAgZGlzcGF0Y2hIZWFkZXJXcml0ZU9wZXJhdGlvbih3cml0ZSk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlvbih3
cml0ZSk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoRnVs
bFdyaXRlT3BlcmF0aW9uKGNvbnN0IFdyaXRlT3BlcmF0aW9uJiB3cml0ZSkKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVChtX2FjdGl2ZVdyaXRlT3BlcmF0aW9u
cy5jb250YWlucygmd3JpdGUpKTsKKworICAgIGlmICghbV9jb250ZW50c0ZpbHRlci5tYXlDb250
YWluKHdyaXRlLmtleS5zaG9ydEhhc2goKSkpCisgICAgICAgIG1fY29udGVudHNGaWx0ZXIuYWRk
KHdyaXRlLmtleS5zaG9ydEhhc2goKSk7CiAKICAgICBTdHJpbmdDYXB0dXJlIGNhY2hlUGF0aENh
cHR1cmUobV9kaXJlY3RvcnlQYXRoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhtX2JhY2tncm91bmRJ
T1F1ZXVlLmdldCgpLCBbdGhpcywgJnN0b3JlLCBjYWNoZVBhdGhDYXB0dXJlXSB7Ci0gICAgICAg
IGF1dG8gZW5jb2RlZEhlYWRlciA9IGVuY29kZUVudHJ5SGVhZGVyKHN0b3JlLmtleSwgc3RvcmUu
ZW50cnkpOwotICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hf
ZGF0YV9jcmVhdGVfY29uY2F0KGVuY29kZWRIZWFkZXIuZ2V0KCksIHN0b3JlLmVudHJ5LmJvZHku
ZGlzcGF0Y2hEYXRhKCkpKTsKKyAgICBkaXNwYXRjaF9hc3luYyhtX2JhY2tncm91bmRJT1F1ZXVl
LmdldCgpLCBbdGhpcywgJndyaXRlLCBjYWNoZVBhdGhDYXB0dXJlXSB7CisgICAgICAgIGF1dG8g
ZW5jb2RlZEhlYWRlciA9IGVuY29kZUVudHJ5SGVhZGVyKHdyaXRlLmtleSwgd3JpdGUuZW50cnkp
OworICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0YV9j
cmVhdGVfY29uY2F0KGVuY29kZWRIZWFkZXIuZ2V0KCksIHdyaXRlLmVudHJ5LmJvZHkuZGlzcGF0
Y2hEYXRhKCkpKTsKIAogICAgICAgICBzaXplX3QgYm9keU9mZnNldCA9IGRpc3BhdGNoX2RhdGFf
Z2V0X3NpemUoZW5jb2RlZEhlYWRlci5nZXQoKSk7CiAKICAgICAgICAgaW50IGZkOwotICAgICAg
ICBhdXRvIGNoYW5uZWwgPSBvcGVuRmlsZUZvcktleShzdG9yZS5rZXksIEZpbGVPcGVuVHlwZTo6
Q3JlYXRlLCBjYWNoZVBhdGhDYXB0dXJlLnN0cmluZygpLCBmZCk7Ci0gICAgICAgIGRpc3BhdGNo
X2lvX3dyaXRlKGNoYW5uZWwuZ2V0KCksIDAsIHdyaXRlRGF0YS5nZXQoKSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3RoaXMsICZzdG9yZSwgZmQsIGJvZHlPZmZzZXRdKGJvb2wgZG9uZSwg
ZGlzcGF0Y2hfZGF0YV90LCBpbnQgZXJyb3IpIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gb3Bl
bkZpbGVGb3JLZXkod3JpdGUua2V5LCBGaWxlT3BlblR5cGU6OkNyZWF0ZSwgY2FjaGVQYXRoQ2Fw
dHVyZS5zdHJpbmcoKSwgZmQpOworICAgICAgICBkaXNwYXRjaF9pb193cml0ZShjaGFubmVsLmdl
dCgpLCAwLCB3cml0ZURhdGEuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlz
LCAmd3JpdGUsIGZkLCBib2R5T2Zmc2V0XShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCwgaW50
IGVycm9yKSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGRvbmUsIGRvbmUpOwogICAgICAg
ICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHdyaXRlIGNv
bXBsZXRlIGVycm9yPSVkIiwgZXJyb3IpOwogICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fY29udGVudHNGaWx0ZXIubWF5Q29udGFpbihzdG9yZS5rZXkuc2hv
cnRIYXNoKCkpKQotICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRzRmlsdGVyLnJlbW92ZShz
dG9yZS5rZXkuc2hvcnRIYXNoKCkpOworICAgICAgICAgICAgICAgIGlmIChtX2NvbnRlbnRzRmls
dGVyLm1heUNvbnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgbV9jb250ZW50c0ZpbHRlci5yZW1vdmUod3JpdGUua2V5LnNob3J0SGFzaCgpKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IHN0b3JlLmVudHJ5LmJvZHku
c2l6ZSgpOworICAgICAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gd3JpdGUuZW50cnkuYm9keS5z
aXplKCk7CiAgICAgICAgICAgICBzaXplX3QgdG90YWxTaXplID0gYm9keU9mZnNldCArIGJvZHlT
aXplOwogCiAgICAgICAgICAgICBtX2FwcHJveGltYXRlU2l6ZSArPSB0b3RhbFNpemU7CkBAIC00
NjMsNjAgKzUwNyw1MyBAQCB2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OnN0b3JlKGNvbnN0IE5l
CiAgICAgICAgICAgICBhdXRvIGJvZHlNYXAgPSBzaG91bGRNYXBCb2R5ID8gbWFwRmlsZShmZCwg
Ym9keU9mZnNldCwgYm9keVNpemUpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgRGF0YSBib2R5
RGF0YShib2R5TWFwLCBEYXRhOjpCYWNraW5nOjpNYXApOwotICAgICAgICAgICAgc3RvcmUuY29t
cGxldGlvbkhhbmRsZXIoIWVycm9yLCBib2R5RGF0YSk7CisgICAgICAgICAgICB3cml0ZS5jb21w
bGV0aW9uSGFuZGxlcighZXJyb3IsIGJvZHlEYXRhKTsKIAotICAgICAgICAgICAgbV9hY3RpdmVT
dG9yZU9wZXJhdGlvbnMucmVtb3ZlKCZzdG9yZSk7CisgICAgICAgICAgICBBU1NFUlQobV9hY3Rp
dmVXcml0ZU9wZXJhdGlvbnMuY29udGFpbnMoJndyaXRlKSk7CisgICAgICAgICAgICBtX2FjdGl2
ZVdyaXRlT3BlcmF0aW9ucy5yZW1vdmUoJndyaXRlKTsKKyAgICAgICAgICAgIGRpc3BhdGNoUGVu
ZGluZ1dyaXRlT3BlcmF0aW9ucygpOwogICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIHNocmlu
a0lmTmVlZGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0NhY2hlU3RvcmFnZTo6dXBkYXRlKGNvbnN0
IE5ldHdvcmtDYWNoZUtleSYga2V5LCBjb25zdCBFbnRyeSYgdXBkYXRlRW50cnksIGNvbnN0IEVu
dHJ5JiBleGlzdGluZ0VudHJ5LCBTdG9yZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoSGVhZGVyV3JpdGVPcGVy
YXRpb24oY29uc3QgV3JpdGVPcGVyYXRpb24mIHdyaXRlKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0KLSAgICBpZiAoIW1fY29udGVudHNGaWx0ZXIubWF5Q29udGFpbihrZXku
c2hvcnRIYXNoKCkpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdv
cmtQcm9jZXNzKSBleGlzdGluZyBlbnRyeSBub3QgZm91bmQsIHN0b3JpbmcgZnVsbCBlbnRyeSIp
OwotICAgICAgICBzdG9yZShrZXksIHVwZGF0ZUVudHJ5LCBXVEY6Om1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gdXBkYXRlT3BlcmF0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVPcGVyYXRpb24+KFVwZGF0ZU9wZXJhdGlvbiB7
IGtleSwgdXBkYXRlRW50cnksIGV4aXN0aW5nRW50cnksIFdURjo6bW92ZShjb21wbGV0aW9uSGFu
ZGxlcikgfSk7Ci0gICAgYXV0byYgdXBkYXRlID0gKnVwZGF0ZU9wZXJhdGlvbjsKLSAgICBtX2Fj
dGl2ZVVwZGF0ZU9wZXJhdGlvbnMuYWRkKFdURjo6bW92ZSh1cGRhdGVPcGVyYXRpb24pKTsKKyAg
ICBBU1NFUlQod3JpdGUuZXhpc3RpbmdFbnRyeSk7CisgICAgQVNTRVJUKG1fYWN0aXZlV3JpdGVP
cGVyYXRpb25zLmNvbnRhaW5zKCZ3cml0ZSkpOworICAgIEFTU0VSVChtX2NvbnRlbnRzRmlsdGVy
Lm1heUNvbnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgpKSk7CiAKICAgICAvLyBUcnkgdG8gdXBk
YXRlIHRoZSBoZWFkZXIgb2YgYW4gZXhpc3RpbmcgZW50cnkuCiAgICAgU3RyaW5nQ2FwdHVyZSBj
YWNoZVBhdGhDYXB0dXJlKG1fZGlyZWN0b3J5UGF0aCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9i
YWNrZ3JvdW5kSU9RdWV1ZS5nZXQoKSwgW3RoaXMsICZ1cGRhdGUsIGNhY2hlUGF0aENhcHR1cmVd
IHsKLSAgICAgICAgYXV0byBoZWFkZXJEYXRhID0gZW5jb2RlRW50cnlIZWFkZXIodXBkYXRlLmtl
eSwgdXBkYXRlLmVudHJ5KTsKLSAgICAgICAgYXV0byBleGlzdGluZ0hlYWRlckRhdGEgPSBlbmNv
ZGVFbnRyeUhlYWRlcih1cGRhdGUua2V5LCB1cGRhdGUuZXhpc3RpbmdFbnRyeSk7CisgICAgZGlz
cGF0Y2hfYXN5bmMobV9iYWNrZ3JvdW5kSU9RdWV1ZS5nZXQoKSwgW3RoaXMsICZ3cml0ZSwgY2Fj
aGVQYXRoQ2FwdHVyZV0geworICAgICAgICBhdXRvIGhlYWRlckRhdGEgPSBlbmNvZGVFbnRyeUhl
YWRlcih3cml0ZS5rZXksIHdyaXRlLmVudHJ5KTsKKyAgICAgICAgYXV0byBleGlzdGluZ0hlYWRl
ckRhdGEgPSBlbmNvZGVFbnRyeUhlYWRlcih3cml0ZS5rZXksIHdyaXRlLmV4aXN0aW5nRW50cnku
dmFsdWUoKSk7CiAKICAgICAgICAgYm9vbCBwYWdlUm91bmRlZEhlYWRlclNpemVDaGFuZ2VkID0g
ZGlzcGF0Y2hfZGF0YV9nZXRfc2l6ZShoZWFkZXJEYXRhLmdldCgpKSAhPSBkaXNwYXRjaF9kYXRh
X2dldF9zaXplKGV4aXN0aW5nSGVhZGVyRGF0YS5nZXQoKSk7CiAgICAgICAgIGlmIChwYWdlUm91
bmRlZEhlYWRlclNpemVDaGFuZ2VkKSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3Rv
cmFnZSwgIihOZXR3b3JrUHJvY2VzcykgcGFnZS1yb3VuZGVkIGhlYWRlciBzaXplIGNoYW5nZWQs
IHN0b3JpbmcgZnVsbCBlbnRyeSIpOwotICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsICZ1cGRhdGVdIHsKLSAgICAgICAgICAgICAgICBz
dG9yZSh1cGRhdGUua2V5LCB1cGRhdGUuZW50cnksIFdURjo6bW92ZSh1cGRhdGUuY29tcGxldGlv
bkhhbmRsZXIpKTsKLQotICAgICAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZVVwZGF0ZU9wZXJh
dGlvbnMuY29udGFpbnMoJnVwZGF0ZSkpOwotICAgICAgICAgICAgICAgIG1fYWN0aXZlVXBkYXRl
T3BlcmF0aW9ucy5yZW1vdmUoJnVwZGF0ZSk7CisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywgJndyaXRlXSB7CisgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hGdWxsV3JpdGVPcGVyYXRpb24od3JpdGUpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgZmQ7Ci0gICAgICAg
IGF1dG8gY2hhbm5lbCA9IG9wZW5GaWxlRm9yS2V5KHVwZGF0ZS5rZXksIEZpbGVPcGVuVHlwZTo6
V3JpdGUsIGNhY2hlUGF0aENhcHR1cmUuc3RyaW5nKCksIGZkKTsKLSAgICAgICAgZGlzcGF0Y2hf
aW9fd3JpdGUoY2hhbm5lbC5nZXQoKSwgMCwgaGVhZGVyRGF0YS5nZXQoKSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3RoaXMsICZ1cGRhdGVdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90
LCBpbnQgZXJyb3IpIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gb3BlbkZpbGVGb3JLZXkod3Jp
dGUua2V5LCBGaWxlT3BlblR5cGU6OldyaXRlLCBjYWNoZVBhdGhDYXB0dXJlLnN0cmluZygpLCBm
ZCk7CisgICAgICAgIGRpc3BhdGNoX2lvX3dyaXRlKGNoYW5uZWwuZ2V0KCksIDAsIGhlYWRlckRh
dGEuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlzLCAmd3JpdGVdKGJvb2wg
ZG9uZSwgZGlzcGF0Y2hfZGF0YV90LCBpbnQgZXJyb3IpIHsKICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQoZG9uZSwgZG9uZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwg
IihOZXR3b3JrUHJvY2VzcykgdXBkYXRlIGNvbXBsZXRlIGVycm9yPSVkIiwgZXJyb3IpOwogCiAg
ICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgcmVtb3ZlRW50cnkodXBkYXRl
LmtleSk7CisgICAgICAgICAgICAgICAgcmVtb3ZlRW50cnkod3JpdGUua2V5KTsKIAotICAgICAg
ICAgICAgdXBkYXRlLmNvbXBsZXRpb25IYW5kbGVyKCFlcnJvciwgRGF0YSgpKTsKKyAgICAgICAg
ICAgIHdyaXRlLmNvbXBsZXRpb25IYW5kbGVyKCFlcnJvciwgRGF0YSgpKTsKIAotICAgICAgICAg
ICAgQVNTRVJUKG1fYWN0aXZlVXBkYXRlT3BlcmF0aW9ucy5jb250YWlucygmdXBkYXRlKSk7Ci0g
ICAgICAgICAgICBtX2FjdGl2ZVVwZGF0ZU9wZXJhdGlvbnMucmVtb3ZlKCZ1cGRhdGUpOworICAg
ICAgICAgICAgQVNTRVJUKG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLmNvbnRhaW5zKCZ3cml0ZSkp
OworICAgICAgICAgICAgbV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMucmVtb3ZlKCZ3cml0ZSk7Cisg
ICAgICAgICAgICBkaXNwYXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMoKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CiB9Cg==
</data>
<flag name="review"
          id="271412"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>