<?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>109978</bug_id>
          
          <creation_ts>2013-02-15 15:34:17 -0800</creation_ts>
          <short_desc>Structure should be more methodical about the relationship between m_offset and m_propertyTable</short_desc>
          <delta_ts>2013-02-15 21:33:05 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834422</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-15 15:34:17 -0800</bug_when>
    <thetext>Allegedly, the previous relationship was that either m_propertyTable or m_offset would be set, and if m_propertyTable was not set you could rebuild it.  In reality, we would sometimes &quot;reset&quot; both: some transitions wouldn&apos;t set m_offset, and other transitions would clear the previous structure&apos;s m_propertyTable.  So, in a structure transition chain of A-&gt;B-&gt;C you could have:

A transitions to B: B doesn&apos;t copy m_offset but does copy m_propertyTable, because that seemed like a good idea at the time.
B transitions to C: C steals B&apos;s m_propertyTable, leaving B with neither a m_propertyTable nor a m_offset.

Then we would ask for the size of the property storage of B and get the answer &quot;none&quot;.  We would then crash in hilarious ways.

Now, allegedly, there is a new relationship, which, hypothetically, should fix things: m_offset is always set and always refers to the maximum offset ever used by the property table.  From this, you can infer both the inline and out-of-line property size, and capacity.  This is accomplished by having PropertyTable::add() take a PropertyOffset reference, which must be Structure::m_offset.  It will update this offset.  As well, all transitions now copy m_offset.  And we frequently assert (using RELEASE_ASSERT) that the m_offset matches what m_propertyTable would tell you.  Hence if you ever modify the m_propertyTable, you&apos;ll also update the offset.  If you ever copy the property table, you&apos;ll also copy the offset.  Life should be good, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834426</commentid>
    <comment_count>1</comment_count>
      <attachid>188654</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-15 15:44:04 -0800</bug_when>
    <thetext>Created attachment 188654
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834435</commentid>
    <comment_count>2</comment_count>
      <attachid>188654</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-02-15 15:59:05 -0800</bug_when>
    <thetext>Comment on attachment 188654
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834630</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-15 21:33:05 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/143097</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188654</attachid>
            <date>2013-02-15 15:44:04 -0800</date>
            <delta_ts>2013-02-15 15:59:05 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>18676</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzMDYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDEzLTAyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RydWN0dXJlIHNob3VsZCBiZSBtb3JlIG1ldGhvZGljYWwgYWJvdXQgdGhlIHJlbGF0aW9uc2hp
