<?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>76335</bug_id>
          
          <creation_ts>2012-01-14 10:23:20 -0800</creation_ts>
          <short_desc>Reduce HandleHeap churn when managing weak handles.</short_desc>
          <delta_ts>2012-02-18 10:36:22 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>78740</dup_id>
          
          <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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>536190</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-14 10:23:20 -0800</bug_when>
    <thetext>Storing JSC::Weak&lt;T&gt; in HashMaps is currently quite inefficient as we have to go through the copy constructor when storing/peeking into the map. We should come up with a way to avoid churning the HandleHeap in these scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536196</commentid>
    <comment_count>1</comment_count>
      <attachid>122553</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-14 10:57:12 -0800</bug_when>
    <thetext>Created attachment 122553
Proposed patch

Here&apos;s one way we could improve this - a PassWeak&lt;T&gt; class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536283</commentid>
    <comment_count>2</comment_count>
      <attachid>122572</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-15 12:17:43 -0800</bug_when>
    <thetext>Created attachment 122572
Proposed patch

Let&apos;s see if Win EWS likes this better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536711</commentid>
    <comment_count>3</comment_count>
      <attachid>122572</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-16 12:33:04 -0800</bug_when>
    <thetext>Comment on attachment 122572
Proposed patch

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

Just curious: Is this performance issue measurable somewhere?

PassWeak&lt;T&gt; seems like a good idea to me, but it needs to work like PassOwnPtr, not like PassRefPtr, since weak references are single-owner.

&gt; Source/JavaScriptCore/heap/Weak.h:51
&gt; +    PassWeak(const Weak&lt;T&gt;&amp; o)
&gt; +        : m_slot(o.slot())
&gt; +    {
&gt; +    }

The only way to create a PassWeak from a Weak should be to release the Weak. This behavior shares the Handle, which is incorrect, since the original Weak can delete the Handle at any time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549380</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-03 23:14:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 122572 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122572&amp;action=review
&gt; 
&gt; Just curious: Is this performance issue measurable somewhere?

Yeah, we&apos;re hitting the Weak copy ctor in 1% of samples on the Dromaeo dom-query benchmark. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549682</commentid>
    <comment_count>5</comment_count>
      <attachid>125553</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-05 19:51:37 -0800</bug_when>
    <thetext>Created attachment 125553
Proposed patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550457</commentid>
    <comment_count>6</comment_count>
      <attachid>125553</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-06 17:34:24 -0800</bug_when>
    <thetext>Comment on attachment 125553
Proposed patch v2

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

&gt; Source/JavaScriptCore/heap/Weak.h:41
&gt; +    PassWeak(HandleSlot slot) : m_slot(slot) { }

Seems dangerous to take ownership here with just a type conversion. Normally we’d require an explicit adopt function call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557596</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-02-15 14:58:26 -0800</bug_when>
    <thetext>Darn! Somehow, I missed v2 -- I ended up duplicating most of this code in bug 78740. I think I&apos;ll mark this a dup of 78740, since 78740 is a superset, and it addresses Darin&apos;s comment.

*** This bug has been marked as a duplicate of bug 78740 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122553</attachid>
            <date>2012-01-14 10:57:12 -0800</date>
            <delta_ts>2012-01-15 12:17:43 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-76335.diff</filename>
            <type>text/plain</type>
            <size>9066</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRkN2UyNjkuLjcyNzM1NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTE0ICBBbmRyZWFzIEtsaW5n
ICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgSGFuZGxlSGVhcCBj
aHVybiB3aGVuIG1hbmFnaW5nIHdlYWsgaGFuZGxlcy4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNzYzMzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgc2ltcGxlIFBhc3NXZWFrPFQ+IGNsYXNzIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIGEKKyAgICAgICAgd2VhayBoYW5kbGUgd2l0aG91
dCBpbnZva2luZyB0aGUgV2VhazxUPiBjb3B5IGNvbnN0cnVjdG9yICh3aGljaCBjYW4gYmUgcXVp
dGUKKyAgICAgICAgZXhwZW5zaXZlIGFzIGl0IGdvZXMgdGhyb3VnaCB0aGUgSGFuZGxlSGVhcCBh
bGxvY2F0b3IgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5LikKKworICAgICAgICAqIGhlYXAvV2Vhay5o
OgorICAgICAgICAoSlNDOjpQYXNzV2Vhazo6UGFzc1dlYWspOgorICAgICAgICAoSlNDOjpQYXNz
V2Vhazo6cmVsZWFzZUhhbmRsZSk6CisgICAgICAgIChKU0M6OlBhc3NXZWFrOjpnZXQpOgorICAg
ICAgICAoSlNDOjpXZWFrOjpXZWFrKToKKyAgICAgICAgKEpTQzo6V2Vhazo6cmVsZWFzZSk6CisK
KyAgICAgICAgICAgIEFkZGVkIFBhc3NXZWFrPFQ+IGFuZCBtYWtlIGl0IHRoZSBQZWVrVHlwZS9Q
YXNzSW5UeXBlIGZvciBIYXNoTWFwPFdlYWs+LgorCisgICAgICAgICogaml0L0pJVFN0dWJzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKToKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGU6Omxv
b2t1cE9yQ3JlYXRlKToKKworICAgICAgICAgICAgVXNlIFdlYWs8VD46OnJlbGVhc2UoKSB3aGVu
IG1vdmluZyB3ZWFrIGhhbmRsZXMgaW50byBIYXNoTWFwcy4KKwogMjAxMi0wMS0xMyAgWXVxaWFu
ZyBYaWFuICA8eXVxaWFuZy54aWFuQGludGVsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCBhZnRlciByMTA0Nzg3IGlmIEpJVF9WRVJCT1NFX09TUiBpcyBkZWZpbmVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9XZWFrLmgKaW5kZXggZjBjMDI4ZC4uNTJhZTYxMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWsuaApAQCAtMzMsMTEgKzMzLDQxIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1dlYWsgeworcHVibGljOgorICAgIFBh
c3NXZWFrKCkKKyAgICAgICAgOiBtX3Nsb3QoMCkKKyAgICB7CisgICAgfQorCisgICAgUGFzc1dl
YWsoSGFuZGxlU2xvdCBzbG90KQorICAgICAgICA6IG1fc2xvdChzbG90KQorICAgIHsKKyAgICB9
CisKKyAgICBQYXNzV2Vhayhjb25zdCBXZWFrPFQ+JiBvKQorICAgICAgICA6IG1fc2xvdChvLnNs
b3QoKSkKKyAgICB7CisgICAgfQorCisgICAgSGFuZGxlU2xvdCByZWxlYXNlSGFuZGxlKCkgY29u
c3QKKyAgICB7CisgICAgICAgIEhhbmRsZVNsb3QgaGFuZGxlID0gbV9zbG90OworICAgICAgICBj
b25zdF9jYXN0PFBhc3NXZWFrKj4odGhpcyktPm1fc2xvdCA9IDA7CisgICAgICAgIHJldHVybiBo
YW5kbGU7CisgICAgfQorCisgICAgdHlwZW5hbWUgSGFuZGxlVHlwZXM8VD46OkV4dGVybmFsVHlw
ZSBnZXQoKSBjb25zdCB7IHJldHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0RnJvbVNsb3QobV9zbG90
KTsgfQorCitwcml2YXRlOgorICAgIEhhbmRsZVNsb3QgbV9zbG90OworfTsKKwogLy8gQSB3ZWFr
bHkgcmVmZXJlbmNlZCBoYW5kbGUgdGhhdCBiZWNvbWVzIDAgd2hlbiB0aGUgdmFsdWUgaXQgcG9p
bnRzIHRvIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFdlYWsgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKICAgICB1c2luZyBIYW5kbGU8VD46OnNsb3Q7CiAg
ICAgdXNpbmcgSGFuZGxlPFQ+OjpzZXRTbG90OwotCisgICAgZnJpZW5kIGNsYXNzIFBhc3NXZWFr
PFQ+OwogcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlPFQ+OjpFeHRlcm5hbFR5
cGUgRXh0ZXJuYWxUeXBlOwogCkBAIC00Niw2ICs3NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAorICAgIFdlYWsoY29uc3QgUGFzc1dlYWs8VD4mIG8pCisgICAgICAgIDogSGFuZGxlPFQ+
KG8ucmVsZWFzZUhhbmRsZSgpKQorICAgIHsKKyAgICB9CisKICAgICBXZWFrKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlID0gRXh0ZXJuYWxUeXBlKCksIFdlYWtI
YW5kbGVPd25lciogd2Vha093bmVyID0gMCwgdm9pZCogY29udGV4dCA9IDApCiAgICAgICAgIDog
SGFuZGxlPFQ+KGdsb2JhbERhdGEuaGVhcC5oYW5kbGVIZWFwKCktPmFsbG9jYXRlKCkpCiAgICAg
ewpAQCAtMTM3LDYgKzE3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCisgICAgUGFzc1dlYWs8VD4gcmVsZWFzZSgpCisgICAgeworICAgICAgICByZXR1cm4g
UGFzc1dlYWs8VD4obGVha0hhbmRsZSgpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgc3RhdGlj
IEhhbmRsZVNsb3QgaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxIYW5kbGVTbG90PigtMSk7IH0KIApAQCAtMTYyLDcgKzIwMiwxMCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2ltcGxlQ2xh
c3NWZWN0b3JUcmFpdAogICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRoTWVtY21w
ID0gZmFsc2U7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxK
U0M6OldlYWs8UD4gPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8UD4gPiB7IH07
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8UD4gPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8UD4gPiB7CisgICAgdHlwZWRlZiBKU0M6
OlBhc3NXZWFrPFA+IFBhc3NJblR5cGU7CisgICAgdHlwZWRlZiBKU0M6OlBhc3NXZWFrPFA+IFBl
ZWtUeXBlOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmlu
ZGV4IGVjNGFlMWMuLmUwNjIxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCkBAIC0zNTg0LDcgKzM1ODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklUVGh1bmtz
OjpjdGlTdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0bwogCiBOYXRp
dmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3Ry
dWN0b3IpCiB7Ci0gICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBi
b29sPiBlbnRyeSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjpp
dGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlv
biwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPigpLnJlbGVhc2UoKSk7CiAgICAgaWYgKCEqZW50cnku
Zmlyc3QtPnNlY29uZCkKICAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZC5zZXQoKmdsb2JhbERh
dGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJ
TmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSks
IGNvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykpOwogICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vj
b25kLmdldCgpOwpAQCAtMzU5Miw3ICszNTkyLDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1
bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnUK
IAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9y
IGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYykKIHsKLSAgICBzdGQ6OnBhaXI8SG9zdEZ1
bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHVi
TWFwLT5hZGQoZnVuY3Rpb24sIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7CisgICAgc3RkOjpw
YWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1faG9zdEZ1
bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkucmVs
ZWFzZSgpKTsKICAgICBpZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBjb2RlOwogICAgICAgICBpZiAoZ2VuZXJhdG9yKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKaW5kZXggY2Q5NjMwMS4u
ZmFjY2ExYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWdFeHAqIFJlZ0V4cENhY2hlOjpsb29rdXBPckNyZWF0
ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbAogICAgIC8vIFdl
IG5lZWQgdG8gZG8gYSBzZWNvbmQgbG9va3VwIHRvIGFkZCB0aGUgUmVnRXhwIGFzCiAgICAgLy8g
YWxsb2NhdGluZyBpdCBtYXkgaGF2ZSBjYXVzZWQgYSBnYyBjeWNsZSwgd2hpY2ggaW4KICAgICAv
LyB0dXJuIG1heSBoYXZlIHJlbW92ZWQgaXRlbXMgZnJvbSB0aGUgY2FjaGUuCi0gICAgbV93ZWFr
Q2FjaGUuYWRkKGtleSwgV2VhazxSZWdFeHA+KCptX2dsb2JhbERhdGEsIHJlZ0V4cCwgdGhpcykp
OworICAgIG1fd2Vha0NhY2hlLmFkZChrZXksIFdlYWs8UmVnRXhwPigqbV9nbG9iYWxEYXRhLCBy
ZWdFeHAsIHRoaXMpLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHJlZ0V4cDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDgwMjgwZjIuLmJhZmMwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0wMS0xNCAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVkdWNlIEhhbmRsZUhlYXAgY2h1cm4gd2hlbiBtYW5hZ2luZyB3ZWFrIGhhbmRsZXMuCisg
ICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2MzM1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzU3RyaW5nU2xvd0Nhc2UpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3Q6OmFkZFJ1bnRpbWVPYmplY3QpOgorCisgICAgICAgICAgICBVc2UgV2Vh
azxUPjo6cmVsZWFzZSgpIHdoZW4gbW92aW5nIHdlYWsgaGFuZGxlcyBpbnRvIEhhc2hNYXBzLgor
CiAyMDEyLTAxLTEzICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0MvRE9NIGJpbmRpbmdzOiBSZWR1Y2UgSGFuZGxlSGVhcCBjaHVybiBpbiBjYWNo
ZVdyYXBwZXIoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CmluZGV4IGRlNzhkNDcuLmFmYTMwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcApAQCAtNDksNyArNDksNyBAQCBjb25zdCBKU0M6Okhhc2hUYWJsZSog
Z2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
CiBKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZ0NhY2hl
JiBzdHJpbmdDYWNoZSwgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKIHsKICAgICBKU1N0cmluZyog
d3JhcHBlciA9IGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcoc3RyaW5nSW1wbCkpOwotICAgIHN0cmlu
Z0NhY2hlLmFkZChzdHJpbmdJbXBsLCBXZWFrPEpTU3RyaW5nPihleGVjLT5nbG9iYWxEYXRhKCks
IHdyYXBwZXIsIGN1cnJlbnRXb3JsZChleGVjKS0+c3RyaW5nV3JhcHBlck93bmVyKCksIHN0cmlu
Z0ltcGwpKTsKKyAgICBzdHJpbmdDYWNoZS5hZGQoc3RyaW5nSW1wbCwgV2VhazxKU1N0cmluZz4o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBjdXJyZW50V29ybGQoZXhlYyktPnN0cmluZ1dy
YXBwZXJPd25lcigpLCBzdHJpbmdJbXBsKS5yZWxlYXNlKCkpOwogICAgIHJldHVybiB3cmFwcGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDZi
OGYzMTEuLjhjNWQyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCkBAIC0xMzgsMTAgKzEzOCw5IEBAIGVudW0gUGFyYW1ldGVyTWlzc2luZ1BvbGljeSB7CiAg
ICAgewogICAgICAgICBpZiAoc2V0SW5saW5lQ2FjaGVkV3JhcHBlcih3b3JsZCwgZG9tT2JqZWN0
LCB3cmFwcGVyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcGFpcjxET01PYmplY3RX
cmFwcGVyTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSB3b3JsZC0+bV93cmFwcGVycy5hZGQo
ZG9tT2JqZWN0LCBKU0M6OldlYWs8SlNET01XcmFwcGVyPigpKTsKLSAgICAgICAgQVNTRVJUKGVu
dHJ5LnNlY29uZCk7Ci0gICAgICAgIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+IGhhbmRsZSgqd29y
bGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgd3JhcHBlck93bmVyKHdvcmxkLCBkb21PYmplY3Qp
LCB3cmFwcGVyQ29udGV4dCh3b3JsZCwgZG9tT2JqZWN0KSk7Ci0gICAgICAgIGVudHJ5LmZpcnN0
LT5zZWNvbmQuc3dhcChoYW5kbGUpOworCisgICAgICAgIEFTU0VSVCghd29ybGQtPm1fd3JhcHBl
cnMuY29udGFpbnMoZG9tT2JqZWN0KSk7CisgICAgICAgIHdvcmxkLT5tX3dyYXBwZXJzLmFkZChk
b21PYmplY3QsIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+KCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3
cmFwcGVyLCB3cmFwcGVyT3duZXIod29ybGQsIGRvbU9iamVjdCksIHdyYXBwZXJDb250ZXh0KHdv
cmxkLCBkb21PYmplY3QpKS5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAppbmRleCBkOGI0NzhhLi4xMDAwOWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtMTgxLDcgKzE4MSw3IEBA
IHZvaWQgUm9vdE9iamVjdDo6YWRkUnVudGltZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFJ1bnRpbWVPYmplY3QqIG9iamVjCiAgICAgQVNTRVJUKG1faXNWYWxpZCk7CiAgICAgQVNT
RVJUKCFtX3J1bnRpbWVPYmplY3RzLmdldChvYmplY3QpKTsKIAotICAgIG1fcnVudGltZU9iamVj
dHMuc2V0KG9iamVjdCwgSlNDOjpXZWFrPFJ1bnRpbWVPYmplY3Q+KGdsb2JhbERhdGEsIG9iamVj
dCwgdGhpcykpOworICAgIG1fcnVudGltZU9iamVjdHMuc2V0KG9iamVjdCwgSlNDOjpXZWFrPFJ1
bnRpbWVPYmplY3Q+KGdsb2JhbERhdGEsIG9iamVjdCwgdGhpcykucmVsZWFzZSgpKTsKIH0KIAog
dm9pZCBSb290T2JqZWN0OjpyZW1vdmVSdW50aW1lT2JqZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVj
dCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122572</attachid>
            <date>2012-01-15 12:17:43 -0800</date>
            <delta_ts>2012-02-05 19:51:37 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-76335-v2.diff</filename>
            <type>text/plain</type>
            <size>10981</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">Y29tbWl0IGI3MGQ1ZjBmNTVlYjkxY2EyMGY5M2E4M2U4NzRmZGU0OTVjZTVjOGIKQXV0aG9yOiBB
