<?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>79001</bug_id>
          
          <creation_ts>2012-02-19 14:04:07 -0800</creation_ts>
          <short_desc>undo manager retains RefPtr to nodes in documents that would otherwise have been GC&apos;ed</short_desc>
          <delta_ts>2017-07-18 08:30:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>74059</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>gregsimon</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559948</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-19 14:04:07 -0800</bug_when>
    <thetext>Because WebKit&apos;s undo manager manages undo stack at the page level, all documents that have ever been edited on the same page will be kept in memory even if there were no other references to it.

This is pretty silly because we can&apos;t even undo editing actions on an unloaded frame/document even if the user had loaded it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559949</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-19 14:06:43 -0800</bug_when>
    <thetext>Since none of our editing actions do cross-frame editing, we should be able to delete all UndoStep objects that belong to an unloaded frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560003</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-19 20:41:05 -0800</bug_when>
    <thetext>When are the undo steps currently cleared?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560016</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-19 21:32:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; When are the undo steps currently cleared?

It&apos;s cleared when the page is unloaded in FrameLoader::closeURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560028</commentid>
    <comment_count>4</comment_count>
      <attachid>127761</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-19 22:18:00 -0800</bug_when>
    <thetext>Created attachment 127761
proof of concept wip patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560029</commentid>
    <comment_count>5</comment_count>
      <attachid>127761</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-19 22:20:24 -0800</bug_when>
    <thetext>Comment on attachment 127761
proof of concept wip patch

Here&apos;s my attempt to mitigate this issue. I&apos;m removing all undo step objects when the frame is destroyed. For Mac port, this can be done by creating targets for each &quot;host&quot; document and then removing all targets when the corresponding frame is destroyed.

I probably need to hash out the details but it compiles &amp; loads pages as is.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127761</attachid>
            <date>2012-02-19 22:18:00 -0800</date>
            <delta_ts>2012-02-19 22:20:24 -0800</delta_ts>
            <desc>proof of concept wip patch</desc>
            <filename>bug-79001-20120219221759.patch</filename>
            <type>text/plain</type>
            <size>16362</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODIwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAyLTE5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHVuZG8gbWFuYWdlciByZXRhaW5z
