<?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>31698</bug_id>
          
          <creation_ts>2009-11-19 18:16:13 -0800</creation_ts>
          <short_desc>MessagePorts always look remotely entangled even when closed.</short_desc>
          <delta_ts>2009-11-25 12:04:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165168</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-11-19 18:16:13 -0800</bug_when>
    <thetext>We use the following idiom to see if a port is remotely entangled:

port-&gt;isEntangled() &amp;&amp; !port-&gt;locallyEntangledPort()

The problem is that isEntangled() returns true even when a port is closed, so a worker that is closed looks like it is remotely entangled.

On JSC-based platforms (e.g. Safari), the port will be closed/freed when the parent context exits. Since a remotely entangled MessagePort is sufficient to keep a worker alive, a fire-and-forget worker that just contains this code:

var channel = new MessageChannel();
channel.port1.close();

...will stay alive until the parent document shuts down.

On Chromium, ports leak until the parent *process* closes, thanks to this line in V8GCController.cpp:

        if (port1-&gt;isEntangled() &amp;&amp; !port2)
            wrapper.ClearWeak();

We need a better way to figure out if a port is remotely entangled - one option would be to have isEntangled() return false if the worker has been closed. Right now, the code is a little fuzzy about the distinction between a disentangled/closed port and a *cloned* port - we&apos;ll need to clear that up as well as part of this fix (for example, it&apos;s OK to pass a disentangled port to postMessage(), but it&apos;s not OK to pass a cloned port to postMessage()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165998</commentid>
    <comment_count>1</comment_count>
      <attachid>43748</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-11-23 21:51:32 -0800</bug_when>
    <thetext>Created attachment 43748
proposed patch

The old V8 GC code relied on the fact that a port could not be disentangled during GC, which is clearly incorrect. I updated/simplified this code to do the right thing now (add a reference to entangled ports at the start of GC, and remove the reference from all referenced ports at the end).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166001</commentid>
    <comment_count>2</comment_count>
      <attachid>43749</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-11-23 22:16:23 -0800</bug_when>
    <thetext>Created attachment 43749
Updated patch after removing unnecessary constant

We no longer need to keep around an extra field to store a reference to the locally entangled port, so I removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166523</commentid>
    <comment_count>3</comment_count>
      <attachid>43749</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-25 12:04:36 -0800</bug_when>
    <thetext>Comment on attachment 43749
Updated patch after removing unnecessary constant

Clearing flags on attachment: 43749

Committed r51392: &lt;http://trac.webkit.org/changeset/51392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166524</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-25 12:04:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43748</attachid>
            <date>2009-11-23 21:51:32 -0800</date>
            <delta_ts>2009-11-23 22:16:23 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>7500</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzdhZmRlMi4uMDI3OTY0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0xMS0yMyAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVzc2FnZVBvcnRzIGFsd2F5cyBsb29rIHJlbW90ZWx5IGVudGFu
Z2xlZCBldmVuIHdoZW4gY2xvc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE2OTgKKworICAgICAgICBUZXN0czogRXhpc3RpbmcgdGVzdHMgc3Vm
ZmljZSwgQ2hyb21pdW0gc29hayB0ZXN0IHBhc3NlcyBub3cuCisKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHQ1Byb2xvZ3VlVmlz
aXRvcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgU2ltcGxpZmllZCBHQyBjb2RlIHRvIHJl
ZmxlY3QgdGhlIENocm9taXVtIE1lc3NhZ2VQb3J0IGltcGxlbWVudGF0aW9uCisgICAgICAgIChs
b2NhbGx5RW50YW5nbGVkUG9ydCgpIGFsd2F5cyByZXR1cm5zIGZhbHNlKS4KKyAgICAgICAgKFdl
YkNvcmU6OkdDRXBpbG9ndWVWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICBDbGVh
bmVkIHVwIGVwaWxvZ3VlIGNvZGUgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBwb3J0IGdl
dHMgY2xvc2VkCisgICAgICAgIGluIG1pZC1HQyAoZHVlIHRvIHRoZSBwYXJlbnQgY29udGV4dCBi
ZWluZyBmcmVlZCkuCisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICBOb3cgc2V0cyB0aGUgY2xvc2VkIGZsYWcuCisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyk6CisgICAgICAgIFVw
ZGF0ZWQgdG8gdXNlIG5ldyBpc0Nsb25lZCgpIEFQSSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gaXNF
bnRhbmdsZWQoKSwgd2hpY2ggd2FzIGluY29ycmVjdC4KKyAgICAgICAgKiBkb20vTWVzc2FnZVBv
cnQuaDoKKyAgICAgICAgQWRkZWQgYSBtX2Nsb3NlZCBmbGFnIGFuZCB1cGRhdGVkIGlzRW50YW5n
bGVkKCkgdG8gY2hlY2sgaXQuCisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXNFbnRh
bmdsZWQpOgorICAgICAgICBOb3cgcmV0dXJucyBmYWxzZSBpZiB0aGUgcG9ydCBoYXMgYmVlbiBj
bG9zZWQuCisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aXNDbG9uZWQpOgorICAgICAg
ICBBZGRlZCBuZXcgQVBJIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBjbG9uZWQgYW5kIGNsb3Nl
ZCBwb3J0cyAoY2xvc2VkIHBvcnRzIGNhbiBzdGlsbCBiZSBwYXNzZWQgdG8gcG9zdE1lc3NhZ2Up
LgorCiAyMDA5LTExLTIzICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0ND
b250cm9sbGVyLmNwcAppbmRleCBiZDU0NWJiLi5iNzFiMTFkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtMjA0LDM1ICsyMDQsMTEgQEAgcHVibGljOgogICAgIC8v
IGhhcyB0aGUgZHJhd2JhY2sgdGhhdCB0aGUgd3JhcHBlcnMgYXJlICJlbnRhbmdsZWQvdW5lbnRh
bmdsZWQiIGZvciBlYWNoCiAgICAgLy8gR0MgZXZlbiB0aG91Z2ggdGhlaXIgZW50YWdsZW1lbnQg
bW9zdCBsaWtlbHkgaXMgc3RpbGwgdGhlIHNhbWUuCiAgICAgaWYgKHR5cGUgPT0gVjhDbGFzc0lu
ZGV4OjpNRVNTQUdFUE9SVCkgewotICAgICAgICAvLyBHZXQgdGhlIHBvcnQgYW5kIGl0cyBlbnRh
bmdsZWQgcG9ydC4KKyAgICAgICAgLy8gTWFyayBlYWNoIHBvcnQgYXMgaW4tdXNlIGlmIGl0J3Mg
ZW50YW5nbGVkLiBGb3Igc2ltcGxpY2l0eSdzIHNha2UsIHdlIGFzc3VtZSBhbGwgcG9ydHMgYXJl
IHJlbW90ZWx5IGVudGFuZ2xlZCwKKyAgICAgICAgLy8gc2luY2UgdGhlIENocm9taXVtIHBvcnQg
aW1wbGVtZW50YXRpb24gY2FuJ3QgdGVsbCB0aGUgZGlmZmVyZW5jZS4KICAgICAgICAgTWVzc2Fn
ZVBvcnQqIHBvcnQxID0gc3RhdGljX2Nhc3Q8TWVzc2FnZVBvcnQqPihvYmplY3QpOwotICAgICAg
ICBNZXNzYWdlUG9ydCogcG9ydDIgPSBwb3J0MS0+bG9jYWxseUVudGFuZ2xlZFBvcnQoKTsKLQot
ICAgICAgICAvLyBJZiB3ZSBhcmUgcmVtb3RlbHkgZW50YW5nbGVkLCB0aGVuIG1hcmsgdGhpcyBv
YmplY3QgYXMgcmVhY2hhYmxlCi0gICAgICAgIC8vICh3ZSBjYW4ndCBkZXRlcm1pbmUgcmVhY2hh
YmlsaXR5IGRpcmVjdGx5IGFzIHRoZSByZW1vdGUgb2JqZWN0IGlzCi0gICAgICAgIC8vIG91dC1v
Zi1wcm9jKS4KLSAgICAgICAgaWYgKHBvcnQxLT5pc0VudGFuZ2xlZCgpICYmICFwb3J0MikKKyAg
ICAgICAgaWYgKHBvcnQxLT5pc0VudGFuZ2xlZCgpKQogICAgICAgICAgICAgd3JhcHBlci5DbGVh
cldlYWsoKTsKLQotICAgICAgICBpZiAocG9ydDIpIHsKLSAgICAgICAgICAgIC8vIEFzIHBvcnRz
IGFyZSBhbHdheXMgZW50YW5nbGVkIGluIHBhaXJzIG9ubHkgcGVyZm9ybSB0aGUgZW50YW5nbGVt
ZW50Ci0gICAgICAgICAgICAvLyBvbmNlIGZvciBlYWNoIHBhaXIgKHNlZSBBU1NFUlQgaW4gTWVz
c2FnZVBvcnQ6OnVuZW50YW5nbGUoKSkuCi0gICAgICAgICAgICBpZiAocG9ydDEgPCBwb3J0Mikg
ewotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3J0MVdyYXBwZXIgPSBW
OERPTVdyYXBwZXI6OmpzV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChwb3J0MSk7Ci0gICAgICAg
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnQyV3JhcHBlciA9IFY4RE9NV3JhcHBl
cjo6anNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHBvcnQyKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocG9ydDFXcmFwcGVyLT5Jc09iamVjdCgpKTsKLSAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHBvcnQxV3JhcHBlciktPlNldEludGVybmFsRmllbGQoVjhD
dXN0b206OmtNZXNzYWdlUG9ydEVudGFuZ2xlZFBvcnRJbmRleCwgcG9ydDJXcmFwcGVyKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQocG9ydDJXcmFwcGVyLT5Jc09iamVjdCgpKTsKLSAgICAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHBvcnQyV3JhcHBlciktPlNldElu
dGVybmFsRmllbGQoVjhDdXN0b206OmtNZXNzYWdlUG9ydEVudGFuZ2xlZFBvcnRJbmRleCwgcG9y
dDFXcmFwcGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIFJlbW92ZSB0aGUgd3JhcHBlciBlbnRhbmdsZW1lbnQgd2hlbiBhIHBvcnQgaXMgbm90IGVu
dGFuZ2xlZC4KLSAgICAgICAgICAgIGlmIChWOERPTVdyYXBwZXI6OmRvbU9iamVjdEhhc0pTV3Jh
cHBlcihwb3J0MSkpIHsKLSAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6anNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHBvcnQxKTsK
LSAgICAgICAgICAgICAgICBBU1NFUlQod3JhcHBlci0+SXNPYmplY3QoKSk7Ci0gICAgICAgICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3cmFwcGVyKS0+U2V0SW50ZXJuYWxG
aWVsZChWOEN1c3RvbTo6a01lc3NhZ2VQb3J0RW50YW5nbGVkUG9ydEluZGV4LCB2ODo6VW5kZWZp
bmVkKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogfQogfTsKQEAgLTQwNSwx
MyArMzgxLDExIEBAIEFDVElWRV9ET01fT0JKRUNUX1RZUEVTKE1BS0VfQ0FTRSkKIAogICAgICAg
ICBpZiAodHlwZSA9PSBWOENsYXNzSW5kZXg6Ok1FU1NBR0VQT1JUKSB7CiAgICAgICAgICAgICBN
ZXNzYWdlUG9ydCogcG9ydDEgPSBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydCo+KG9iamVjdCk7Ci0g
ICAgICAgICAgICBNZXNzYWdlUG9ydCogcG9ydDIgPSBwb3J0MS0+bG9jYWxseUVudGFuZ2xlZFBv
cnQoKTsKLSAgICAgICAgICAgIGlmIChwb3J0MS0+aXNFbnRhbmdsZWQoKSAmJiAhcG9ydDIpIHsK
LSAgICAgICAgICAgICAgICAvLyBXZSBtYXJrZWQgdGhpcyBwb3J0IGFzIHJlYWNoYWJsZSBpbiBH
Q1Byb2xvZ3VlVmlzaXRvci4gIFVuZG8gdGhpcyBub3cgc2luY2UgdGhlCi0gICAgICAgICAgICAg
ICAgLy8gcG9ydCBjb3VsZCBiZSBub3QgcmVhY2hhYmxlIGluIHRoZSBmdXR1cmUgaWYgaXQgZ2V0
cyBkaXNlbnRhbmdsZWQgKGFuZCBhbHNvCi0gICAgICAgICAgICAgICAgLy8gR0NQcm9sb2d1ZVZp
c2l0b3IgZXhwZWN0cyB0byBzZWUgYWxsIGhhbmRsZXMgbWFya2VkIGFzIHdlYWspLgorICAgICAg
ICAgICAgLy8gV2UgbWFya2VkIHRoaXMgcG9ydCBhcyByZWFjaGFibGUgaW4gR0NQcm9sb2d1ZVZp
c2l0b3IuICBVbmRvIHRoaXMgbm93IHNpbmNlIHRoZQorICAgICAgICAgICAgLy8gcG9ydCBjb3Vs
ZCBiZSBub3QgcmVhY2hhYmxlIGluIHRoZSBmdXR1cmUgaWYgaXQgZ2V0cyBkaXNlbnRhbmdsZWQg
KGFuZCBhbHNvCisgICAgICAgICAgICAvLyBHQ1Byb2xvZ3VlVmlzaXRvciBleHBlY3RzIHRvIHNl
ZSBhbGwgaGFuZGxlcyBtYXJrZWQgYXMgd2VhaykuCisgICAgICAgICAgICBpZiAoIXdyYXBwZXIu
SXNXZWFrKCkgJiYgIXdyYXBwZXIuSXNOZWFyRGVhdGgoKSkKICAgICAgICAgICAgICAgICB3cmFw
cGVyLk1ha2VXZWFrKHBvcnQxLCAmRE9NRGF0YVN0b3JlOjp3ZWFrQWN0aXZlRE9NT2JqZWN0Q2Fs
bGJhY2spOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNw
cAppbmRleCA5ZjZlNjQ5Li4xMDUxOTIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAKKysrIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC00MSw2ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIDogbV9lbnRhbmds
ZWRDaGFubmVsKDApCiAgICAgLCBtX3N0YXJ0ZWQoZmFsc2UpCisgICAgLCBtX2Nsb3NlZChmYWxz
ZSkKICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKIHsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNyZWF0ZWRNZXNzYWdlUG9ydCh0
aGlzKTsKQEAgLTEzMSw2ICsxMzIsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpzdGFydCgpCiAKIHZv
aWQgTWVzc2FnZVBvcnQ6OmNsb3NlKCkKIHsKKyAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYg
KCFtX2VudGFuZ2xlZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VudGFuZ2xlZENo
YW5uZWwtPmNsb3NlKCk7CkBAIC0yMDAsNyArMjAyLDcgQEAgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoY29uc3QgTWVzc2Fn
ZVAKICAgICAvLyBXYWxrIHRoZSBpbmNvbWluZyBhcnJheSAtIGlmIHRoZXJlIGFyZSBhbnkgZHVw
bGljYXRlIHBvcnRzLCBvciBudWxsIHBvcnRzIG9yIGNsb25lZCBwb3J0cywgdGhyb3cgYW4gZXJy
b3IgKHBlciBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjKS4KICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBvcnRzLT5zaXplKCk7ICsraSkgewogICAgICAgICBNZXNzYWdl
UG9ydCogcG9ydCA9ICgqcG9ydHMpW2ldLmdldCgpOwotICAgICAgICBpZiAoIXBvcnQgfHwgIXBv
cnQtPmlzRW50YW5nbGVkKCkgfHwgcG9ydFNldC5jb250YWlucyhwb3J0KSkgeworICAgICAgICBp
ZiAoIXBvcnQgfHwgcG9ydC0+aXNDbG9uZWQoKSB8fCBwb3J0U2V0LmNvbnRhaW5zKHBvcnQpKSB7
CiAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IDBhYjBmNTAuLmFlMWViMjIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaApAQCAtMTAzLDcgKzEwMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8v
IFJldHVybnMgbnVsbCBvdGhlcndpc2UuCiAgICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgdXNlZCBz
b2xlbHkgdG8gZW5hYmxlIGEgR0Mgb3B0aW1pemF0aW9uLiBTb21lIHBsYXRmb3JtcyBtYXkgbm90
IGJlIGFibGUgdG8gZGV0ZXJtaW5lIG93bmVyc2hpcCBvZiB0aGUgcmVtb3RlIHBvcnQgKHNpbmNl
IGl0IG1heSBsaXZlIGNyb3NzLXByb2Nlc3MpIC0gdGhvc2UgcGxhdGZvcm1zIG1heSBhbHdheXMg
cmV0dXJuIG51bGwuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBsb2NhbGx5RW50YW5nbGVkUG9ydCgp
OwotICAgICAgICBib29sIGlzRW50YW5nbGVkKCkgeyByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVs
OyB9CisgICAgICAgIC8vIEEgcG9ydCBzdGFydHMgb3V0IGl0cyBsaWZlIGVudGFuZ2xlZCwgYW5k
IHJlbWFpbnMgZW50YW5nbGVkIHVudGlsIGl0IGlzIGNsb3NlZCBvciBpcyBjbG9uZWQuCisgICAg
ICAgIGJvb2wgaXNFbnRhbmdsZWQoKSB7IHJldHVybiAhbV9jbG9zZWQgJiYgIWlzQ2xvbmVkKCk7
IH0KKyAgICAgICAgLy8gQSBwb3J0IGlzIGNsb25lZCBpZiBpdHMgZW50YW5nbGVkIGNoYW5uZWwg
aGFzIGJlZW4gcmVtb3ZlZCBhbmQgc2VudCB0byBhIG5ldyBvd25lciB2aWEgcG9zdE1lc3NhZ2Uo
KS4KKyAgICAgICAgYm9vbCBpc0Nsb25lZCgpIHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7
IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIE1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKQEAgLTExNiw2ICsxMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fZW50YW5nbGVkQ2hhbm5lbDsKIAogICAgICAg
ICBib29sIG1fc3RhcnRlZDsKKyAgICAgICAgYm9vbCBtX2Nsb3NlZDsKIAogICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43749</attachid>
            <date>2009-11-23 22:16:23 -0800</date>
            <delta_ts>2009-11-25 12:04:36 -0800</delta_ts>
            <desc>Updated patch after removing unnecessary constant</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>8516</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzdhZmRlMi4uODA4Njc2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAwOS0xMS0yMyAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVzc2FnZVBvcnRzIGFsd2F5cyBsb29rIHJlbW90ZWx5IGVudGFu
Z2xlZCBldmVuIHdoZW4gY2xvc2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE2OTgKKworICAgICAgICBUZXN0czogRXhpc3RpbmcgdGVzdHMgc3Vm
ZmljZSwgQ2hyb21pdW0gc29hayB0ZXN0IHBhc3NlcyBub3cuCisKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgIFJlbW92ZWQga01lc3NhZ2VQ
b3J0RW50YW5nbGVkUG9ydEluZGV4IHdoaWNoIGlzIG5vIGxvbmdlciB1c2VkLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdDUHJv
bG9ndWVWaXNpdG9yOjp2aXNpdERPTVdyYXBwZXIpOgorICAgICAgICBTaW1wbGlmaWVkIEdDIGNv
ZGUgdG8gcmVmbGVjdCB0aGUgQ2hyb21pdW0gTWVzc2FnZVBvcnQgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgKGxvY2FsbHlFbnRhbmdsZWRQb3J0KCkgYWx3YXlzIHJldHVybnMgZmFsc2UpLgorICAg
ICAgICAoV2ViQ29yZTo6R0NFcGlsb2d1ZVZpc2l0b3I6OnZpc2l0RE9NV3JhcHBlcik6CisgICAg
ICAgIENsZWFuZWQgdXAgZXBpbG9ndWUgY29kZSB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhl
IHBvcnQgZ2V0cyBjbG9zZWQKKyAgICAgICAgaW4gbWlkLUdDIChkdWUgdG8gdGhlIHBhcmVudCBj
b250ZXh0IGJlaW5nIGZyZWVkKS4KKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0OjpjbG9zZSk6CisgICAgICAgIE5vdyBzZXRzIHRoZSBjbG9zZWQgZmxh
Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKToKKyAg
ICAgICAgVXBkYXRlZCB0byB1c2UgbmV3IGlzQ2xvbmVkKCkgQVBJIGluc3RlYWQgb2YgcmVseWlu
ZyBvbiBpc0VudGFuZ2xlZCgpLCB3aGljaCB3YXMgaW5jb3JyZWN0LgorICAgICAgICAqIGRvbS9N
ZXNzYWdlUG9ydC5oOgorICAgICAgICBBZGRlZCBhIG1fY2xvc2VkIGZsYWcgYW5kIHVwZGF0ZWQg
aXNFbnRhbmdsZWQoKSB0byBjaGVjayBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Ojppc0VudGFuZ2xlZCk6CisgICAgICAgIE5vdyByZXR1cm5zIGZhbHNlIGlmIHRoZSBwb3J0IGhh
cyBiZWVuIGNsb3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc0Nsb25lZCk6
CisgICAgICAgIEFkZGVkIG5ldyBBUEkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGNsb25lZCBh
bmQgY2xvc2VkIHBvcnRzIChjbG9zZWQgcG9ydHMgY2FuIHN0aWxsIGJlIHBhc3NlZCB0byBwb3N0
TWVzc2FnZSkuCisKIDIwMDktMTEtMjMgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGJkNTQ1YmIuLmI3MWIxMWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC0yMDQsMzUgKzIwNCwxMSBAQCBwdWJsaWM6
CiAgICAgLy8gaGFzIHRoZSBkcmF3YmFjayB0aGF0IHRoZSB3cmFwcGVycyBhcmUgImVudGFuZ2xl
ZC91bmVudGFuZ2xlZCIgZm9yIGVhY2gKICAgICAvLyBHQyBldmVuIHRob3VnaCB0aGVpciBlbnRh
Z2xlbWVudCBtb3N0IGxpa2VseSBpcyBzdGlsbCB0aGUgc2FtZS4KICAgICBpZiAodHlwZSA9PSBW
OENsYXNzSW5kZXg6Ok1FU1NBR0VQT1JUKSB7Ci0gICAgICAgIC8vIEdldCB0aGUgcG9ydCBhbmQg
aXRzIGVudGFuZ2xlZCBwb3J0LgorICAgICAgICAvLyBNYXJrIGVhY2ggcG9ydCBhcyBpbi11c2Ug
aWYgaXQncyBlbnRhbmdsZWQuIEZvciBzaW1wbGljaXR5J3Mgc2FrZSwgd2UgYXNzdW1lIGFsbCBw
b3J0cyBhcmUgcmVtb3RlbHkgZW50YW5nbGVkLAorICAgICAgICAvLyBzaW5jZSB0aGUgQ2hyb21p
dW0gcG9ydCBpbXBsZW1lbnRhdGlvbiBjYW4ndCB0ZWxsIHRoZSBkaWZmZXJlbmNlLgogICAgICAg
ICBNZXNzYWdlUG9ydCogcG9ydDEgPSBzdGF0aWNfY2FzdDxNZXNzYWdlUG9ydCo+KG9iamVjdCk7
Ci0gICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0MiA9IHBvcnQxLT5sb2NhbGx5RW50YW5nbGVkUG9y
dCgpOwotCi0gICAgICAgIC8vIElmIHdlIGFyZSByZW1vdGVseSBlbnRhbmdsZWQsIHRoZW4gbWFy
ayB0aGlzIG9iamVjdCBhcyByZWFjaGFibGUKLSAgICAgICAgLy8gKHdlIGNhbid0IGRldGVybWlu
ZSByZWFjaGFiaWxpdHkgZGlyZWN0bHkgYXMgdGhlIHJlbW90ZSBvYmplY3QgaXMKLSAgICAgICAg
Ly8gb3V0LW9mLXByb2MpLgotICAgICAgICBpZiAocG9ydDEtPmlzRW50YW5nbGVkKCkgJiYgIXBv
cnQyKQorICAgICAgICBpZiAocG9ydDEtPmlzRW50YW5nbGVkKCkpCiAgICAgICAgICAgICB3cmFw
cGVyLkNsZWFyV2VhaygpOwotCi0gICAgICAgIGlmIChwb3J0MikgewotICAgICAgICAgICAgLy8g
QXMgcG9ydHMgYXJlIGFsd2F5cyBlbnRhbmdsZWQgaW4gcGFpcnMgb25seSBwZXJmb3JtIHRoZSBl
bnRhbmdsZW1lbnQKLSAgICAgICAgICAgIC8vIG9uY2UgZm9yIGVhY2ggcGFpciAoc2VlIEFTU0VS
VCBpbiBNZXNzYWdlUG9ydDo6dW5lbnRhbmdsZSgpKS4KLSAgICAgICAgICAgIGlmIChwb3J0MSA8
IHBvcnQyKSB7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnQxV3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6anNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHBvcnQxKTsK
LSAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9ydDJXcmFwcGVyID0gVjhE
T01XcmFwcGVyOjpqc1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QocG9ydDIpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChwb3J0MVdyYXBwZXItPklzT2JqZWN0KCkpOwotICAgICAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QocG9ydDFXcmFwcGVyKS0+U2V0SW50ZXJuYWxG
aWVsZChWOEN1c3RvbTo6a01lc3NhZ2VQb3J0RW50YW5nbGVkUG9ydEluZGV4LCBwb3J0MldyYXBw
ZXIpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwb3J0MldyYXBwZXItPklzT2JqZWN0KCkpOwot
ICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QocG9ydDJXcmFwcGVy
KS0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a01lc3NhZ2VQb3J0RW50YW5nbGVkUG9ydElu
ZGV4LCBwb3J0MVdyYXBwZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSB3cmFwcGVyIGVudGFuZ2xlbWVudCB3aGVuIGEgcG9ydCBp
cyBub3QgZW50YW5nbGVkLgotICAgICAgICAgICAgaWYgKFY4RE9NV3JhcHBlcjo6ZG9tT2JqZWN0
SGFzSlNXcmFwcGVyKHBvcnQxKSkgewotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpqc1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qo
cG9ydDEpOwotICAgICAgICAgICAgICAgIEFTU0VSVCh3cmFwcGVyLT5Jc09iamVjdCgpKTsKLSAg
ICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXIpLT5TZXRJ
bnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprTWVzc2FnZVBvcnRFbnRhbmdsZWRQb3J0SW5kZXgsIHY4
OjpVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiB9CiB9OwpA
QCAtNDA1LDEzICszODEsMTEgQEAgQUNUSVZFX0RPTV9PQkpFQ1RfVFlQRVMoTUFLRV9DQVNFKQog
CiAgICAgICAgIGlmICh0eXBlID09IFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQpIHsKICAgICAg
ICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0MSA9IHN0YXRpY19jYXN0PE1lc3NhZ2VQb3J0Kj4ob2Jq
ZWN0KTsKLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0MiA9IHBvcnQxLT5sb2NhbGx5RW50
YW5nbGVkUG9ydCgpOwotICAgICAgICAgICAgaWYgKHBvcnQxLT5pc0VudGFuZ2xlZCgpICYmICFw
b3J0MikgewotICAgICAgICAgICAgICAgIC8vIFdlIG1hcmtlZCB0aGlzIHBvcnQgYXMgcmVhY2hh
YmxlIGluIEdDUHJvbG9ndWVWaXNpdG9yLiAgVW5kbyB0aGlzIG5vdyBzaW5jZSB0aGUKLSAgICAg
ICAgICAgICAgICAvLyBwb3J0IGNvdWxkIGJlIG5vdCByZWFjaGFibGUgaW4gdGhlIGZ1dHVyZSBp
ZiBpdCBnZXRzIGRpc2VudGFuZ2xlZCAoYW5kIGFsc28KLSAgICAgICAgICAgICAgICAvLyBHQ1By
b2xvZ3VlVmlzaXRvciBleHBlY3RzIHRvIHNlZSBhbGwgaGFuZGxlcyBtYXJrZWQgYXMgd2Vhayku
CisgICAgICAgICAgICAvLyBXZSBtYXJrZWQgdGhpcyBwb3J0IGFzIHJlYWNoYWJsZSBpbiBHQ1By
b2xvZ3VlVmlzaXRvci4gIFVuZG8gdGhpcyBub3cgc2luY2UgdGhlCisgICAgICAgICAgICAvLyBw
b3J0IGNvdWxkIGJlIG5vdCByZWFjaGFibGUgaW4gdGhlIGZ1dHVyZSBpZiBpdCBnZXRzIGRpc2Vu
dGFuZ2xlZCAoYW5kIGFsc28KKyAgICAgICAgICAgIC8vIEdDUHJvbG9ndWVWaXNpdG9yIGV4cGVj
dHMgdG8gc2VlIGFsbCBoYW5kbGVzIG1hcmtlZCBhcyB3ZWFrKS4KKyAgICAgICAgICAgIGlmICgh
d3JhcHBlci5Jc1dlYWsoKSAmJiAhd3JhcHBlci5Jc05lYXJEZWF0aCgpKQogICAgICAgICAgICAg
ICAgIHdyYXBwZXIuTWFrZVdlYWsocG9ydDEsICZET01EYXRhU3RvcmU6OndlYWtBY3RpdmVET01P
YmplY3RDYWxsYmFjayk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAppbmRleCBmZDE3M2Jh
Li45NjE4N2E1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRp
bmcuaApAQCAtMTIwLDggKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBrTWVzc2FnZUNoYW5uZWxJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVs
dFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAyOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga01lc3NhZ2VQb3J0UmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtNZXNzYWdlUG9ydEVu
dGFuZ2xlZFBvcnRJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga01lc3NhZ2VQb3J0SW50ZXJuYWxGaWVsZENvdW50
ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMjsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBrTWVzc2FnZVBvcnRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBw
ZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29ya2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDlm
NmU2NDkuLjEwNTE5MjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAor
KysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogTWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBtX2VudGFuZ2xlZENoYW5uZWwo
MCkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKKyAgICAsIG1fY2xvc2VkKGZhbHNlKQogICAgICwg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y3JlYXRlZE1lc3NhZ2VQb3J0KHRoaXMpOwpAQCAt
MTMxLDYgKzEzMiw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OnN0YXJ0KCkKIAogdm9pZCBNZXNzYWdl
UG9ydDo6Y2xvc2UoKQogeworICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBpZiAoIW1fZW50YW5n
bGVkQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+Y2xv
c2UoKTsKQEAgLTIwMCw3ICsyMDIsNyBAQCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUAogICAgIC8v
IFdhbGsgdGhlIGluY29taW5nIGFycmF5IC0gaWYgdGhlcmUgYXJlIGFueSBkdXBsaWNhdGUgcG9y
dHMsIG9yIG51bGwgcG9ydHMgb3IgY2xvbmVkIHBvcnRzLCB0aHJvdyBhbiBlcnJvciAocGVyIHNl
Y3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMpLgogICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0
ID0gKCpwb3J0cylbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghcG9ydCB8fCAhcG9ydC0+aXNFbnRh
bmdsZWQoKSB8fCBwb3J0U2V0LmNvbnRhaW5zKHBvcnQpKSB7CisgICAgICAgIGlmICghcG9ydCB8
fCBwb3J0LT5pc0Nsb25lZCgpIHx8IHBvcnRTZXQuY29udGFpbnMocG9ydCkpIHsKICAgICAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaCBiL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmgKaW5kZXggMGFiMGY1MC4uYWUxZWIyMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC0x
MDMsNyArMTAzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBu
dWxsIG90aGVyd2lzZS4KICAgICAgICAgLy8gTk9URTogVGhpcyBpcyB1c2VkIHNvbGVseSB0byBl
bmFibGUgYSBHQyBvcHRpbWl6YXRpb24uIFNvbWUgcGxhdGZvcm1zIG1heSBub3QgYmUgYWJsZSB0
byBkZXRlcm1pbmUgb3duZXJzaGlwIG9mIHRoZSByZW1vdGUgcG9ydCAoc2luY2UgaXQgbWF5IGxp
dmUgY3Jvc3MtcHJvY2VzcykgLSB0aG9zZSBwbGF0Zm9ybXMgbWF5IGFsd2F5cyByZXR1cm4gbnVs
bC4KICAgICAgICAgTWVzc2FnZVBvcnQqIGxvY2FsbHlFbnRhbmdsZWRQb3J0KCk7Ci0gICAgICAg
IGJvb2wgaXNFbnRhbmdsZWQoKSB7IHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWw7IH0KKyAgICAg
ICAgLy8gQSBwb3J0IHN0YXJ0cyBvdXQgaXRzIGxpZmUgZW50YW5nbGVkLCBhbmQgcmVtYWlucyBl
bnRhbmdsZWQgdW50aWwgaXQgaXMgY2xvc2VkIG9yIGlzIGNsb25lZC4KKyAgICAgICAgYm9vbCBp
c0VudGFuZ2xlZCgpIHsgcmV0dXJuICFtX2Nsb3NlZCAmJiAhaXNDbG9uZWQoKTsgfQorICAgICAg
ICAvLyBBIHBvcnQgaXMgY2xvbmVkIGlmIGl0cyBlbnRhbmdsZWQgY2hhbm5lbCBoYXMgYmVlbiBy
ZW1vdmVkIGFuZCBzZW50IHRvIGEgbmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgpLgorICAgICAg
ICBib29sIGlzQ2xvbmVkKCkgeyByZXR1cm4gIW1fZW50YW5nbGVkQ2hhbm5lbDsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgTWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwpA
QCAtMTE2LDYgKzExOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbD4gbV9lbnRhbmdsZWRDaGFubmVsOwogCiAgICAgICAgIGJvb2wgbV9z
dGFydGVkOworICAgICAgICBib29sIG1fY2xvc2VkOwogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICAgICAgRXZlbnRUYXJnZXRE
YXRhIG1fZXZlbnRUYXJnZXREYXRhOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>