bmRyZWFzIEtsaW5nIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgpEYXRlOiAgIFNhdCBKYW4gMTQg
MTk6Mjg6MjYgMjAxMiArMDAwMAoKICAgIDc2MzM1OiBSZWR1Y2UgSGFuZGxlSGVhcCBjaHVybiB3
aGVuIG1hbmFnaW5nIHdlYWsgaGFuZGxlcy4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZDdlMjY5Li5mMzk2ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wMS0xNSAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIEhhbmRsZUhlYXAgY2h1cm4gd2hlbiBtYW5hZ2luZyB3ZWFrIGhhbmRs
ZXMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2MzM1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIHNpbXBsZSBQYXNz
V2VhazxUPiBjbGFzcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiBh
CisgICAgICAgIHdlYWsgaGFuZGxlIHdpdGhvdXQgaW52b2tpbmcgdGhlIFdlYWs8VD4gY29weSBj
b25zdHJ1Y3RvciAod2hpY2ggY2FuIGJlIHF1aXRlCisgICAgICAgIGV4cGVuc2l2ZSBhcyBpdCBn
b2VzIHRocm91Z2ggdGhlIEhhbmRsZUhlYXAgYWxsb2NhdG9yIHRvIGNyZWF0ZSBhIHRlbXBvcmFy
eS4pCisKKyAgICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKEpTQzo6UGFzc1dlYWs6OlBh
c3NXZWFrKToKKyAgICAgICAgKEpTQzo6UGFzc1dlYWs6OnJlbGVhc2VIYW5kbGUpOgorICAgICAg
ICAoSlNDOjpQYXNzV2Vhazo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2Vhazo6V2Vhayk6CisgICAg
ICAgIChKU0M6OldlYWs6OnJlbGVhc2UpOgorCisgICAgICAgICAgICBBZGRlZCBQYXNzV2VhazxU
PiBhbmQgbWFrZSBpdCB0aGUgUGVla1R5cGUvUGFzc0luVHlwZSBmb3IgSGFzaE1hcDxXZWFrPi4K
KworICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZS5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cENhY2hlOjpsb29rdXBPckNyZWF0ZSk6CisKKyAgICAgICAgICAg
IFVzZSBXZWFrPFQ+OjpyZWxlYXNlKCkgd2hlbiBtb3Zpbmcgd2VhayBoYW5kbGVzIGludG8gSGFz
aE1hcHMuCisKIDIwMTItMDEtMTMgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjEwNDc4NyBpZiBKSVRf
VkVSQk9TRV9PU1IgaXMgZGVmaW5lZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vhay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCmluZGV4IGYw
YzAyOGQuLjQ4MzBiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dl
YWsuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKQEAgLTMzLDExICsz
Myw0MSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFBhc3NXZWFrIHsKK3B1YmxpYzoKKyAgICBQYXNzV2VhaygpCisgICAgICAgIDogbV9zbG90KDAp
CisgICAgeworICAgIH0KKworICAgIFBhc3NXZWFrKEhhbmRsZVNsb3Qgc2xvdCkKKyAgICAgICAg
OiBtX3Nsb3Qoc2xvdCkKKyAgICB7CisgICAgfQorCisgICAgUGFzc1dlYWsoY29uc3QgV2VhazxU
PiYgbykKKyAgICAgICAgOiBtX3Nsb3Qoby5zbG90KCkpCisgICAgeworICAgIH0KKworICAgIEhh
bmRsZVNsb3QgcmVsZWFzZUhhbmRsZSgpIGNvbnN0CisgICAgeworICAgICAgICBIYW5kbGVTbG90
IGhhbmRsZSA9IG1fc2xvdDsKKyAgICAgICAgY29uc3RfY2FzdDxQYXNzV2Vhayo+KHRoaXMpLT5t
X3Nsb3QgPSAwOworICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0KKworICAgIHR5cGVuYW1l
IEhhbmRsZVR5cGVzPFQ+OjpFeHRlcm5hbFR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4gSGFuZGxl
VHlwZXM8VD46OmdldEZyb21TbG90KG1fc2xvdCk7IH0KKworcHJpdmF0ZToKKyAgICBIYW5kbGVT
bG90IG1fc2xvdDsKK307CisKIC8vIEEgd2Vha2x5IHJlZmVyZW5jZWQgaGFuZGxlIHRoYXQgYmVj
b21lcyAwIHdoZW4gdGhlIHZhbHVlIGl0IHBvaW50cyB0byBpcyBnYXJiYWdlIGNvbGxlY3RlZC4K
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDogcHVibGljIEhhbmRsZTxUPiB7CiAg
ICAgdXNpbmcgSGFuZGxlPFQ+OjpzbG90OwogICAgIHVzaW5nIEhhbmRsZTxUPjo6c2V0U2xvdDsK
LQorICAgIGZyaWVuZCBjbGFzcyBQYXNzV2VhazxUPjsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKIApAQCAtNDYsNiAr
NzYsMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBXZWFrKGNvbnN0IFBhc3NXZWFr
PFQ+JiBvKQorICAgICAgICA6IEhhbmRsZTxUPihvLnJlbGVhc2VIYW5kbGUoKSkKKyAgICB7Cisg
ICAgfQorCiAgICAgV2VhayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2
YWx1ZSA9IEV4dGVybmFsVHlwZSgpLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciA9IDAsIHZv
aWQqIGNvbnRleHQgPSAwKQogICAgICAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmhlYXAuaGFu
ZGxlSGVhcCgpLT5hbGxvY2F0ZSgpKQogICAgIHsKQEAgLTEzNyw2ICsxNzIsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIFBhc3NXZWFrPFQ+IHJlbGVh
c2UoKQorICAgIHsKKyAgICAgICAgaWYgKCFzbG90KCkpCisgICAgICAgICAgICByZXR1cm4gUGFz
c1dlYWs8VD4oKTsKKyAgICAgICAgcmV0dXJuIFBhc3NXZWFrPFQ+KGxlYWtIYW5kbGUoKSk7Cisg
ICAgfQorCiBwcml2YXRlOgogICAgIHN0YXRpYyBIYW5kbGVTbG90IGhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2xvdD4oLTEpOyB9CiAKQEAg
LTE2Miw3ICsyMDQsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0
czxKU0M6OldlYWs8VD4gPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXQKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOwogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFA+ID4gOiBTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8SlNDOjpXZWFrPFA+ID4geyB9OwordGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0
IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFA+ID4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpX
ZWFrPFA+ID4geworICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxQPiBQYXNzSW5UeXBlOworICAg
IHR5cGVkZWYgSlNDOjpQYXNzV2VhazxQPiBQZWVrVHlwZTsKK307CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCBlYzRhZTFjLi5lMDYyMTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzU4NCw3ICszNTg0LDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIEpJVFRodW5rczo6Y3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIFRodW5rR2VuZXJhdG8KIAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0
RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogewotICAgIHN0ZDo6cGFpcjxIb3N0
RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0
dWJNYXAtPmFkZChmdW5jdGlvbiwgV2VhazxOYXRpdmVFeGVjdXRhYmxlPigpKTsKKyAgICBzdGQ6
OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0
RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rpb24sIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKS5y
ZWxlYXNlKCkpOwogICAgIGlmICghKmVudHJ5LmZpcnN0LT5zZWNvbmQpCiAgICAgICAgIGVudHJ5
LmZpcnN0LT5zZWNvbmQuc2V0KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUo
Kmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rp
b24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsK
ICAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZC5nZXQoKTsKQEAgLTM1OTIsNyArMzU5Miw3
IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5r
czo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5z
aWMpCiB7Ci0gICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29s
PiBlbnRyeSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBXZWFrPE5hdGl2
ZUV4ZWN1dGFibGU+KCkpOworICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjppdGVy
YXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwg
V2VhazxOYXRpdmVFeGVjdXRhYmxlPigpLnJlbGVhc2UoKSk7CiAgICAgaWYgKCEqZW50cnkuZmly
c3QtPnNlY29uZCkgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZTsKICAgICAg
ICAgaWYgKGdlbmVyYXRvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGUuY3BwCmluZGV4IGNkOTYzMDEuLmZhY2NhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVnRXhw
KiBSZWdFeHBDYWNoZTo6bG9va3VwT3JDcmVhdGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmlu
ZywgUmVnRXhwRmxhZ3MgZmwKICAgICAvLyBXZSBuZWVkIHRvIGRvIGEgc2Vjb25kIGxvb2t1cCB0
byBhZGQgdGhlIFJlZ0V4cCBhcwogICAgIC8vIGFsbG9jYXRpbmcgaXQgbWF5IGhhdmUgY2F1c2Vk
IGEgZ2MgY3ljbGUsIHdoaWNoIGluCiAgICAgLy8gdHVybiBtYXkgaGF2ZSByZW1vdmVkIGl0ZW1z
IGZyb20gdGhlIGNhY2hlLgotICAgIG1fd2Vha0NhY2hlLmFkZChrZXksIFdlYWs8UmVnRXhwPigq
bV9nbG9iYWxEYXRhLCByZWdFeHAsIHRoaXMpKTsKKyAgICBtX3dlYWtDYWNoZS5hZGQoa2V5LCBX
ZWFrPFJlZ0V4cD4oKm1fZ2xvYmFsRGF0YSwgcmVnRXhwLCB0aGlzKS5yZWxlYXNlKCkpOwogICAg
IHJldHVybiByZWdFeHA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDI4MGYyLi4yYWYwZWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEtMTUgIEFuZHJlYXMgS2xpbmcgIDxhd2Vz
b21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBIYW5kbGVIZWFwIGNodXJuIHdo
ZW4gbWFuYWdpbmcgd2VhayBoYW5kbGVzLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83
NjMzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1N0cmlu
Z1Nsb3dDYXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhY2hlV3JhcHBlcik6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9v
dC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0OjphZGRSdW50aW1lT2Jq
ZWN0KToKKworICAgICAgICAgICAgVXNlIFdlYWs8VD46OnJlbGVhc2UoKSB3aGVuIG1vdmluZyB3
ZWFrIGhhbmRsZXMgaW50byBIYXNoTWFwcy4KKwogMjAxMi0wMS0xMyAgQW5kcmVhcyBLbGluZyAg
PGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDL0RPTSBiaW5kaW5nczogUmVk
dWNlIEhhbmRsZUhlYXAgY2h1cm4gaW4gY2FjaGVXcmFwcGVyKCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBkZTc4ZDQ3Li5hZmEzMDUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdAogSlNWYWx1ZSBqc1N0cmluZ1Nsb3dDYXNlKEV4
ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2FjaGUsIFN0cmluZ0ltcGwqIHN0
cmluZ0ltcGwpCiB7CiAgICAgSlNTdHJpbmcqIHdyYXBwZXIgPSBqc1N0cmluZyhleGVjLCBVU3Ry
aW5nKHN0cmluZ0ltcGwpKTsKLSAgICBzdHJpbmdDYWNoZS5hZGQoc3RyaW5nSW1wbCwgV2VhazxK
U1N0cmluZz4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBjdXJyZW50V29ybGQoZXhlYykt
PnN0cmluZ1dyYXBwZXJPd25lcigpLCBzdHJpbmdJbXBsKSk7CisgICAgc3RyaW5nQ2FjaGUuYWRk
KHN0cmluZ0ltcGwsIFdlYWs8SlNTdHJpbmc+KGV4ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwg
Y3VycmVudFdvcmxkKGV4ZWMpLT5zdHJpbmdXcmFwcGVyT3duZXIoKSwgc3RyaW5nSW1wbCkucmVs
ZWFzZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA2YjhmMzExLi44YzVkMmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMTM4LDEwICsxMzgsOSBAQCBlbnVt
IFBhcmFtZXRlck1pc3NpbmdQb2xpY3kgewogICAgIHsKICAgICAgICAgaWYgKHNldElubGluZUNh
Y2hlZFdyYXBwZXIod29ybGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHBhaXI8RE9NT2JqZWN0V3JhcHBlck1hcDo6aXRlcmF0b3IsIGJvb2w+IGVu
dHJ5ID0gd29ybGQtPm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgSlNDOjpXZWFrPEpTRE9NV3Jh
cHBlcj4oKSk7Ci0gICAgICAgIEFTU0VSVChlbnRyeS5zZWNvbmQpOwotICAgICAgICBKU0M6Oldl
YWs8SlNET01XcmFwcGVyPiBoYW5kbGUoKndvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIHdy
YXBwZXJPd25lcih3b3JsZCwgZG9tT2JqZWN0KSwgd3JhcHBlckNvbnRleHQod29ybGQsIGRvbU9i
amVjdCkpOwotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kLnN3YXAoaGFuZGxlKTsKKworICAg
ICAgICBBU1NFUlQoIXdvcmxkLT5tX3dyYXBwZXJzLmNvbnRhaW5zKGRvbU9iamVjdCkpOworICAg
ICAgICB3b3JsZC0+bV93cmFwcGVycy5hZGQoZG9tT2JqZWN0LCBKU0M6OldlYWs8SlNET01XcmFw
cGVyPigqd29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgd3JhcHBlck93bmVyKHdvcmxkLCBk
b21PYmplY3QpLCB3cmFwcGVyQ29udGV4dCh3b3JsZCwgZG9tT2JqZWN0KSkucmVsZWFzZSgpKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSB2b2lkIHVu
Y2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3Qs
IEpTRE9NV3JhcHBlciogd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5j
cHAKaW5kZXggZDhiNDc4YS4uN2UxZjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfcm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
cm9vdC5jcHAKQEAgLTE3OSw5ICsxNzksOSBAQCB2b2lkIFJvb3RPYmplY3Q6OnVwZGF0ZUdsb2Jh
bE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogdm9pZCBSb290T2JqZWN0Ojph
ZGRSdW50aW1lT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUnVudGltZU9iamVjdCog
b2JqZWN0KQogewogICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgIEFTU0VSVCghbV9ydW50aW1l
T2JqZWN0cy5nZXQob2JqZWN0KSk7CisgICAgQVNTRVJUKCFtX3J1bnRpbWVPYmplY3RzLmNvbnRh
aW5zKG9iamVjdCkpOwogCi0gICAgbV9ydW50aW1lT2JqZWN0cy5zZXQob2JqZWN0LCBKU0M6Oldl
YWs8UnVudGltZU9iamVjdD4oZ2xvYmFsRGF0YSwgb2JqZWN0LCB0aGlzKSk7CisgICAgbV9ydW50
aW1lT2JqZWN0cy5zZXQob2JqZWN0LCBKU0M6OldlYWs8UnVudGltZU9iamVjdD4oZ2xvYmFsRGF0
YSwgb2JqZWN0LCB0aGlzKS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFJvb3RPYmplY3Q6OnJlbW92
ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRkMWEw
NTIuLmI4Y2VmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0xNSAgQW5k
cmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIEhh
bmRsZUhlYXAgY2h1cm4gd2hlbiBtYW5hZ2luZyB3ZWFrIGhhbmRsZXMuCisgICAgICAgIDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzc2MzM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6Z2V0T3JD
cmVhdGVKU09iamVjdCk6CisKKyAgICAgICAgICAgIFVzZSBXZWFrPFQ+OjpyZWxlYXNlKCkgd2hl
biBtb3Zpbmcgd2VhayBoYW5kbGVzIGludG8gSGFzaE1hcHMuCisKIDIwMTItMDEtMTIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtXZWJL
aXQyXSBXZWJLaXRVUklSZXF1ZXN0IGFuZCBXZWJLaXRVUklSZXNwb25zZSBzaG91bGQgd3JhcCB0
aGUgY29ycmVzcG9uZGluZyBXZWJDb3JlIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVj
dE1hcC5jcHAKaW5kZXggNWFhZGQxMy4uNTkxOWVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9i
amVjdE1hcC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBKU09iamVjdCogTlBSdW50aW1lT2JqZWN0
TWFwOjpnZXRPckNyZWF0ZUpTT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAg
ICAgICAgIHJldHVybiBqc05QT2JqZWN0LmdldCgpOwogCiAgICAgSlNOUE9iamVjdCoganNOUE9i
amVjdCA9IEpTTlBPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHRoaXMsIG5wT2JqZWN0KTsK
LSAgICBtX2pzTlBPYmplY3RzLnNldChucE9iamVjdCwgSlNDOjpXZWFrPEpTTlBPYmplY3Q+KGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBqc05QT2JqZWN0LCB0aGlzLCBucE9iamVjdCkpOwor
ICAgIG1fanNOUE9iamVjdHMuc2V0KG5wT2JqZWN0LCBKU0M6OldlYWs8SlNOUE9iamVjdD4oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGpzTlBPYmplY3QsIHRoaXMsIG5wT2JqZWN0KS5yZWxl
YXNlKCkpOwogCiAgICAgcmV0dXJuIGpzTlBPYmplY3Q7CiB9Cg==
</data>
<flag name="review"
          id="123403"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125553</attachid>
            <date>2012-02-05 19:51:37 -0800</date>
            <delta_ts>2012-02-18 10:36:22 -0800</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-76335-v2.diff</filename>
            <type>text/plain</type>
            <size>12090</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ2MmZiYjkuLjc4OGJjNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAyLTA1ICBBbmRyZWFzIEtsaW5n
ICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgSGFuZGxlSGVhcCBj
aHVybiB3aGVuIG1hbmFnaW5nIHdlYWsgaGFuZGxlcy4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNzYzMzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgc2ltcGxlIFBhc3NXZWFrPFQ+IGNsYXNzIHRoYXQgY2FuIGJlIHVz
ZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIGEKKyAgICAgICAgd2VhayBoYW5kbGUgd2l0aG91
dCBpbnZva2luZyB0aGUgV2VhazxUPiBjb3B5IGNvbnN0cnVjdG9yICh3aGljaCBjYW4gYmUgcXVp
dGUKKyAgICAgICAgZXhwZW5zaXZlIGFzIGl0IGdvZXMgdGhyb3VnaCB0aGUgSGFuZGxlSGVhcCBh
bGxvY2F0b3IgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5LikKKworICAgICAgICBUaGlzIGtpbGxzIDEl
IG9mIHRoZSBzYW1wbGVzIG9uIERyb21hZW8ncyBkb20tcXVlcnkgdGVzdC4KKworICAgICAgICAq
IGhlYXAvV2Vhay5oOgorICAgICAgICAoSlNDOjpQYXNzV2Vhazo6UGFzc1dlYWspOgorICAgICAg
ICAoSlNDOjpQYXNzV2Vhazo6cmVsZWFzZUhhbmRsZSk6CisgICAgICAgIChKU0M6OlBhc3NXZWFr
OjpnZXQpOgorICAgICAgICAoSlNDOjpXZWFrOjpXZWFrKToKKyAgICAgICAgKEpTQzo6V2Vhazo6
cmVsZWFzZSk6CisKKyAgICAgICAgICAgIEFkZGVkIFBhc3NXZWFrPFQ+IGFuZCBtYWtlIGl0IHRo
ZSBQYXNzSW5UeXBlL1Bhc3NPdXRUeXBlIGZvciBIYXNoTWFwPFdlYWs+LgorICAgICAgICAgICAg
Rm9yIFBlZWtUeXBlLCB3ZSB1c2UgSGFuZGxlVHlwZXM8VD46OkV4dGVybmFsVHlwZS4KKworICAg
ICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1Yik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OlJlZ0V4cENhY2hlOjpsb29rdXBPckNyZWF0ZSk6CisKKyAgICAgICAgICAgIFVzZSBX
ZWFrPFQ+OjpyZWxlYXNlKCkgd2hlbiBtb3Zpbmcgd2VhayBoYW5kbGVzIGludG8gSGFzaE1hcHMu
CisKIDIwMTItMDItMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrLmgKaW5kZXggZjBjMDI4ZC4uYTBlMzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWsuaApAQCAtMzAsMTQgKzMwLDM0IEBACiAjaW5jbHVkZSAiSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiSGFuZGxlSGVhcC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIk51
bGxQdHIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBQYXNzV2VhayB7CitwdWJsaWM6CisgICAgUGFzc1dlYWsoKSA6IG1fc2xvdCgwKSB7IH0KKyAg
ICBQYXNzV2VhayhzdGQ6Om51bGxwdHJfdCkgOiBtX3Nsb3QoMCkgeyB9CisgICAgUGFzc1dlYWso
SGFuZGxlU2xvdCBzbG90KSA6IG1fc2xvdChzbG90KSB7IH0KKworICAgIEhhbmRsZVNsb3QgcmVs
ZWFzZUhhbmRsZSgpIGNvbnN0CisgICAgeworICAgICAgICBIYW5kbGVTbG90IGhhbmRsZSA9IG1f
c2xvdDsKKyAgICAgICAgY29uc3RfY2FzdDxQYXNzV2Vhayo+KHRoaXMpLT5tX3Nsb3QgPSAwOwor
ICAgICAgICByZXR1cm4gaGFuZGxlOworICAgIH0KKworICAgIHR5cGVuYW1lIEhhbmRsZVR5cGVz
PFQ+OjpFeHRlcm5hbFR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4gSGFuZGxlVHlwZXM8VD46Omdl
dEZyb21TbG90KG1fc2xvdCk7IH0KKworcHJpdmF0ZToKKyAgICBIYW5kbGVTbG90IG1fc2xvdDsK
K307CisKIC8vIEEgd2Vha2x5IHJlZmVyZW5jZWQgaGFuZGxlIHRoYXQgYmVjb21lcyAwIHdoZW4g
dGhlIHZhbHVlIGl0IHBvaW50cyB0byBpcyBnYXJiYWdlIGNvbGxlY3RlZC4KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDogcHVibGljIEhhbmRsZTxUPiB7CiAgICAgdXNpbmcgSGFu
ZGxlPFQ+OjpzbG90OwogICAgIHVzaW5nIEhhbmRsZTxUPjo6c2V0U2xvdDsKLQorICAgIGZyaWVu
ZCBjbGFzcyBQYXNzV2VhazxUPjsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRs
ZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKIApAQCAtNDYsNiArNjYsMTYgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKKyAgICBXZWFrKHN0ZDo6bnVsbHB0cl90KQorICAgICAgICA6
IEhhbmRsZTxUPigpCisgICAgeworICAgIH0KKworICAgIFdlYWsoY29uc3QgUGFzc1dlYWs8VD4m
IG8pCisgICAgICAgIDogSGFuZGxlPFQ+KG8ucmVsZWFzZUhhbmRsZSgpKQorICAgIHsKKyAgICB9
CisKICAgICBXZWFrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVl
ID0gRXh0ZXJuYWxUeXBlKCksIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVyID0gMCwgdm9pZCog
Y29udGV4dCA9IDApCiAgICAgICAgIDogSGFuZGxlPFQ+KGdsb2JhbERhdGEuaGVhcC5oYW5kbGVI
ZWFwKCktPmFsbG9jYXRlKCkpCiAgICAgewpAQCAtMTM3LDYgKzE2NywxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgUGFzc1dlYWs8VD4gcmVsZWFzZSgp
CisgICAgeworICAgICAgICBpZiAoIXNsb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBQYXNzV2Vh
azxUPigpOworICAgICAgICByZXR1cm4gUGFzc1dlYWs8VD4obGVha0hhbmRsZSgpKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgc3RhdGljIEhhbmRsZVNsb3QgaGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PigtMSk7IH0KIApAQCAtMTYy
LDcgKzE5OSwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpT
Qzo6V2VhazxUPiA+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdAogICAgIHN0YXRpYyBjb25zdCBi
b29sIGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OldlYWs8UD4gPiA6IFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxKU0M6OldlYWs8UD4gPiB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFz
aFRyYWl0czxKU0M6OldlYWs8UD4gPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OldlYWs8
UD4gPiB7CisgICAgdHlwZWRlZiBKU0M6OlBhc3NXZWFrPFA+IFBhc3NJblR5cGU7CisgICAgdHlw
ZWRlZiBKU0M6OlBhc3NXZWFrPFA+IFBhc3NPdXRUeXBlOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
SlNDOjpIYW5kbGVUeXBlczxQPjo6RXh0ZXJuYWxUeXBlIFBlZWtUeXBlOworCisgICAgc3RhdGlj
IHN0ZDo6bnVsbHB0cl90IGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICBz
dGF0aWMgUGFzc091dFR5cGUgcGFzc091dChKU0M6OldlYWs8UD4mIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5yZWxlYXNlKCk7IH0KKyAgICBzdGF0aWMgUGFzc091dFR5cGUgcGFzc091dChzdGQ6Om51
bGxwdHJfdCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWso
Y29uc3QgSlNDOjpXZWFrPFA+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBz
dGF0aWMgUGVla1R5cGUgcGVlayhzdGQ6Om51bGxwdHJfdCkgeyByZXR1cm4gMDsgfQorfTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDM4NmQwZGYuLjM0
YmRjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNjAwLDcg
KzM2MDAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0bwogCiBOYXRpdmVFeGVjdXRhYmxlKiBK
SVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7Ci0gICAg
c3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+
KCkpOworICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4g
ZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwgV2VhazxOYXRpdmVF
eGVjdXRhYmxlPigpLnJlbGVhc2UoKSk7CiAgICAgaWYgKCEqZW50cnkuZmlyc3QtPnNlY29uZCkK
ICAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZC5zZXQoKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9i
YWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNvbnN0cnVjdG9yLCBO
b0ludHJpbnNpYykpOwogICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kLmdldCgpOwpAQCAt
MzYwOCw3ICszNjA4LDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rp
b25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnUKIAogTmF0aXZlRXhlY3V0
YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50
cmluc2ljIGludHJpbnNpYykKIHsKLSAgICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6
aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rp
b24sIFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7CisgICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlv
blN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+
YWRkKGZ1bmN0aW9uLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkucmVsZWFzZSgpKTsKICAgICBp
ZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBjb2RlOwogICAgICAgICBpZiAoZ2VuZXJhdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKaW5kZXggY2Q5NjMwMS4uZmFjY2ExYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBSZWdFeHAqIFJlZ0V4cENhY2hlOjpsb29rdXBPckNyZWF0ZShjb25zdCBVU3RyaW5n
JiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbAogICAgIC8vIFdlIG5lZWQgdG8gZG8gYSBz
ZWNvbmQgbG9va3VwIHRvIGFkZCB0aGUgUmVnRXhwIGFzCiAgICAgLy8gYWxsb2NhdGluZyBpdCBt
YXkgaGF2ZSBjYXVzZWQgYSBnYyBjeWNsZSwgd2hpY2ggaW4KICAgICAvLyB0dXJuIG1heSBoYXZl
IHJlbW92ZWQgaXRlbXMgZnJvbSB0aGUgY2FjaGUuCi0gICAgbV93ZWFrQ2FjaGUuYWRkKGtleSwg
V2VhazxSZWdFeHA+KCptX2dsb2JhbERhdGEsIHJlZ0V4cCwgdGhpcykpOworICAgIG1fd2Vha0Nh
Y2hlLmFkZChrZXksIFdlYWs8UmVnRXhwPigqbV9nbG9iYWxEYXRhLCByZWdFeHAsIHRoaXMpLnJl
bGVhc2UoKSk7CiAgICAgcmV0dXJuIHJlZ0V4cDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiNDliM2Qu
LmVmYmRmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMi0wMi0wNSAgQW5kcmVh
cyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKKyAgICAgICAgUmVkdWNlIEhhbmRs
ZUhlYXAgY2h1cm4gd2hlbiBtYW5hZ2luZyB3ZWFrIGhhbmRsZXMuCisgICAgICAgIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzc2MzM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzU3RyaW5nU2xvd0Nhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAgICAgICAgKiBicmlk
Z2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6
OmFkZFJ1bnRpbWVPYmplY3QpOgorCisgICAgICAgICAgICBVc2UgUGFzc1dlYWs8VD4gZm9yIHdl
YWsgaGFuZGxlcyBpbiBIYXNoTWFwcy4KKworMjAxMi0wMi0wNSAgQW5kcmVhcyBLbGluZyAgPGF3
ZXNvbWVrbGluZ0BhcHBsZS5jb20+CisKICAgICAgICAgUkVHUkVTU0lPTihyMTA2NzU2KTogMTAl
IHBlcmZvcm1hbmNlIGhpdCBvbiBET00vVGVtcGxhdGUuCiAgICAgICAgIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzc3ODMxPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAppbmRleCA2OWNjMWI4Li4zZmQxYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgSlNDOjpIYXNoVGFi
bGUqIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdAogSlNWYWx1ZSBqc1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmdD
YWNoZSYgc3RyaW5nQ2FjaGUsIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiB7CiAgICAgSlNTdHJp
bmcqIHdyYXBwZXIgPSBqc1N0cmluZyhleGVjLCBVU3RyaW5nKHN0cmluZ0ltcGwpKTsKLSAgICBz
dHJpbmdDYWNoZS5hZGQoc3RyaW5nSW1wbCwgV2VhazxKU1N0cmluZz4oZXhlYy0+Z2xvYmFsRGF0
YSgpLCB3cmFwcGVyLCBjdXJyZW50V29ybGQoZXhlYyktPnN0cmluZ1dyYXBwZXJPd25lcigpLCBz
dHJpbmdJbXBsKSk7CisgICAgc3RyaW5nQ2FjaGUuYWRkKHN0cmluZ0ltcGwsIFdlYWs8SlNTdHJp
bmc+KGV4ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgY3VycmVudFdvcmxkKGV4ZWMpLT5zdHJp
bmdXcmFwcGVyT3duZXIoKSwgc3RyaW5nSW1wbCkucmVsZWFzZSgpKTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRl
eCA3ZTFhZjIwLi41MjYyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaApAQCAtMTMxLDE3ICsxMzEsMTYgQEAgZW51bSBQYXJhbWV0ZXJNaXNzaW5nUG9saWN5
IHsKICAgICB7CiAgICAgICAgIGlmIChKU0RPTVdyYXBwZXIqIHdyYXBwZXIgPSBnZXRJbmxpbmVD
YWNoZWRXcmFwcGVyKHdvcmxkLCBkb21PYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7Ci0gICAgICAgIHJldHVybiB3b3JsZC0+bV93cmFwcGVycy5nZXQoZG9tT2JqZWN0KS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIHdvcmxkLT5tX3dyYXBwZXJzLmdldChkb21PYmplY3QpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgY2FjaGVX
cmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QsIEpTRE9N
V3JhcHBlciogd3JhcHBlcikKICAgICB7CiAgICAgICAgIGlmIChzZXRJbmxpbmVDYWNoZWRXcmFw
cGVyKHdvcmxkLCBkb21PYmplY3QsIHdyYXBwZXIpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBwYWlyPERPTU9iamVjdFdyYXBwZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IHdv
cmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmplY3QsIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+KCkp
OwotICAgICAgICBBU1NFUlQoZW50cnkuc2Vjb25kKTsKLSAgICAgICAgSlNDOjpXZWFrPEpTRE9N
V3JhcHBlcj4gaGFuZGxlKCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCB3cmFwcGVyT3du
ZXIod29ybGQsIGRvbU9iamVjdCksIHdyYXBwZXJDb250ZXh0KHdvcmxkLCBkb21PYmplY3QpKTsK
LSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZC5zd2FwKGhhbmRsZSk7CisKKyAgICAgICAgQVNT
RVJUKCF3b3JsZC0+bV93cmFwcGVycy5jb250YWlucyhkb21PYmplY3QpKTsKKyAgICAgICAgd29y
bGQtPm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgSlNDOjpXZWFrPEpTRE9NV3JhcHBlcj4oKndv
cmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIHdyYXBwZXJPd25lcih3b3JsZCwgZG9tT2JqZWN0
KSwgd3JhcHBlckNvbnRleHQod29ybGQsIGRvbU9iamVjdCkpLnJlbGVhc2UoKSk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgdm9pZCB1bmNhY2hlV3Jh
cHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBKU0RPTVdy
YXBwZXIqIHdyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9yb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCmluZGV4
IGQ4YjQ3OGEuLjdlMWY2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX3Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3Bw
CkBAIC0xNzksOSArMTc5LDkgQEAgdm9pZCBSb290T2JqZWN0Ojp1cGRhdGVHbG9iYWxPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHZvaWQgUm9vdE9iamVjdDo6YWRkUnVudGlt
ZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJ1bnRpbWVPYmplY3QqIG9iamVjdCkK
IHsKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICBBU1NFUlQoIW1fcnVudGltZU9iamVjdHMu
Z2V0KG9iamVjdCkpOworICAgIEFTU0VSVCghbV9ydW50aW1lT2JqZWN0cy5jb250YWlucyhvYmpl
Y3QpKTsKIAotICAgIG1fcnVudGltZU9iamVjdHMuc2V0KG9iamVjdCwgSlNDOjpXZWFrPFJ1bnRp
bWVPYmplY3Q+KGdsb2JhbERhdGEsIG9iamVjdCwgdGhpcykpOworICAgIG1fcnVudGltZU9iamVj
dHMuc2V0KG9iamVjdCwgSlNDOjpXZWFrPFJ1bnRpbWVPYmplY3Q+KGdsb2JhbERhdGEsIG9iamVj
dCwgdGhpcykucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBSb290T2JqZWN0OjpyZW1vdmVSdW50aW1l
T2JqZWN0KFJ1bnRpbWVPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NDQyOGJmLi4yNWM2
MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMDUgIEFuZHJlYXMgS2xp
bmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBIYW5kbGVIZWFw
IGNodXJuIHdoZW4gbWFuYWdpbmcgd2VhayBoYW5kbGVzLgorICAgICAgICA8aHR0cDovL3dlYmtp
dC5vcmcvYi83NjMzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmdldE9yQ3JlYXRlSlNP
YmplY3QpOgorCisgICAgICAgICAgICBVc2UgUGFzc1dlYWs8VD4gZm9yIHdlYWsgaGFuZGxlcyBp
biBIYXNoTWFwcy4KKwogMjAxMi0wMi0wNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDY2MDY5OD4gQ2xpZW50cyBjYW5ub3QgcHJl
dmVudCBjYWNoaW5nIG9mIGluZGl2aWR1YWwgcmVzcG9uc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuY3BwCmluZGV4IGI0NjU3ZjkuLjZjMTFiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuY3BwCkBAIC05NywxMiArOTcsMTIgQEAgSlNPYmplY3QqIE5QUnVudGltZU9i
amVjdE1hcDo6Z2V0T3JDcmVhdGVKU09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIC8vIElmIHRoaXMgaXMgYW4gTlBKU09iamVjdCwgd2UgY2FuIGp1c3QgZ2V0IHRoZSBK
U09iamVjdCB0aGF0IGl0J3Mgd3JhcHBpbmcuCiAgICAgaWYgKE5QSlNPYmplY3Q6OmlzTlBKU09i
amVjdChucE9iamVjdCkpCiAgICAgICAgIHJldHVybiBOUEpTT2JqZWN0Ojp0b05QSlNPYmplY3Qo
bnBPYmplY3QpLT5qc09iamVjdCgpOwotICAgIAotICAgIGlmIChKU0M6OldlYWs8SlNOUE9iamVj
dD4ganNOUE9iamVjdCA9IG1fanNOUE9iamVjdHMuZ2V0KG5wT2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIGpzTlBPYmplY3QuZ2V0KCk7CisKKyAgICBpZiAoSlNOUE9iamVjdCoganNOUE9iamVjdCA9
IG1fanNOUE9iamVjdHMuZ2V0KG5wT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGpzTlBPYmplY3Q7
CiAKICAgICBKU05QT2JqZWN0KiBqc05QT2JqZWN0ID0gSlNOUE9iamVjdDo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgdGhpcywgbnBPYmplY3QpOwotICAgIG1fanNOUE9iamVjdHMuc2V0KG5wT2JqZWN0
LCBKU0M6OldlYWs8SlNOUE9iamVjdD4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGpzTlBP
YmplY3QsIHRoaXMsIG5wT2JqZWN0KSk7CisgICAgbV9qc05QT2JqZWN0cy5zZXQobnBPYmplY3Qs
IEpTQzo6V2VhazxKU05QT2JqZWN0PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwganNOUE9i
amVjdCwgdGhpcywgbnBPYmplY3QpLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4ganNOUE9iamVj
dDsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>