IFJlZlB0ciB0byBub2RlcyBpbiBkb2N1bWVudHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBi
ZWVuIEdDJ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6aG9zdCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6
CisgICAgICAgIChFZGl0Q29tbWFuZENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Vu
ZG9TdGVwLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVuZG9TdGVwKToKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRv
ckNsaWVudDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChFZGl0b3JDbGllbnQpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnBhZ2VE
ZXN0cm95ZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6CisKIDIwMTItMDItMTkgIFNoaW55YSBLYXdh
bmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJvZHVjZSBJbnNlcnRp
b25Qb2ludCwgd2hpY2ggd2lsbCBiZSBhIGNvbW1vbiBiYXNlIGNsYXNzIG9mIEhUTUxTaGFkb3dF
bGVtZW50IGFuZCBIVE1MQ29udGVudEVsZW1lbnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDgwOTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTczODEsOSArNzM4MSw5IEBACiAJCTFBRkUxMTk4MENCRkZDQzQwMDMwMTdG
QSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAv
KiBQYWdlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzQzNUNEMzE0RTg1NDRGMDA0
RTEwRUEgLyogSW5zcGVjdG9yLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBJbnNwZWN0b3IuanNvbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM0MzVDRDQxNEU4NTQ1QjAwNEUxMEVBIC8qIEluc3Bl
Y3Rvci0wLjEuanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuanNvbjsgcGF0aCA9ICJJbnNwZWN0b3ItMC4xLmpzb24iOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzQzNUNENTE0RTg1NDVCMDA0RTEwRUEgLyogSW5zcGVjdG9y
LTEuMC5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5qc29uOyBwYXRoID0gIkluc3BlY3Rvci0xLjAuanNvbiI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNDM1Q0QzMTRFODU0NEYwMDRFMTBFQSAvKiBJbnNwZWN0b3IuanNv
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBJbnNwZWN0b3IuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM0
MzVDRDQxNEU4NTQ1QjAwNEUxMEVBIC8qIEluc3BlY3Rvci0wLjEuanNvbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiSW5zcGVj
dG9yLTAuMS5qc29uIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM0MzVDRDUxNEU4
NTQ1QjAwNEUxMEVBIC8qIEluc3BlY3Rvci0xLjAuanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiSW5zcGVjdG9yLTEuMC5q
c29uIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM0QzhFRkYwQUQ4NUQ4NzAwOTQ3
NUNFIC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkxQzRDOEYwMDBBRDg1
RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVCdXR0b25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkxQzRDOEY2MzBBRDg2
NTVEMDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlbGV0ZUJ1dHRvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDEwODA5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw2ICs4OCwxMSBAQCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpFZGl0Q29tbWFu
ZENvbXBvCiB7CiB9CiAKK05vZGUqIEVkaXRDb21tYW5kQ29tcG9zaXRpb246Omhvc3QoKQorewor
ICAgIHJldHVybiBtX2RvY3VtZW50LmdldCgpOworfQorCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9z
aXRpb246OnVuYXBwbHkoKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDEw
ODA5MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uIDogcHVibGljIFVuCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdENvbW1h
bmRDb21wb3NpdGlvbj4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBFZGl0QWN0aW9uKTsKIAorICAgIHZpcnR1YWwgTm9k
ZSogaG9zdCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKICAgICBFZGl0QWN0aW9uIGVk
aXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHJldmlzaW9uIDEwODA5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2
LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTm9kZTsKKwogY2xhc3MgVW5k
b1N0ZXAgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmRvU3RlcD4gewogcHVibGljOgogICAgIHZpcnR1
YWwgflVuZG9TdGVwKCkgeyB9CiAKKyAgICB2aXJ0dWFsIE5vZGUqIGhvc3QoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSA9
IDA7CiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMDgwOTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3Myw3ICs0NzMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVbmRv
U3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
UmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucyhOb2RlKikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChGcmFt
ZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgY2FuUGFzdGUoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Qg
eyByZXR1cm4gZGVmYXVsdFZhbHVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDEwODA5MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Nyw4ICs0NDcsOSBAQCBib29sIEZyYW1l
TG9hZGVyOjpjbG9zZVVSTCgpCiAgICAgLy8gU2hvdWxkIG9ubHkgc2VuZCB0aGUgcGFnZWhpZGUg
ZXZlbnQgaGVyZSBpZiB0aGUgY3VycmVudCBkb2N1bWVudCBleGlzdHMgYW5kIGhhcyBub3QgYmVl
biBwbGFjZWQgaW4gdGhlIHBhZ2UgY2FjaGUuICAgIAogICAgIERvY3VtZW50KiBjdXJyZW50RG9j
dW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIHN0b3BMb2FkaW5nKGN1cnJlbnREb2N1
bWVudCAmJiAhY3VycmVudERvY3VtZW50LT5pblBhZ2VDYWNoZSgpID8gVW5sb2FkRXZlbnRQb2xp
Y3lVbmxvYWRBbmRQYWdlSGlkZSA6IFVubG9hZEV2ZW50UG9saWN5VW5sb2FkT25seSk7Ci0gICAg
Ci0gICAgbV9mcmFtZS0+ZWRpdG9yKCktPmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CisKKyAg
ICBpZiAobV9mcmFtZS0+cGFnZSgpICYmIG1fZnJhbWUtPnBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCkp
CisgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCktPmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKGN1cnJlbnREb2N1bWVudCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTA4MDkzKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTAgKzkx
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpID0gMDsKLSAg
ICAKKwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0
ZXA+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxV
bmRvU3RlcD4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKE5vZGUqIGhv
c3QgPSAwKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChGcmFtZSosIGJvb2wg
ZGVmYXVsdFZhbHVlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBhc3RlKEZyYW1l
KiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CShyZXZpc2lvbiAxMDgwOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjgzLDYgKzY4Myw4IEBAIHZvaWQgRnJhbWU6OnBhZ2VEZXN0cm95ZWQo
KQogCiAgICAgc2NyaXB0KCktPmNsZWFyU2NyaXB0T2JqZWN0cygpOwogICAgIHNjcmlwdCgpLT51
cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKKyAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+
ZWRpdG9yQ2xpZW50KCkpCisgICAgICAgIHBhZ2UoKS0+ZWRpdG9yQ2xpZW50KCktPmNsZWFyVW5k
b1JlZG9PcGVyYXRpb25zKGRvY3VtZW50KCkpOwogCiAgICAgZGV0YWNoRnJvbVBhZ2UoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMTA4MDkzKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDYgKzYxMCw3IEBAIHZvaWQg
UGFnZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKIAogdm9pZCBQYWdlOjpjbGVhclVu
ZG9SZWRvT3BlcmF0aW9ucygpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgbV9l
ZGl0b3JDbGllbnQtPmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwODIwOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTE5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIHVuZG8gbWFuYWdlciByZXRhaW5zIFJlZlB0ciB0byBu
b2RlcyBpbiBkb2N1bWVudHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBiZWVuIEdDJ2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTAwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50KToKKwogMjAxMi0wMi0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDg5MTgwMT4gQmFja2luZ1N0b3JlOjpzY3Jv
bGwoKSB1bm5lY2Vzc2FyaWx5IGNvcGllcyBwaXhlbHMgYXJvdW5kCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxMDgwOTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNSw3ICsyMzUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChQ
CiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
Cit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoTm9kZSopCiB7
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyQWxsRWRpdENv
bW1hbmRzKCkpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMDgwOTMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJVbmRvUmVkb09wZXJhdGlvbnMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJV
bmRvUmVkb09wZXJhdGlvbnMoV2ViQ29yZTo6Tm9kZSogaG9zdCkgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVl
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFzdGUoV2ViQ29yZTo6RnJh
bWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDgyMDgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMi0xOSAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICB1bmRvIG1hbmFnZXIgcmV0YWlucyBSZWZQdHIg
dG8gbm9kZXMgaW4gZG9jdW1lbnRzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgYmVlbiBHQydl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViRWRpdG9yVW5kb1RhcmdldCBpbml0V2l0
aEhvc3Q6XSk6CisgICAgICAgICgtW1dlYkVkaXRvclVuZG9UYXJnZXQgaG9zdF0pOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpyZWdpc3RlclVuZG9PclJlZG9TdGVwKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorCiAyMDEyLTAyLTE3ICBNaWhuZWEgT3ZpZGVu
aWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIENTUyByZWdpb25zIGVuYWJsZWQgYnkg
ZGVmYXVsdApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEwODA5MykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KKyNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTEwMiw3ICsxMDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxXZWJD
b3JlOjpVbmRvU3RlcD4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3Bl
cmF0aW9ucyhXZWJDb3JlOjpOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFzdGUoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1
bHRWYWx1ZSkgY29uc3QgT1ZFUlJJREU7CkBAIC0xNDcsNyArMTQ4LDggQEAgcHJpdmF0ZToKICAg
ICBXZWJFZGl0b3JDbGllbnQoKTsKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKLSAgICBSZXRh
aW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OworICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm9kZT4sIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0
PiA+IFVuZG9UYXJnZXRIYXNoTWFwOworICAgIFVuZG9UYXJnZXRIYXNoTWFwIG1fdW5kb1Rhcmdl
dHM7CiAgICAgYm9vbCBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnM7CiAKICNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAxMDgwOTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4ICsx
NTIsMTEgQEAgLSAoVW5kb1N0ZXAgKilzdGVwCiAKIEBpbnRlcmZhY2UgV2ViRWRpdG9yVW5kb1Rh
cmdldCA6IE5TT2JqZWN0CiB7CisgICAgUmVmUHRyPE5vZGU+IG1faG9zdDsKIH0KIAorLSAoaWQp
aW5pdFdpdGhIb3N0OihQYXNzUmVmUHRyPE5vZGU+KWhvc3Q7CistIChOb2RlICopaG9zdDsKIC0g
KHZvaWQpdW5kb0VkaXRpbmc6KGlkKWFyZzsKIC0gKHZvaWQpcmVkb0VkaXRpbmc6KGlkKWFyZzsK
IApAQCAtMTYxLDYgKzE2NCwyMSBAQCAtICh2b2lkKXJlZG9FZGl0aW5nOihpZClhcmc7CiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JVbmRvVGFyZ2V0CiAKKy0gKGlkKWluaXRXaXRoSG9zdDoo
UGFzc1JlZlB0cjxOb2RlPilob3N0Cit7CisgICAgQVNTRVJUKGhvc3QpOworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIG1f
aG9zdCA9IGhvc3Q7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5vZGUgKilob3N0Cit7Cisg
ICAgcmV0dXJuIG1faG9zdC5nZXQoKTsKK30KKwogLSAodm9pZCl1bmRvRWRpdGluZzooaWQpYXJn
CiB7CiAgICAgQVNTRVJUKFthcmcgaXNLaW5kT2ZDbGFzczpbV2ViVW5kb1N0ZXAgY2xhc3NdXSk7
CkBAIC0xODIsNyArMjAwLDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnBhZ2VEZXN0cm95ZWQo
KQogCiBXZWJFZGl0b3JDbGllbnQ6OldlYkVkaXRvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQog
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi0gICAgLCBtX3VuZG9UYXJnZXQoW1tbV2ViRWRpdG9y
VW5kb1RhcmdldCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdKQogICAgICwgbV9oYXZlVW5kb1Jl
ZG9PcGVyYXRpb25zKGZhbHNlKQogewogfQpAQCAtNTE0LDE0ICs1MzEsMjIgQEAgc3RhdGljIE5T
U3RyaW5nKiB1bmRvTmFtZUZvckVkaXRBY3Rpb24oRQogICAgIHJldHVybiBuaWw7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9PclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5k
b1N0ZXA+IHN0ZXAsIGJvb2wgaXNSZWRvKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVy
VW5kb09yUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gcHJwU3RlcCwgYm9vbCBpc1JlZG8p
CiB7CisgICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwID0gcHJwU3RlcDsKICAgICBBU1NFUlQoc3Rl
cCk7CiAgICAgCiAgICAgTlNVbmRvTWFuYWdlciAqdW5kb01hbmFnZXIgPSBbbV93ZWJWaWV3IHVu
ZG9NYW5hZ2VyXTsKICAgICBOU1N0cmluZyAqYWN0aW9uTmFtZSA9IHVuZG9OYW1lRm9yRWRpdEFj
dGlvbihzdGVwLT5lZGl0aW5nQWN0aW9uKCkpOwogICAgIFdlYlVuZG9TdGVwICp3ZWJFbnRyeSA9
IFtXZWJVbmRvU3RlcCBzdGVwV2l0aFVuZG9TdGVwOnN0ZXBdOwotICAgIFt1bmRvTWFuYWdlciBy
ZWdpc3RlclVuZG9XaXRoVGFyZ2V0Om1fdW5kb1RhcmdldC5nZXQoKSBzZWxlY3RvcjooaXNSZWRv
ID8gQHNlbGVjdG9yKHJlZG9FZGl0aW5nOikgOiBAc2VsZWN0b3IodW5kb0VkaXRpbmc6KSkgb2Jq
ZWN0OndlYkVudHJ5XTsKKworICAgIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0PiB0YXJn
ZXQgPSBtX3VuZG9UYXJnZXRzLmdldChzdGVwLT5ob3N0KCkpOworICAgIGlmICghdGFyZ2V0KSB7
CisgICAgICAgIHRhcmdldCA9IFtbV2ViRWRpdG9yVW5kb1RhcmdldCBhbGxvY10gaW5pdFdpdGhI
b3N0OnN0ZXAtPmhvc3QoKV07CisgICAgICAgIG1fdW5kb1RhcmdldHMuc2V0KHN0ZXAtPmhvc3Qo
KSwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBbdW5kb01hbmFnZXIgcmVnaXN0ZXJVbmRvV2l0aFRh
cmdldDp0YXJnZXQuZ2V0KCkgc2VsZWN0b3I6KGlzUmVkbyA/IEBzZWxlY3RvcihyZWRvRWRpdGlu
ZzopIDogQHNlbGVjdG9yKHVuZG9FZGl0aW5nOikpIG9iamVjdDp3ZWJFbnRyeV07CiAgICAgaWYg
KGFjdGlvbk5hbWUpCiAgICAgICAgIFt1bmRvTWFuYWdlciBzZXRBY3Rpb25OYW1lOmFjdGlvbk5h
bWVdOwogICAgIG1faGF2ZVVuZG9SZWRvT3BlcmF0aW9ucyA9IFlFUzsKQEAgLTUzNyw3ICs1NjIs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChQCiAgICAgcmVnaXN0
ZXJVbmRvT3JSZWRvU3RlcChjbWQsIHRydWUpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNsZWFyVW5k
b1JlZG9PcGVyYXRpb25zKE5vZGUqIGhvc3QpCiB7CiAgICAgaWYgKG1faGF2ZVVuZG9SZWRvT3Bl
cmF0aW9ucykgewogICAgICAgICAvLyB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNDY0
NTUwNz4gTlNVbmRvTWFuYWdlciBkaWVzCkBAIC01NDcsOSArNTcyLDE2IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmEKICAgICAgICAgaW50IGdyb3VwaW5nTGV2ZWwg
PSBbdW5kb01hbmFnZXIgZ3JvdXBpbmdMZXZlbF07CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZ3JvdXBpbmdMZXZlbDsgKytpKQogICAgICAgICAgICAgW3VuZG9NYW5hZ2VyIGVuZFVuZG9H
cm91cGluZ107Ci0gICAgICAgIAotICAgICAgICBbdW5kb01hbmFnZXIgcmVtb3ZlQWxsQWN0aW9u
c1dpdGhUYXJnZXQ6bV91bmRvVGFyZ2V0LmdldCgpXTsKLSAgICAgICAgCisKKyAgICAgICAgaWYg
KGhvc3QpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0PiB0YXJn
ZXQgPSBtX3VuZG9UYXJnZXRzLnRha2UoaG9zdCk7CisgICAgICAgICAgICBbdW5kb01hbmFnZXIg
cmVtb3ZlQWxsQWN0aW9uc1dpdGhUYXJnZXQ6dGFyZ2V0LmdldCgpXTsKKyAgICAgICAgfSBlbHNl
eworICAgICAgICAgICAgZm9yIChVbmRvVGFyZ2V0SGFzaE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3VuZG9UYXJnZXRzLmJlZ2luKCk7IGl0ICE9IG1fdW5kb1RhcmdldHMuZW5kKCk7ICsraXQp
CisgICAgICAgICAgICAgICAgW3VuZG9NYW5hZ2VyIHJlbW92ZUFsbEFjdGlvbnNXaXRoVGFyZ2V0
Oml0LT5zZWNvbmQuZ2V0KCldOworICAgICAgICAgICAgbV91bmRvVGFyZ2V0cy5jbGVhcigpOwor
ICAgICAgICB9CisKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncm91cGluZ0xldmVsOyAr
K2kpCiAgICAgICAgICAgICBbdW5kb01hbmFnZXIgYmVnaW5VbmRvR3JvdXBpbmddOwogICAgICAg
ICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>