cCBiZXR3ZWVuIG1fb2Zmc2V0IGFuZCBtX3Byb3BlcnR5VGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTk3OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWxsZWdlZGx5LCB0aGUgcHJl
dmlvdXMgcmVsYXRpb25zaGlwIHdhcyB0aGF0IGVpdGhlciBtX3Byb3BlcnR5VGFibGUgb3IgbV9v
ZmZzZXQKKyAgICAgICAgd291bGQgYmUgc2V0LCBhbmQgaWYgbV9wcm9wZXJ0eVRhYmxlIHdhcyBu
b3Qgc2V0IHlvdSBjb3VsZCByZWJ1aWxkIGl0LiAgSW4gcmVhbGl0eSwKKyAgICAgICAgd2Ugd291
bGQgc29tZXRpbWVzICJyZXNldCIgYm90aDogc29tZSB0cmFuc2l0aW9ucyB3b3VsZG4ndCBzZXQg
bV9vZmZzZXQsIGFuZCBvdGhlcgorICAgICAgICB0cmFuc2l0aW9ucyB3b3VsZCBjbGVhciB0aGUg
cHJldmlvdXMgc3RydWN0dXJlJ3MgbV9wcm9wZXJ0eVRhYmxlLiAgU28sIGluIGEKKyAgICAgICAg
c3RydWN0dXJlIHRyYW5zaXRpb24gY2hhaW4gb2YgQS0+Qi0+QyB5b3UgY291bGQgaGF2ZToKKwor
ICAgICAgICBBIHRyYW5zaXRpb25zIHRvIEI6IEIgZG9lc24ndCBjb3B5IG1fb2Zmc2V0IGJ1dCBk
b2VzIGNvcHkgbV9wcm9wZXJ0eVRhYmxlLCBiZWNhdXNlCisgICAgICAgICAgICB0aGF0IHNlZW1l
ZCBsaWtlIGEgZ29vZCBpZGVhIGF0IHRoZSB0aW1lICh0aGlzIHdhcyBhIGNvbW1vbiBpZGlvbSBp
biB0aGUgY29kZSkuCisgICAgICAgIEIgdHJhbnNpdGlvbnMgdG8gQzogQyBzdGVhbHMgQidzIG1f
cHJvcGVydHlUYWJsZSwgbGVhdmluZyBCIHdpdGggbmVpdGhlciBhCisgICAgICAgICAgICBtX3By
b3BlcnR5VGFibGUgbm9yIGEgbV9vZmZzZXQuCisKKyAgICAgICAgVGhlbiB3ZSB3b3VsZCBhc2sg
Zm9yIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eSBzdG9yYWdlIG9mIEIgYW5kIGdldCB0aGUgYW5z
d2VyCisgICAgICAgICJub25lIi4gIFRoYXQncyBub3QgZ29vZC4KKworICAgICAgICBOb3csIHRo
ZXJlIGlzIGEgbmV3IHJlbGF0aW9uc2hpcCwgd2hpY2gsIGhvcGVmdWxseSwgc2hvdWxkIGZpeCB0
aGluZ3M6IG1fb2Zmc2V0IGlzCisgICAgICAgIGFsd2F5cyBzZXQgYW5kIGFsd2F5cyByZWZlcnMg
dG8gdGhlIG1heGltdW0gb2Zmc2V0IGV2ZXIgdXNlZCBieSB0aGUgcHJvcGVydHkgdGFibGUuCisg
ICAgICAgIEZyb20gdGhpcywgeW91IGNhbiBpbmZlciBib3RoIHRoZSBpbmxpbmUgYW5kIG91dC1v
Zi1saW5lIHByb3BlcnR5IHNpemUsIGFuZAorICAgICAgICBjYXBhY2l0eS4gIFRoaXMgaXMgYWNj
b21wbGlzaGVkIGJ5IGhhdmluZyBQcm9wZXJ0eVRhYmxlOjphZGQoKSB0YWtlIGEKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgcmVmZXJlbmNlLCB3aGljaCBtdXN0IGJlIFN0cnVjdHVyZTo6bV9vZmZz
ZXQuICBJdCB3aWxsIHVwZGF0ZSB0aGlzCisgICAgICAgIG9mZnNldC4gIEFzIHdlbGwsIGFsbCB0
cmFuc2l0aW9ucyBub3cgY29weSBtX29mZnNldC4gIEFuZCB3ZSBmcmVxdWVudGx5IGFzc2VydAor
ICAgICAgICAodXNpbmcgUkVMRUFTRV9BU1NFUlQpIHRoYXQgdGhlIG1fb2Zmc2V0IG1hdGNoZXMg
d2hhdCBtX3Byb3BlcnR5VGFibGUgd291bGQgdGVsbAorICAgICAgICB5b3UuICBIZW5jZSBpZiB5
b3UgZXZlciBtb2RpZnkgdGhlIG1fcHJvcGVydHlUYWJsZSwgeW91J2xsIGFsc28gdXBkYXRlIHRo
ZSBvZmZzZXQuCisgICAgICAgIElmIHlvdSBldmVyIGNvcHkgdGhlIHByb3BlcnR5IHRhYmxlLCB5
b3UnbGwgYWxzbyBjb3B5IHRoZSBvZmZzZXQuICBMaWZlIHNob3VsZCBiZQorICAgICAgICBnb29k
LCBJIHRoaW5rLgorCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eVRhYmxlOjphZGQpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5
TWFwKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjpzZWFsVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZnJlZXpl
VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpjcmVhdGVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmNo
ZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1dFdpbGxHcm93T3V0T2ZMaW5lU3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemUpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyk6CisgICAgICAgIChTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3kpOgorCiAy
MDEzLTAyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZH
IFNwZWN1bGF0aXZlSklUNjQgc2hvdWxkIGJlIG1vcmUgcHJlY2lzZSBhYm91dCB3aGVuIGl0J3Mg
ZGVhbGluZyB3aXRoIGEgY2VsbCAoZXZlbiB0aG91Z2ggaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0
ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE0MzA1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
Nyw3ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAgZmluZF9pdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5
cGUmKTsKICAgICBmaW5kX2l0ZXJhdG9yIGZpbmRXaXRoU3RyaW5nKGNvbnN0IEtleVR5cGUmKTsK
ICAgICAvLyBBZGQgYSB2YWx1ZSB0byB0aGUgdGFibGUKLSAgICBzdGQ6OnBhaXI8ZmluZF9pdGVy
YXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgZW50cnkpOworICAgIGVudW0gRWZmZWN0
T25Qcm9wZXJ0eU9mZnNldCB7IFByb3BlcnR5T2Zmc2V0TWF5Q2hhbmdlLCBQcm9wZXJ0eU9mZnNl
dE11c3ROb3RDaGFuZ2UgfTsKKyAgICBzdGQ6OnBhaXI8ZmluZF9pdGVyYXRvciwgYm9vbD4gYWRk
KGNvbnN0IFZhbHVlVHlwZSYgZW50cnksIFByb3BlcnR5T2Zmc2V0JiwgRWZmZWN0T25Qcm9wZXJ0
eU9mZnNldCk7CiAgICAgLy8gUmVtb3ZlIGEgdmFsdWUgZnJvbSB0aGUgdGFibGUuCiAgICAgdm9p
ZCByZW1vdmUoY29uc3QgZmluZF9pdGVyYXRvciYgaXRlcik7CiAgICAgdm9pZCByZW1vdmUoY29u
c3QgS2V5VHlwZSYga2V5KTsKQEAgLTM4OSwxMiArMzkwLDE0IEBAIGlubGluZSBQcm9wZXJ0eVRh
YmxlOjpmaW5kX2l0ZXJhdG9yIFByb3AKICAgICB9CiB9CiAKLWlubGluZSBzdGQ6OnBhaXI8UHJv
cGVydHlUYWJsZTo6ZmluZF9pdGVyYXRvciwgYm9vbD4gUHJvcGVydHlUYWJsZTo6YWRkKGNvbnN0
IFZhbHVlVHlwZSYgZW50cnkpCitpbmxpbmUgc3RkOjpwYWlyPFByb3BlcnR5VGFibGU6OmZpbmRf
aXRlcmF0b3IsIGJvb2w+IFByb3BlcnR5VGFibGU6OmFkZChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5
LCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBFZmZlY3RPblByb3BlcnR5T2Zmc2V0IG9mZnNldEVm
ZmVjdCkKIHsKICAgICAvLyBMb29rIGZvciBhIHZhbHVlIHdpdGggYSBtYXRjaGluZyBrZXkgYWxy
ZWFkeSBpbiB0aGUgYXJyYXkuCiAgICAgZmluZF9pdGVyYXRvciBpdGVyID0gZmluZChlbnRyeS5r
ZXkpOwotICAgIGlmIChpdGVyLmZpcnN0KQorICAgIGlmIChpdGVyLmZpcnN0KSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGl0ZXIuZmlyc3QtPm9mZnNldCA8PSBvZmZzZXQpOwogICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoaXRlciwgZmFsc2UpOworICAgIH0KIAogICAgIC8vIFJlZiB0
aGUga2V5CiAgICAgZW50cnkua2V5LT5yZWYoKTsKQEAgLTQxMyw2ICs0MTYsMTIgQEAgaW5saW5l
IHN0ZDo6cGFpcjxQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZQogICAgICppdGVyLmZpcnN0ID0gZW50
cnk7CiAKICAgICArK21fa2V5Q291bnQ7CisgICAgCisgICAgaWYgKG9mZnNldEVmZmVjdCA9PSBQ
cm9wZXJ0eU9mZnNldE1heUNoYW5nZSkKKyAgICAgICAgb2Zmc2V0ID0gc3RkOjptYXgob2Zmc2V0
LCBlbnRyeS5vZmZzZXQpOworICAgIGVsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0
ID49IGVudHJ5Lm9mZnNldCk7CisgICAgCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGl0ZXIs
IHRydWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHJldmlzaW9uIDE0MzA1NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1NiwxMyArMjU2
LDE1IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEoKICAgICBpZiAo
IW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobnVtYmVyT2ZTbG90
c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsKIAotICAgIGZvciAo
cHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsgLS1pKSB7CisgICAg
Zm9yIChwdHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsK
ICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPm1fbmFtZUluUHJldmlvdXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJv
cGVydHlNYXBFbnRyeSBlbnRyeShnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUtPm1fbmFtZUlu
UHJldmlvdXMuZ2V0KCksIHN0cnVjdHVyZS0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV9hdHRyaWJ1
dGVzSW5QcmV2aW91cywgc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzLmdldCgp
KTsKLSAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoZW50cnkpOworICAgICAgICBtX3Byb3Bl
cnR5VGFibGUtPmFkZChlbnRyeSwgbV9vZmZzZXQsIFByb3BlcnR5VGFibGU6OlByb3BlcnR5T2Zm
c2V0TXVzdE5vdENoYW5nZSk7CiAgICAgfQorICAgIAorICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVu
Y3koKTsKIH0KIAogaW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNp
emVfdCBjdXJyZW50Q2FwYWNpdHkpCkBAIC0zNzEsNiArMzczLDcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHRyYW5zaXRpb24tPm1fc3BlY2lmaWNWYWx1
ZUluUHJldmlvdXMuc2V0TWF5QmVOdWxsKGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHNwZWNpZmlj
VmFsdWUpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAg
IHN0cnVjdHVyZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgICAgICBpZiAoc3RydWN0
dXJlLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSkKICAgICAgICAgICAgIHRyYW5zaXRpb24tPm1f
cHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERh
dGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgKyAxKTsK
ICAgICAgICAgZWxzZQpAQCAtMzgxLDEyICszODQsMTQgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0cmFuc2l0aW9u
LT5jcmVhdGVQcm9wZXJ0eU1hcCgpOwogICAgIH0KKyAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9
IHN0cnVjdHVyZS0+bV9vZmZzZXQ7CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVj
aWZpY1ZhbHVlKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNW
YWx1ZSk7CiAKLSAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IG9mZnNldDsKICAgICBjaGVja09m
ZnNldCh0cmFuc2l0aW9uLT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7
CiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQoZ2xvYmFsRGF0YSwgdHJhbnNp
dGlvbik7CisgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOworICAgIHN0
cnVjdHVyZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgIHJldHVybiB0cmFuc2l0aW9u
OwogfQogCkBAIC0zOTgsNiArNDAzLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbgogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cmVtb3ZlKHByb3BlcnR5TmFt
ZSk7CiAKKyAgICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgcmV0
dXJuIHRyYW5zaXRpb247CiB9CiAKQEAgLTQwNywxMiArNDEzLDEyIEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmEKIAogICAgIHRyYW5zaXRpb24tPm1fcHJvdG90eXBl
LnNldChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBwcm90b3R5cGUpOwogCi0gICAgLy8gRG9uJ3Qg
c2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCi0KICAgICBz
dHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
ICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0
eVRhYmxlRm9yUGlubmluZyhnbG9iYWxEYXRhLCB0cmFuc2l0aW9uKTsKKyAgICB0cmFuc2l0aW9u
LT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9vZmZzZXQ7CiAgICAgdHJhbnNpdGlvbi0+cGluKCk7
CiAKKyAgICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgcmV0dXJu
IHRyYW5zaXRpb247CiB9CiAKQEAgLTQyMywxMCArNDI5LDkgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1
cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVAogCiAgICAgKyt0cmFuc2l0aW9uLT5tX3NwZWNpZmljRnVu
Y3Rpb25UaHJhc2hDb3VudDsKIAotICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNh
biBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgotCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9wcm9w
ZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoZ2xvYmFs
RGF0YSwgdHJhbnNpdGlvbik7CisgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUt
Pm1fb2Zmc2V0OwogICAgIHRyYW5zaXRpb24tPnBpbigpOwogCiAgICAgaWYgKHRyYW5zaXRpb24t
Pm1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID09IG1heFNwZWNpZmljRnVuY3Rpb25UaHJh
c2hDb3VudCkKQEAgLTQzNiw2ICs0NDEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RnVuY3Rpb25UCiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7CiAg
ICAgfQogCisgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgIHJl
dHVybiB0cmFuc2l0aW9uOwogfQogCkBAIC00NDQsMTAgKzQ1MCw5IEBAIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmEKICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVh
dGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAotICAgICAgICAvLyBEb24ndCBzZXQgbV9vZmZz
ZXQsIGFzIG9uZSBjYW4gbm90IHRyYW5zaXRpb24gdG8gdGhpcy4KLQogICAgICAgICBzdHJ1Y3R1
cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAg
ICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlU
YWJsZUZvclBpbm5pbmcoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CisgICAgICAgIHRyYW5zaXRp
b24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICAgICAgdHJhbnNpdGlvbi0+
cGluKCk7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3R1cmUgPSB0cmFuc2l0aW9uOwpAQCAtNDU4
LDYgKzQ2Myw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmEKICAg
ICBBU1NFUlQoZW50cnkpOwogICAgIGVudHJ5LT5hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKIAor
ICAgIHN0cnVjdHVyZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgIHJldHVybiBzdHJ1
Y3R1cmU7CiB9CiAKQEAgLTQ2OSw5ICs0NzUsMTEgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnRv
RGljdGlvbmFyeVRyYW5zaQogCiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFw
SWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxl
ID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoZ2xvYmFsRGF0YSwgdHJh
bnNpdGlvbik7CisgICAgdHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0
OwogICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFyeUtpbmQgPSBraW5kOwogICAgIHRyYW5zaXRp
b24tPnBpbigpOwogCisgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwog
ICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCkBAIC00OTYsNiArNTA0LDcgQEAgU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKEpTRwogICAgICAgICAgICAgaXRlci0+YXR0cmli
dXRlcyB8PSBEb250RGVsZXRlOwogICAgIH0KIAorICAgIHRyYW5zaXRpb24tPmNoZWNrT2Zmc2V0
Q29uc2lzdGVuY3koKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIApAQCAtNTEzLDYgKzUy
Miw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKEoKICAgICAgICAg
ICAgIGl0ZXItPmF0dHJpYnV0ZXMgfD0gaXRlci0+YXR0cmlidXRlcyAmIEFjY2Vzc29yID8gRG9u
dERlbGV0ZSA6IChEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAorICAgIHRyYW5zaXRp
b24tPmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0K
IApAQCAtNTI4LDYgKzUzOCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5z
aW9uc1QKICAgICB0cmFuc2l0aW9uLT5tX3ByZXZlbnRFeHRlbnNpb25zID0gdHJ1ZTsKICAgICB0
cmFuc2l0aW9uLT5waW4oKTsKIAorICAgIHRyYW5zaXRpb24tPmNoZWNrT2Zmc2V0Q29uc2lzdGVu
Y3koKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKIH0KIApAQCAtNTYwLDYgKzU3MSw3IEBAIFN0
cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXQKICAgICBjaGVja09mZnNldCh0
cmFuc2l0aW9uLT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
CiAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7CisgICAgICAgIHN0cnVjdHVy
ZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5tX2lz
UGlubmVkUHJvcGVydHlUYWJsZSkKICAgICAgICAgICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlU
YWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIHRyYW5z
aXRpb24sIHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgKyAxKTsKICAgICAgICAg
ZWxzZQpAQCAtNTcyLDYgKzU4NCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXQKICAgICB9CiAgICAgCiAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5h
ZGQoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbik7CisgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRD
b25zaXN0ZW5jeSgpOwogICAgIHJldHVybiB0cmFuc2l0aW9uOwogfQogCkBAIC02MTUsNiArNjI4
LDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmlzRnJvemVuKEpTR2xvYmFsRGF0YSYgZwogCiBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU09iamVjdCogb2JqZWN0KQogeworICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVu
Y3koKTsKICAgICBBU1NFUlQoaXNEaWN0aW9uYXJ5KCkpOwogICAgIGlmIChpc1VuY2FjaGVhYmxl
RGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEFTU0VSVChtX3Byb3BlcnR5VGFibGUpOwpAQCAtNjI5
LDcgKzY0Myw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVMKICAg
ICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQo
KTsKICAgICAgICAgZm9yIChQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0
eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2kpIHsKICAgICAgICAgICAg
IHZhbHVlc1tpXSA9IG9iamVjdC0+Z2V0RGlyZWN0KGl0ZXItPm9mZnNldCk7Ci0gICAgICAgICAg
ICBpdGVyLT5vZmZzZXQgPSBvZmZzZXRGb3JQcm9wZXJ0eU51bWJlcihpLCBtX2lubGluZUNhcGFj
aXR5KTsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaXRlci0+b2Zmc2V0ID0gb2Zmc2V0Rm9yUHJv
cGVydHlOdW1iZXIoaSwgbV9pbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIENvcGllcyBpbiBvdXIgdmFsdWVzIHRvIHRoZWlyIGNvbXBhY3RlZCBsb2NhdGlv
bnMuCkBAIC02MzcsNiArNjUxLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0
aW9uYXJ5UwogICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZ2xvYmFsRGF0YSwgb2Zmc2V0
Rm9yUHJvcGVydHlOdW1iZXIoaSwgbV9pbmxpbmVDYXBhY2l0eSksIHZhbHVlc1tpXSk7CiAKICAg
ICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5jbGVhckRlbGV0ZWRPZmZzZXRzKCk7CisgICAgICAgIGNo
ZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKICAgICB9CiAKICAgICBtX2RpY3Rpb25hcnlLaW5kID0g
Tm9uZURpY3Rpb25hcnlLaW5kOwpAQCAtNzE0LDYgKzcyOSw3IEBAIFByb3BlcnR5TWFwU3RhdGlz
dGljc0V4aXRMb2dnZXI6On5Qcm9wZXIKIAogaW5saW5lIHZvaWQgU3RydWN0dXJlOjpjaGVja0Nv
bnNpc3RlbmN5KCkKIHsKKyAgICBjaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiB9CiAKICNlbmRp
ZgpAQCAtNzg2LDggKzgwMiw4IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3BlY2lm
aWNWYWwKIAogICAgIFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IG1fcHJvcGVydHlUYWJsZS0+
bmV4dE9mZnNldChtX2lubGluZUNhcGFjaXR5KTsKIAotICAgIG1fcHJvcGVydHlUYWJsZS0+YWRk
KFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKLQorICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKFByb3Bl
cnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgdGhpcywgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpLCBtX29mZnNldCwgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlPZmZzZXRN
YXlDaGFuZ2UpOworICAgIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICByZXR1cm4gbmV3
T2Zmc2V0OwogfQpAQCAtODIwLDcgKzgzNiw2IEBAIHZvaWQgU3RydWN0dXJlOjpjcmVhdGVQcm9w
ZXJ0eU1hcCh1bnNpZ24KIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBtX3Byb3BlcnR5
VGFibGUgPSBhZG9wdFB0cihuZXcgUHJvcGVydHlUYWJsZShjYXBhY2l0eSkpOwotICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXNGcm9t
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQpAQCAtODk2LDYgKzkxMSw3IEBAIGJv
b2wgU3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbk1heUludGVyY2UKIAogdm9pZCBQcm9wZXJ0eVRh
YmxlOjpjaGVja0NvbnNpc3RlbmN5KCkKIHsKKyAgICBjaGVja09mZnNldENvbnNpc3RlbmN5KCk7
CiAgICAgQVNTRVJUKG1faW5kZXhTaXplID49IFByb3BlcnR5VGFibGU6Ok1pbmltdW1UYWJsZVNp
emUpOwogICAgIEFTU0VSVChtX2luZGV4TWFzayk7CiAgICAgQVNTRVJUKG1faW5kZXhTaXplID09
IG1faW5kZXhNYXNrICsgMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQzMDU2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTExMCw2ICsxMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBkaWRUcmFuc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9CiAgICAgICAgIGJvb2wgcHV0
V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkKICAgICAgICAgeworICAgICAgICAgICAgY2hlY2tP
ZmZzZXRDb25zaXN0ZW5jeSgpOworICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQob3V0
T2ZMaW5lQ2FwYWNpdHkoKSA+PSBvdXRPZkxpbmVTaXplKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkgewpAQCAtMTg3LDYgKzE4OSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZUNhcGFjaXR5KCkgY29uc3QK
ICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKSk7
CisgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVkIG91dE9mTGluZVNpemUgPSB0aGlz
LT5vdXRPZkxpbmVTaXplKCk7CiAKICAgICAgICAgICAgIGlmICghb3V0T2ZMaW5lU2l6ZSkKQEAg
LTIwMSwxNCArMjA1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgdW5z
aWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0CiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChjaGVja09mZnNldENvbnNpc3RlbmN5KCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKLSAgICAgICAgICAgIGlmIChtX3Byb3BlcnR5
VGFibGUpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3RhbFNpemUgPSBtX3Byb3BlcnR5
VGFibGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSA9IHRoaXMtPmlubGluZUNhcGFjaXR5KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKHRvdGFsU2l6ZSA8IGlubGluZUNhcGFjaXR5KQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxTaXplIC0gaW5saW5lQ2FwYWNpdHk7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBudW1iZXJP
Zk91dE9mTGluZVNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCk7CiAgICAgICAgIH0KICAgICAg
ICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QKQEAgLTIyMSwxNyArMjIwLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIGlubGluZVNpemUoKSBj
b25zdAogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQ7Ci0gICAgICAgICAg
ICBpZiAobV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcHJvcGVy
dHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1fb2Zmc2V0ICsgMTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1pbjx1bnNpZ25lZD4ocmVzdWx0LCBtX2lubGluZUNhcGFjaXR5KTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4obV9vZmZzZXQgKyAxLCBtX2lubGluZUNhcGFjaXR5KTsK
ICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCB0b3RhbFN0b3JhZ2VTaXplKCkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5l
Q2FwYWNpdHkpOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIHRvdGFsU3RvcmFnZUNhcGFj
aXR5KCkgY29uc3QKQEAgLTI0OCw4ICsyNDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogICAgICAgICBQcm9wZXJ0eU9mZnNldCBsYXN0VmFsaWRPZmZzZXQoKSBjb25zdAogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBvZmZzZXRGb3JQcm9wZXJ0eU51bWJlcihtX3Byb3BlcnR5VGFibGUtPnByb3BlcnR5U3Rv
cmFnZVNpemUoKSAtIDEsIG1faW5saW5lQ2FwYWNpdHkpOwogICAgICAgICAgICAgcmV0dXJuIG1f
b2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQpIGNvbnN0CkBAIC0yODEsOCArMjcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobV9wcm9wZXJ0eVRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5VGFibGUtPmlzRW1wdHkoKTsKKyAgICAgICAgICAgIEFTU0VSVChjaGVja09mZnNldENvbnNp
c3RlbmN5KCkpOwogICAgICAgICAgICAgcmV0dXJuICFKU0M6OmlzVmFsaWRPZmZzZXQobV9vZmZz
ZXQpOwogICAgICAgICB9CiAKQEAgLTQwNSwxMiArMzk0LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUo
KS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CisgICAgICAgICAgICBBU1NFUlQoY2hlY2tPZmZz
ZXRDb25zaXN0ZW5jeSgpKTsKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlICYmIHBy
ZXZpb3VzSUQoKSkKICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKGdsb2Jh
bERhdGEpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElm
TmVjZXNzYXJ5Rm9yUGlubmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7
CisgICAgICAgICAgICBjaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgICAgICAgICBpZiAo
IW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFw
KGdsb2JhbERhdGEpOwogICAgICAgICB9CkBAIC00NTMsNiArNDQ0LDIwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgQVNTRVJUKHR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlUmFyZURhdGEqPiht
X3ByZXZpb3VzT3JSYXJlRGF0YS5nZXQoKSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBjaGVja09mZnNldENvbnNpc3RlbmN5KCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoIW1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2Fw
YWNpdHkpID09IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSA9IG1fcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9y
YWdlU2l6ZSgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHRvdGFsU2l6ZSA8IGlubGlu
ZUNhcGFjaXR5KCkgPyAwIDogdG90YWxTaXplIC0gaW5saW5lQ2FwYWNpdHkoKSkgPT0gbnVtYmVy
T2ZPdXRPZkxpbmVTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFsbG9j
YXRlUmFyZURhdGEoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZvaWQgY2xvbmVSYXJlRGF0YUZy
b20oSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7Cg==
</data>
<flag name="review"
          id="208837"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>