<?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>92965</bug_id>
          
          <creation_ts>2012-08-02 02:45:42 -0700</creation_ts>
          <short_desc>Optimize ChildNode{Insertion,Removal}Notifier::notify() by lazily taking a snapshot of child nodes</short_desc>
          <delta_ts>2012-08-09 21:55:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88834</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>685150</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 02:45:42 -0700</bug_when>
    <thetext>notifyDescendantRemovedFromDocument() cannot iterate child nodes in this way:

  void notifyDescendantRemovedFromDocument(Node* node) {
    for (Node* child = node-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
      ...;
      notifyNodeRemovedFromDocument(child);
    }
  }

This is because notifyNodeRemovedFromDocument(child) might dispatch events and the events might change child trees. To avoid security issues, the current code takes a snapshot of child nodes before starting the iteration, like this.

  void notifyDescendantRemovedFromDocument(Node* node) {
     NodeVector children;
     getChildNodes(node, children); // Take a snapshot.
     for (int i = 0; i &lt; children.size(); i++) {
       ...;
       notifyNodeRemovedFromDocument(children[i]);
     }
   }

Based on the observation that in almost all cases events won&apos;t be dispatched from inside notifyNodeRemovedFromDocument(), we can implement a &quot;lazy&quot; snapshot. The snapshot is taken at the point where EventDispatcher::dispatchEvent() is invoked. The snapshot is not taken unless any event is dispatched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685153</commentid>
    <comment_count>1</comment_count>
      <attachid>156020</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 02:50:06 -0700</bug_when>
    <thetext>Created attachment 156020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685155</commentid>
    <comment_count>2</comment_count>
      <attachid>156022</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 02:51:10 -0700</bug_when>
    <thetext>Created attachment 156022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685220</commentid>
    <comment_count>3</comment_count>
      <attachid>156040</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 04:30:24 -0700</bug_when>
    <thetext>Created attachment 156040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685410</commentid>
    <comment_count>4</comment_count>
      <attachid>156040</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-02 08:17:13 -0700</bug_when>
    <thetext>Comment on attachment 156040
Patch

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

Nice idea.  Some detailed comments below.

&gt; Source/WebCore/dom/ContainerNode.h:304
&gt; +static ChildNodesSnapshot* latestSnapshot = 0;

Please don&apos;t add static global variables to header files.  That will add storage for this variable to every complication unit that includes this header!

&gt; Source/WebCore/dom/ContainerNode.h:324
&gt; +        if (m_childNodes)
&gt; +            delete m_childNodes;

Can we use an OwnPtr to have this delete happen automatically?

&gt; Source/WebCore/dom/ContainerNode.h:338
&gt; +        Node* ret = (*m_childNodes)[m_currentIndex++].get();

ret -&gt; node (prefer complete words in variable names)

&gt; Source/WebCore/dom/ContainerNode.h:344
&gt; +        if (!hasSnapshot()) {

Prefer early return.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:69
&gt; +    ChildNodesSnapshot snapshot(node);

I&apos;d put the word &quot;Lazy&quot; into the name of this class to make it clear that the snapshot is happening lazily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686169</commentid>
    <comment_count>5</comment_count>
      <attachid>156248</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 19:58:14 -0700</bug_when>
    <thetext>Created attachment 156248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686171</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 19:58:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/dom/ContainerNode.h:304
&gt; &gt; +static ChildNodesSnapshot* latestSnapshot = 0;
&gt; 
&gt; Please don&apos;t add static global variables to header files.  That will add storage for this variable to every complication unit that includes this header!
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNode.h:324
&gt; &gt; +        if (m_childNodes)
&gt; &gt; +            delete m_childNodes;
&gt; 
&gt; Can we use an OwnPtr to have this delete happen automatically?
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNode.h:338
&gt; &gt; +        Node* ret = (*m_childNodes)[m_currentIndex++].get();
&gt; 
&gt; ret -&gt; node (prefer complete words in variable names)
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNode.h:344
&gt; &gt; +        if (!hasSnapshot()) {
&gt; 
&gt; Prefer early return.
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:69
&gt; &gt; +    ChildNodesSnapshot snapshot(node);
&gt; 
&gt; I&apos;d put the word &quot;Lazy&quot; into the name of this class to make it clear that the snapshot is happening lazily.

All done. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689622</commentid>
    <comment_count>7</comment_count>
      <attachid>156248</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 17:01:44 -0700</bug_when>
    <thetext>Comment on attachment 156248
Patch

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

&gt; Source/WebCore/dom/ContainerNode.h:308
&gt; +    ChildNodesLazySnapshot(Node* parentNode)

explicit

&gt; Source/WebCore/dom/ContainerNode.h:325
&gt; +        if (LIKELY(!m_childNodes.get())) {

Can we call hasSnapshot() here?  That would be slightly more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689691</commentid>
    <comment_count>8</comment_count>
      <attachid>157065</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 18:08:03 -0700</bug_when>
    <thetext>Created attachment 157065
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689694</commentid>
    <comment_count>9</comment_count>
      <attachid>157066</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 18:09:35 -0700</bug_when>
    <thetext>Created attachment 157066
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689907</commentid>
    <comment_count>10</comment_count>
      <attachid>157066</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 22:38:51 -0700</bug_when>
    <thetext>Comment on attachment 157066
patch for landing

Clearing flags on attachment: 157066

Committed r124990: &lt;http://trac.webkit.org/changeset/124990&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690579</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-08 11:59:36 -0700</bug_when>
    <thetext>Could we do this same trick for the methods in ContainerNode that call collectChildrenAndRemoveFromOldParent and/or collectTargetNodes? It might have a performance benefit for large innerHTML calls for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690909</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-08 16:39:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Could we do this same trick for the methods in ContainerNode that call collectChildrenAndRemoveFromOldParent and/or collectTargetNodes? It might have a performance benefit for large innerHTML calls for example.

Yes, I&apos;ll do after investigating performance and security stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692189</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-09 21:55:36 -0700</bug_when>
    <thetext>Nice! 9% improvement indeed.

http://webkit-perf.appspot.com/graph.html#tests=[[40018,2001,32196]]&amp;sel=1344366304381.4546,1344436602563.2727,2520.1612903225805,4758.064516129032&amp;displayrange=7&amp;datatype=running</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156020</attachid>
            <date>2012-08-02 02:50:06 -0700</date>
            <delta_ts>2012-08-02 02:51:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92965-20120802184947.patch</filename>
            <type>text/plain</type>
            <size>8883</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMGUyYmI1ZGMyZjMx
M2E4Y2M5MTc5MzhmMDQ0ODViMWFiNzE1MS4uNmYwNDM2MTY0YmUxNDljM2YwNGY5YWU1OWMxYzFj
Y2QxYTI1NjAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA4LTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDaGls
ZE5vZGV7SW5zZXJ0aW9uLFJlbW92YWx9Tm90aWZpZXI6Om5vdGlmeSgpIGJ5IGxhemlseSB0YWtp
bmcgYSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIERy
b21hZW8vZG9tLW1vZGlmeSBieSA4LjIlIGluIGJvdGggQ2hyb21pdW0gYW5kIFNhZmFyaS4KKwor
ICAgICAgICBbQ2hyb21pdW0vTGludXhdIDQ1OTAuMzMgcnVucy9zICA9PiAgNDk2NS43OSBydW5z
L3MgICgrOC4xOCUpCisgICAgICAgIFtNYWMvU2FmYXJpXSAgICAgMzk3MC42MyBydW5zL3MgID0+
ICA0Mjk5LjY1IHJ1bnMvcyAgKCs4LjI5JSkKKworCisgICAgICAgIG5vdGlmeURlc2NlbmRhbnRS
ZW1vdmVkRnJvbURvY3VtZW50KCkgY2Fubm90IGl0ZXJhdGUgY2hpbGQgbm9kZXMgaW4gdGhpcyB3
YXk6CisKKyAgICAgICAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50
KE5vZGUqIG5vZGUpIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICAgIC4uLjsKKyAgICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
Y2hpbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICBUaGlzIGlzIGJl
Y2F1c2Ugbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpIG1pZ2h0IGRpc3BhdGNo
IGV2ZW50cworICAgICAgICBhbmQgdGhlIGV2ZW50cyBtaWdodCBjaGFuZ2UgY2hpbGQgdHJlZXMu
IFRvIGF2b2lkIHNlY3VyaXR5IGlzc3VlcywgdGhlIGN1cnJlbnQKKyAgICAgICAgY29kZSB0YWtl
cyBhIHNuYXBzaG90IG9mIGNoaWxkIG5vZGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaXRlcmF0aW9u
LgorCisgICAgICAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChO
b2RlKiBub2RlKSB7CisgICAgICAgICAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOworICAgICAgICAg
ICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBjaGlsZHJlbik7IC8vIFRha2UgYSBzbmFwc2hvdC4KKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgICAgLi4uOworICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChjaGlsZHJlbltpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAg
IEJhc2VkIG9uIHRoZSBvYnNlcnZhdGlvbiB0aGF0IGluIGFsbW9zdCBhbGwgY2FzZXMgZXZlbnRz
IHdvbid0IGJlIGRpc3BhdGNoZWQKKyAgICAgICAgZnJvbSBpbnNpZGUgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tRG9jdW1lbnQoKSwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzCisgICAgICAgIGEgImxhenki
IHNuYXBzaG90LiBUaGUgc25hcHNob3QgaXMgdGFrZW4gYXQgdGhlIHBvaW50IHdoZXJlCisgICAg
ICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpIGlzIGludm9rZWQuIFRoZSBzbmFw
c2hvdCBpcyBub3QgdGFrZW4gdW5sZXNzCisgICAgICAgIGFueSBldmVudCBpcyBkaXNwYXRjaGVk
LgorCisgICAgICAgIE5vIHRlc3RzLiBDb25maXJtIHRoYXQgYWxsIGV4aXN0aW5nIHRlc3RzIHBh
c3MuCisgICAgICAgIEFjdHVhbGx5LCBhdCBwcmVzZW50IHRoZXJlIGlzIChzaG91bGQgYmUpIG5v
IGNhc2Ugd2hlcmUgYW4gZXZlbnQgaXMKKyAgICAgICAgZGlzcGF0Y2hlZCBmcm9tIGluc2lkZSBu
b3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCgpLiBFdmVuIERPTU5vZGVJbnNlcnRlZAorICAg
ICAgICBhbmQgRE9NTm9kZVJlbW92ZWQgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4gT3JpZ2lu
YWxseSB0aGUgc25hcHNob3Qgd2FzCisgICAgICAgIGltcGxlbWVudGVkICJqdXN0IGluIGNhc2Ui
IHRvIHByb3RlY3QgdGhlIGNvZGUgZnJvbSBmdXR1cmUgYXR0YWNrcy4KKyAgICAgICAgSSBtYW51
YWxseSBjb25maXJtZWQgdGhhdCB0aGUgbGF6eSBzbmFwc2hvdCB3b3JrcyBieSBoYWNraW5nCisg
ICAgICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpLgorCisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hpbGROb2Rl
c1NuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6Q2hpbGRO
b2Rlc1NuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6fkNo
aWxkTm9kZXNTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzU25hcHNob3Q6
Om5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6dGFrZVNu
YXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6bmV4dFNuYXBz
aG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6aGFzU25hcHNob3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc1NuYXBzaG90Ojp0YWtlQ2hpbGROb2Rlc1Nu
YXBzaG90KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1v
dmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAg
ICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6CisKIDIwMTItMDctMzEgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBIaXQgdGVzdCBwb2lu
dHMgYXJlIGJlaW5nIGNsaXBwZWQgYnkgbGF5ZXJzIHRoYXQgc2hvdWxkIG5vdCBjbGlwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA5YWJhZjIzNzNjMGE5MGIwM2NiYTIyMjJjOTVh
YjE4OWRiN2MyZTdkLi5lN2EyYWI3OTFhMGFjZWMwNzM4NjI2NjFhZjVlMDRlMDUyOTcxNWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQ
b2ludDsKQEAgLTI5OCw2ICszMDAsNzYgQEAgaW5saW5lIHZvaWQgZ2V0Q2hpbGROb2RlcyhOb2Rl
KiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKICAgICAgICAgbm9kZXMuYXBwZW5kKGNoaWxkKTsK
IH0KIAorY2xhc3MgQ2hpbGROb2Rlc1NuYXBzaG90Oworc3RhdGljIENoaWxkTm9kZXNTbmFwc2hv
dCogbGF0ZXN0U25hcHNob3QgPSAwOworCitjbGFzcyBDaGlsZE5vZGVzU25hcHNob3QgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENoaWxkTm9kZXNTbmFwc2hvdCk7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2hpbGROb2Rlc1NuYXBzaG90KE5vZGUqIHBh
cmVudE5vZGUpCisgICAgICAgIDogbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCisgICAgICAgICwg
bV9jdXJyZW50Tm9kZShwYXJlbnROb2RlLT5maXJzdENoaWxkKCkpCisgICAgICAgICwgbV9jdXJy
ZW50SW5kZXgoMCkKKyAgICAgICAgLCBtX2NoaWxkTm9kZXMoMCkKKyAgICB7CisgICAgICAgIG1f
bmV4dFNuYXBzaG90ID0gbGF0ZXN0U25hcHNob3Q7CisgICAgICAgIGxhdGVzdFNuYXBzaG90ID0g
dGhpczsKKyAgICB9CisKKyAgICB+Q2hpbGROb2Rlc1NuYXBzaG90KCkKKyAgICB7CisgICAgICAg
IGxhdGVzdFNuYXBzaG90ID0gbV9uZXh0U25hcHNob3Q7CisgICAgICAgIGlmIChtX2NoaWxkTm9k
ZXMpCisgICAgICAgICAgICBkZWxldGUgbV9jaGlsZE5vZGVzOworICAgIH0KKworICAgIC8vIFJl
dHVybnMgMCBpZiB0aGVyZSBpcyBubyBuZXh0IE5vZGUuCisgICAgTm9kZSogbmV4dE5vZGUoKQor
ICAgIHsKKyAgICAgICAgaWYgKExJS0VMWSghbV9jaGlsZE5vZGVzKSkgeworICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGU7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50Tm9k
ZSkKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbV9jdXJyZW50Tm9kZS0+bmV4dFNp
YmxpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisgICAgICAgIGlm
IChtX2N1cnJlbnRJbmRleCA+PSBtX2NoaWxkTm9kZXMtPnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gKCptX2NoaWxkTm9kZXMpW21fY3VycmVudEluZGV4Kytd
LmdldCgpOworICAgIH0KKworICAgIHZvaWQgdGFrZVNuYXBzaG90KCkKKyAgICB7CisgICAgICAg
IGlmICghaGFzU25hcHNob3QoKSkgeworICAgICAgICAgICAgbV9jaGlsZE5vZGVzID0gbmV3IFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPigxMSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJy
ZW50Tm9kZTsKKyAgICAgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgICAgICAgICAgbV9j
aGlsZE5vZGVzLT5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5l
eHRTaWJsaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDaGls
ZE5vZGVzU25hcHNob3QqIG5leHRTbmFwc2hvdCgpIHsgcmV0dXJuIG1fbmV4dFNuYXBzaG90OyB9
CisgICAgYm9vbCBoYXNTbmFwc2hvdCgpIHsgcmV0dXJuICEhbV9jaGlsZE5vZGVzOyB9CisKKyAg
ICBzdGF0aWMgdm9pZCB0YWtlQ2hpbGROb2Rlc1NuYXBzaG90KCkKKyAgICB7CisgICAgICAgIENo
aWxkTm9kZXNTbmFwc2hvdCogc25hcHNob3QgPSBsYXRlc3RTbmFwc2hvdDsKKyAgICAgICAgd2hp
bGUgKHNuYXBzaG90ICYmICFzbmFwc2hvdC0+aGFzU25hcHNob3QoKSkgeworICAgICAgICAgICAg
c25hcHNob3QtPnRha2VTbmFwc2hvdCgpOworICAgICAgICAgICAgc25hcHNob3QgPSBzbmFwc2hv
dC0+bmV4dFNuYXBzaG90KCk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgTm9k
ZSogbV9wYXJlbnROb2RlOworICAgIE5vZGUqIG1fY3VycmVudE5vZGU7CisgICAgdW5zaWduZWQg
bV9jdXJyZW50SW5kZXg7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KiBtX2NoaWxkTm9kZXM7
IC8vIExhemlseSBpbnN0YW50aWF0ZWQuCisgICAgQ2hpbGROb2Rlc1NuYXBzaG90KiBtX25leHRT
bmFwc2hvdDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENvbnRh
aW5lck5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHAKaW5kZXggYzg5NTlkZmI4MTYzZjRlZTk1YjQ1ZTA5M2Y0ZjdiYzUxYzNmNTYzYy4uNjk4
MDVmYTgxNTJhZjVlMGE5YmQ0YjM3MGMxNDlmYzA5NTIzOTNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC0zNCwxNiArMzQsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpu
b3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSogbm9kZSkK
IHsKLSAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOwotICAgIGdldENoaWxkTm9kZXMobm9kZSwgY2hp
bGRyZW4pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kp
IHsKKyAgICBDaGlsZE5vZGVzU25hcHNob3Qgc25hcHNob3Qobm9kZSk7CisgICAgd2hpbGUgKE5v
ZGUqIGNoaWxkID0gc25hcHNob3QubmV4dE5vZGUoKSkgewogICAgICAgICAvLyBJZiB3ZSBoYXZl
IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuCiAg
ICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4g
dGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQg
YmVjYXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkgJiYg
Y2hpbGRyZW5baV0tPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9k
ZUluc2VydGVkSW50b0RvY3VtZW50KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKG5v
ZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IG5vZGUpCisgICAgICAg
ICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY2hpbGQpOwogICAgIH0KLSAgICAg
ICAgCisKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NywxNCArNjYsMTMgQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90
aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKIAogdm9pZCBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50
KENvbnRhaW5lck5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKLSAgICBn
ZXRDaGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgQ2hpbGROb2Rlc1NuYXBzaG90IHNuYXBzaG90
KG5vZGUpOworICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IHNuYXBzaG90Lm5leHROb2RlKCkpIHsK
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBkdXJpbmcg
dGhpcyBsb29wLCB0aGVuIHdlCiAgICAgICAgIC8vIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVz
dCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gcmVtb3ZlZCBm
cm9tIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkgaGF2ZW4ndC4KLSAgICAgICAgaWYgKCFub2Rl
LT5pbkRvY3VtZW50KCkgJiYgY2hpbGRyZW5baV0tPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAg
ICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGRyZW5baV0uZ2V0KCkp
OworICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgp
ID09IG5vZGUpCisgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChjaGls
ZCk7CiAgICAgfQogCiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDM5MjU5YTA3YjFmNjkzZDU2ZjU1ZjM4MGY5
MDJkODRiMGIxNjlhZTMuLmMxZTU4YTljODNiNzJlNzA4NzhhOTlkMmQ3Y2U2OTEzZDNhMTliMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAKICNpbmNsdWRlICJDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRWxl
bWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50
RGlzcGF0Y2hNZWRpYXRvci5oIgpAQCAtMjM4LDYgKzIzOSw4IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCiAKIGJvb2wgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIENo
aWxkTm9kZXNTbmFwc2hvdDo6dGFrZUNoaWxkTm9kZXNTbmFwc2hvdCgpOworCiAgICAgZXZlbnQt
PnNldFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhtX25vZGUuZ2V0
KCkpKTsKIAogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156022</attachid>
            <date>2012-08-02 02:51:10 -0700</date>
            <delta_ts>2012-08-02 04:30:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92965-20120802185051.patch</filename>
            <type>text/plain</type>
            <size>8883</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMGUyYmI1ZGMyZjMx
M2E4Y2M5MTc5MzhmMDQ0ODViMWFiNzE1MS4uYTAyOGRiYzA1YTVjMDY5MDc5NWNhNjhkMjk4YjBj
NGMzZmEwZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA4LTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDaGls
ZE5vZGV7SW5zZXJ0aW9uLFJlbW92YWx9Tm90aWZpZXI6Om5vdGlmeSgpIGJ5IGxhemlseSB0YWtp
bmcgYSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIERy
b21hZW8vZG9tLW1vZGlmeSBieSA4LjIlIGluIGJvdGggQ2hyb21pdW0gYW5kIFNhZmFyaS4KKwor
ICAgICAgICBbTWFjL1NhZmFyaV0gICAgIDQ1OTAuMzMgcnVucy9zICA9PiAgNDk2NS43OSBydW5z
L3MgICgrOC4xOCUpCisgICAgICAgIFtDaHJvbWl1bS9MaW51eF0gMzk3MC42MyBydW5zL3MgID0+
ICA0Mjk5LjY1IHJ1bnMvcyAgKCs4LjI5JSkKKworCisgICAgICAgIG5vdGlmeURlc2NlbmRhbnRS
ZW1vdmVkRnJvbURvY3VtZW50KCkgY2Fubm90IGl0ZXJhdGUgY2hpbGQgbm9kZXMgaW4gdGhpcyB3
YXk6CisKKyAgICAgICAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50
KE5vZGUqIG5vZGUpIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICAgIC4uLjsKKyAgICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
Y2hpbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICBUaGlzIGlzIGJl
Y2F1c2Ugbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpIG1pZ2h0IGRpc3BhdGNo
IGV2ZW50cworICAgICAgICBhbmQgdGhlIGV2ZW50cyBtaWdodCBjaGFuZ2UgY2hpbGQgdHJlZXMu
IFRvIGF2b2lkIHNlY3VyaXR5IGlzc3VlcywgdGhlIGN1cnJlbnQKKyAgICAgICAgY29kZSB0YWtl
cyBhIHNuYXBzaG90IG9mIGNoaWxkIG5vZGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaXRlcmF0aW9u
LgorCisgICAgICAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChO
b2RlKiBub2RlKSB7CisgICAgICAgICAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOworICAgICAgICAg
ICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBjaGlsZHJlbik7IC8vIFRha2UgYSBzbmFwc2hvdC4KKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgICAgLi4uOworICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChjaGlsZHJlbltpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAg
IEJhc2VkIG9uIHRoZSBvYnNlcnZhdGlvbiB0aGF0IGluIGFsbW9zdCBhbGwgY2FzZXMgZXZlbnRz
IHdvbid0IGJlIGRpc3BhdGNoZWQKKyAgICAgICAgZnJvbSBpbnNpZGUgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tRG9jdW1lbnQoKSwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzCisgICAgICAgIGEgImxhenki
IHNuYXBzaG90LiBUaGUgc25hcHNob3QgaXMgdGFrZW4gYXQgdGhlIHBvaW50IHdoZXJlCisgICAg
ICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpIGlzIGludm9rZWQuIFRoZSBzbmFw
c2hvdCBpcyBub3QgdGFrZW4gdW5sZXNzCisgICAgICAgIGFueSBldmVudCBpcyBkaXNwYXRjaGVk
LgorCisgICAgICAgIE5vIHRlc3RzLiBDb25maXJtIHRoYXQgYWxsIGV4aXN0aW5nIHRlc3RzIHBh
c3MuCisgICAgICAgIEFjdHVhbGx5LCBhdCBwcmVzZW50IHRoZXJlIGlzIChzaG91bGQgYmUpIG5v
IGNhc2Ugd2hlcmUgYW4gZXZlbnQgaXMKKyAgICAgICAgZGlzcGF0Y2hlZCBmcm9tIGluc2lkZSBu
b3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCgpLiBFdmVuIERPTU5vZGVJbnNlcnRlZAorICAg
ICAgICBhbmQgRE9NTm9kZVJlbW92ZWQgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4gT3JpZ2lu
YWxseSB0aGUgc25hcHNob3Qgd2FzCisgICAgICAgIGltcGxlbWVudGVkICJqdXN0IGluIGNhc2Ui
IHRvIHByb3RlY3QgdGhlIGNvZGUgZnJvbSBmdXR1cmUgYXR0YWNrcy4KKyAgICAgICAgSSBtYW51
YWxseSBjb25maXJtZWQgdGhhdCB0aGUgbGF6eSBzbmFwc2hvdCB3b3JrcyBieSBoYWNraW5nCisg
ICAgICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpLgorCisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hpbGROb2Rl
c1NuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6Q2hpbGRO
b2Rlc1NuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6fkNo
aWxkTm9kZXNTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzU25hcHNob3Q6
Om5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6dGFrZVNu
YXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6bmV4dFNuYXBz
aG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6aGFzU25hcHNob3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc1NuYXBzaG90Ojp0YWtlQ2hpbGROb2Rlc1Nu
YXBzaG90KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1v
dmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAg
ICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6CisKIDIwMTItMDctMzEgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBIaXQgdGVzdCBwb2lu
dHMgYXJlIGJlaW5nIGNsaXBwZWQgYnkgbGF5ZXJzIHRoYXQgc2hvdWxkIG5vdCBjbGlwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA5YWJhZjIzNzNjMGE5MGIwM2NiYTIyMjJjOTVh
YjE4OWRiN2MyZTdkLi5lN2EyYWI3OTFhMGFjZWMwNzM4NjI2NjFhZjVlMDRlMDUyOTcxNWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQ
b2ludDsKQEAgLTI5OCw2ICszMDAsNzYgQEAgaW5saW5lIHZvaWQgZ2V0Q2hpbGROb2RlcyhOb2Rl
KiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKICAgICAgICAgbm9kZXMuYXBwZW5kKGNoaWxkKTsK
IH0KIAorY2xhc3MgQ2hpbGROb2Rlc1NuYXBzaG90Oworc3RhdGljIENoaWxkTm9kZXNTbmFwc2hv
dCogbGF0ZXN0U25hcHNob3QgPSAwOworCitjbGFzcyBDaGlsZE5vZGVzU25hcHNob3QgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENoaWxkTm9kZXNTbmFwc2hvdCk7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2hpbGROb2Rlc1NuYXBzaG90KE5vZGUqIHBh
cmVudE5vZGUpCisgICAgICAgIDogbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCisgICAgICAgICwg
bV9jdXJyZW50Tm9kZShwYXJlbnROb2RlLT5maXJzdENoaWxkKCkpCisgICAgICAgICwgbV9jdXJy
ZW50SW5kZXgoMCkKKyAgICAgICAgLCBtX2NoaWxkTm9kZXMoMCkKKyAgICB7CisgICAgICAgIG1f
bmV4dFNuYXBzaG90ID0gbGF0ZXN0U25hcHNob3Q7CisgICAgICAgIGxhdGVzdFNuYXBzaG90ID0g
dGhpczsKKyAgICB9CisKKyAgICB+Q2hpbGROb2Rlc1NuYXBzaG90KCkKKyAgICB7CisgICAgICAg
IGxhdGVzdFNuYXBzaG90ID0gbV9uZXh0U25hcHNob3Q7CisgICAgICAgIGlmIChtX2NoaWxkTm9k
ZXMpCisgICAgICAgICAgICBkZWxldGUgbV9jaGlsZE5vZGVzOworICAgIH0KKworICAgIC8vIFJl
dHVybnMgMCBpZiB0aGVyZSBpcyBubyBuZXh0IE5vZGUuCisgICAgTm9kZSogbmV4dE5vZGUoKQor
ICAgIHsKKyAgICAgICAgaWYgKExJS0VMWSghbV9jaGlsZE5vZGVzKSkgeworICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGU7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50Tm9k
ZSkKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbV9jdXJyZW50Tm9kZS0+bmV4dFNp
YmxpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisgICAgICAgIGlm
IChtX2N1cnJlbnRJbmRleCA+PSBtX2NoaWxkTm9kZXMtPnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gKCptX2NoaWxkTm9kZXMpW21fY3VycmVudEluZGV4Kytd
LmdldCgpOworICAgIH0KKworICAgIHZvaWQgdGFrZVNuYXBzaG90KCkKKyAgICB7CisgICAgICAg
IGlmICghaGFzU25hcHNob3QoKSkgeworICAgICAgICAgICAgbV9jaGlsZE5vZGVzID0gbmV3IFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPigxMSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJy
ZW50Tm9kZTsKKyAgICAgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgICAgICAgICAgbV9j
aGlsZE5vZGVzLT5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5l
eHRTaWJsaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDaGls
ZE5vZGVzU25hcHNob3QqIG5leHRTbmFwc2hvdCgpIHsgcmV0dXJuIG1fbmV4dFNuYXBzaG90OyB9
CisgICAgYm9vbCBoYXNTbmFwc2hvdCgpIHsgcmV0dXJuICEhbV9jaGlsZE5vZGVzOyB9CisKKyAg
ICBzdGF0aWMgdm9pZCB0YWtlQ2hpbGROb2Rlc1NuYXBzaG90KCkKKyAgICB7CisgICAgICAgIENo
aWxkTm9kZXNTbmFwc2hvdCogc25hcHNob3QgPSBsYXRlc3RTbmFwc2hvdDsKKyAgICAgICAgd2hp
bGUgKHNuYXBzaG90ICYmICFzbmFwc2hvdC0+aGFzU25hcHNob3QoKSkgeworICAgICAgICAgICAg
c25hcHNob3QtPnRha2VTbmFwc2hvdCgpOworICAgICAgICAgICAgc25hcHNob3QgPSBzbmFwc2hv
dC0+bmV4dFNuYXBzaG90KCk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgTm9k
ZSogbV9wYXJlbnROb2RlOworICAgIE5vZGUqIG1fY3VycmVudE5vZGU7CisgICAgdW5zaWduZWQg
bV9jdXJyZW50SW5kZXg7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KiBtX2NoaWxkTm9kZXM7
IC8vIExhemlseSBpbnN0YW50aWF0ZWQuCisgICAgQ2hpbGROb2Rlc1NuYXBzaG90KiBtX25leHRT
bmFwc2hvdDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENvbnRh
aW5lck5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHAKaW5kZXggYzg5NTlkZmI4MTYzZjRlZTk1YjQ1ZTA5M2Y0ZjdiYzUxYzNmNTYzYy4uNjk4
MDVmYTgxNTJhZjVlMGE5YmQ0YjM3MGMxNDlmYzA5NTIzOTNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC0zNCwxNiArMzQsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpu
b3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSogbm9kZSkK
IHsKLSAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOwotICAgIGdldENoaWxkTm9kZXMobm9kZSwgY2hp
bGRyZW4pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kp
IHsKKyAgICBDaGlsZE5vZGVzU25hcHNob3Qgc25hcHNob3Qobm9kZSk7CisgICAgd2hpbGUgKE5v
ZGUqIGNoaWxkID0gc25hcHNob3QubmV4dE5vZGUoKSkgewogICAgICAgICAvLyBJZiB3ZSBoYXZl
IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuCiAg
ICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4g
dGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQg
YmVjYXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkgJiYg
Y2hpbGRyZW5baV0tPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9k
ZUluc2VydGVkSW50b0RvY3VtZW50KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKG5v
ZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IG5vZGUpCisgICAgICAg
ICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY2hpbGQpOwogICAgIH0KLSAgICAg
ICAgCisKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NywxNCArNjYsMTMgQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90
aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKIAogdm9pZCBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50
KENvbnRhaW5lck5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKLSAgICBn
ZXRDaGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgQ2hpbGROb2Rlc1NuYXBzaG90IHNuYXBzaG90
KG5vZGUpOworICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IHNuYXBzaG90Lm5leHROb2RlKCkpIHsK
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBkdXJpbmcg
dGhpcyBsb29wLCB0aGVuIHdlCiAgICAgICAgIC8vIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVz
dCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gcmVtb3ZlZCBm
cm9tIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkgaGF2ZW4ndC4KLSAgICAgICAgaWYgKCFub2Rl
LT5pbkRvY3VtZW50KCkgJiYgY2hpbGRyZW5baV0tPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAg
ICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGRyZW5baV0uZ2V0KCkp
OworICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgp
ID09IG5vZGUpCisgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChjaGls
ZCk7CiAgICAgfQogCiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDM5MjU5YTA3YjFmNjkzZDU2ZjU1ZjM4MGY5
MDJkODRiMGIxNjlhZTMuLmMxZTU4YTljODNiNzJlNzA4NzhhOTlkMmQ3Y2U2OTEzZDNhMTliMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAKICNpbmNsdWRlICJDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRWxl
bWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50
RGlzcGF0Y2hNZWRpYXRvci5oIgpAQCAtMjM4LDYgKzIzOSw4IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCiAKIGJvb2wgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIENo
aWxkTm9kZXNTbmFwc2hvdDo6dGFrZUNoaWxkTm9kZXNTbmFwc2hvdCgpOworCiAgICAgZXZlbnQt
PnNldFRhcmdldChldmVudFRhcmdldFJlc3BlY3RpbmdTVkdUYXJnZXRSdWxlcyhtX25vZGUuZ2V0
KCkpKTsKIAogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156040</attachid>
            <date>2012-08-02 04:30:24 -0700</date>
            <delta_ts>2012-08-02 19:58:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92965-20120802203005.patch</filename>
            <type>text/plain</type>
            <size>8980</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMGUyYmI1ZGMyZjMx
M2E4Y2M5MTc5MzhmMDQ0ODViMWFiNzE1MS4uMWMwMjgwYjc0MGIwYmU1Yzg3ZmU0NTZjYjZiNmNh
YTNhMGE1MGZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTA4LTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDaGls
ZE5vZGV7SW5zZXJ0aW9uLFJlbW92YWx9Tm90aWZpZXI6Om5vdGlmeSgpIGJ5IGxhemlseSB0YWtp
bmcgYSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIERy
b21hZW8vZG9tLW1vZGlmeSBieSA4LjIlIGluIGJvdGggQ2hyb21pdW0gYW5kIFNhZmFyaS4KKwor
ICAgICAgICBbTWFjL1NhZmFyaV0gICAgIDQ1OTAuMzMgcnVucy9zICA9PiAgNDk2NS43OSBydW5z
L3MgICgrOC4xOCUpCisgICAgICAgIFtDaHJvbWl1bS9MaW51eF0gMzk3MC42MyBydW5zL3MgID0+
ICA0Mjk5LjY1IHJ1bnMvcyAgKCs4LjI5JSkKKworCisgICAgICAgIG5vdGlmeURlc2NlbmRhbnRS
ZW1vdmVkRnJvbURvY3VtZW50KCkgY2Fubm90IGl0ZXJhdGUgY2hpbGQgbm9kZXMgaW4gdGhpcyB3
YXk6CisKKyAgICAgICAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50
KE5vZGUqIG5vZGUpIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICAgIC4uLjsKKyAgICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
Y2hpbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICBUaGlzIGlzIGJl
Y2F1c2Ugbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpIG1pZ2h0IGRpc3BhdGNo
IGV2ZW50cworICAgICAgICBhbmQgdGhlIGV2ZW50cyBtaWdodCBjaGFuZ2UgY2hpbGQgdHJlZXMu
IFRvIGF2b2lkIHNlY3VyaXR5IGlzc3VlcywgdGhlIGN1cnJlbnQKKyAgICAgICAgY29kZSB0YWtl
cyBhIHNuYXBzaG90IG9mIGNoaWxkIG5vZGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaXRlcmF0aW9u
LgorCisgICAgICAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChO
b2RlKiBub2RlKSB7CisgICAgICAgICAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOworICAgICAgICAg
ICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBjaGlsZHJlbik7IC8vIFRha2UgYSBzbmFwc2hvdC4KKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgICAgLi4uOworICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChjaGlsZHJlbltpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorCisgICAgICAg
IEJhc2VkIG9uIHRoZSBvYnNlcnZhdGlvbiB0aGF0IGluIGFsbW9zdCBhbGwgY2FzZXMgZXZlbnRz
IHdvbid0IGJlIGRpc3BhdGNoZWQKKyAgICAgICAgZnJvbSBpbnNpZGUgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tRG9jdW1lbnQoKSwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzCisgICAgICAgIGEgImxhenki
IHNuYXBzaG90LiBUaGUgc25hcHNob3QgaXMgdGFrZW4gYXQgdGhlIHBvaW50IHdoZXJlCisgICAg
ICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpIGlzIGludm9rZWQuIFRoZSBzbmFw
c2hvdCBpcyBub3QgdGFrZW4gdW5sZXNzCisgICAgICAgIGFueSBldmVudCBpcyBkaXNwYXRjaGVk
LgorCisgICAgICAgIE5vIHRlc3RzLiBDb25maXJtIHRoYXQgYWxsIGV4aXN0aW5nIHRlc3RzIHBh
c3MuCisgICAgICAgIEFjdHVhbGx5LCBhdCBwcmVzZW50IHRoZXJlIGlzIChzaG91bGQgYmUpIG5v
IGNhc2Ugd2hlcmUgYW4gZXZlbnQgaXMKKyAgICAgICAgZGlzcGF0Y2hlZCBmcm9tIGluc2lkZSBu
b3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCgpLiBFdmVuIERPTU5vZGVJbnNlcnRlZAorICAg
ICAgICBhbmQgRE9NTm9kZVJlbW92ZWQgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4gT3JpZ2lu
YWxseSB0aGUgc25hcHNob3Qgd2FzCisgICAgICAgIGltcGxlbWVudGVkICJqdXN0IGluIGNhc2Ui
IHRvIHByb3RlY3QgdGhlIGNvZGUgZnJvbSBmdXR1cmUgYXR0YWNrcy4KKyAgICAgICAgSSBtYW51
YWxseSBjb25maXJtZWQgdGhhdCB0aGUgbGF6eSBzbmFwc2hvdCB3b3JrcyBjb3JyZWN0bHkgYnkg
aW5zZXJ0aW5nCisgICAgICAgIHRha2VDaGlsZE5vZGVzU25hcHNob3QoKSB0byBub3RpZnlEZXNj
ZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudCgpCisgICAgICAgIGluIGEgcmFuZG9tIG1hbm5lci4K
KworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENoaWxkTm9kZXNTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVz
U25hcHNob3Q6OkNoaWxkTm9kZXNTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5v
ZGVzU25hcHNob3Q6On5DaGlsZE5vZGVzU25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hp
bGROb2Rlc1NuYXBzaG90OjpuZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVz
U25hcHNob3Q6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzU25h
cHNob3Q6Om5leHRTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzU25hcHNo
b3Q6Omhhc1NuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNTbmFwc2hvdDo6
dGFrZUNoaWxkTm9kZXNTbmFwc2hvdCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
Ojpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21E
b2N1bWVudCk6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOgorCiAyMDEyLTA3LTMxICBT
aGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gSGl0IHRlc3QgcG9pbnRzIGFyZSBiZWluZyBjbGlwcGVkIGJ5IGxheWVycyB0aGF0IHNob3Vs
ZCBub3QgY2xpcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggOWFiYWYyMzczYzBh
OTBiMDNjYmEyMjIyYzk1YWIxODlkYjdjMmU3ZC4uOGFkYzFiNGEwZTJlZWRjYzdmOGNjN2Q4YzFi
MzBkZTRhYjI3YjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNyw2ICsy
Nyw4IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC0yOTgsNiArMzAwLDc3IEBAIGlubGluZSB2b2lkIGdl
dENoaWxkTm9kZXMoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiAgICAgICAgIG5vZGVz
LmFwcGVuZChjaGlsZCk7CiB9CiAKK2NsYXNzIENoaWxkTm9kZXNTbmFwc2hvdDsKK3N0YXRpYyBD
aGlsZE5vZGVzU25hcHNob3QqIGxhdGVzdFNuYXBzaG90ID0gMDsKKworY2xhc3MgQ2hpbGROb2Rl
c1NuYXBzaG90IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGlsZE5vZGVzU25hcHNob3Qp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENoaWxkTm9kZXNT
bmFwc2hvdChOb2RlKiBwYXJlbnROb2RlKQorICAgICAgICA6IG1fcGFyZW50Tm9kZShwYXJlbnRO
b2RlKQorICAgICAgICAsIG1fY3VycmVudE5vZGUocGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpKQor
ICAgICAgICAsIG1fY3VycmVudEluZGV4KDApCisgICAgICAgICwgbV9jaGlsZE5vZGVzKDApCisg
ICAgeworICAgICAgICBtX25leHRTbmFwc2hvdCA9IGxhdGVzdFNuYXBzaG90OworICAgICAgICBs
YXRlc3RTbmFwc2hvdCA9IHRoaXM7CisgICAgfQorCisgICAgfkNoaWxkTm9kZXNTbmFwc2hvdCgp
CisgICAgeworICAgICAgICBsYXRlc3RTbmFwc2hvdCA9IG1fbmV4dFNuYXBzaG90OworICAgICAg
ICBpZiAobV9jaGlsZE5vZGVzKQorICAgICAgICAgICAgZGVsZXRlIG1fY2hpbGROb2RlczsKKyAg
ICB9CisKKyAgICAvLyBSZXR1cm5zIDAgaWYgdGhlcmUgaXMgbm8gbmV4dCBOb2RlLgorICAgIE5v
ZGUqIG5leHROb2RlKCkKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkoIW1fY2hpbGROb2Rlcykp
IHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlOworICAgICAgICAgICAg
aWYgKG1fY3VycmVudE5vZGUpCisgICAgICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IG1fY3Vy
cmVudE5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAobV9jdXJyZW50SW5kZXggPj0gbV9jaGlsZE5vZGVzLT5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgTm9kZSogcmV0ID0gKCptX2NoaWxkTm9k
ZXMpW21fY3VycmVudEluZGV4KytdLmdldCgpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0K
KworICAgIHZvaWQgdGFrZVNuYXBzaG90KCkKKyAgICB7CisgICAgICAgIGlmICghaGFzU25hcHNo
b3QoKSkgeworICAgICAgICAgICAgbV9jaGlsZE5vZGVzID0gbmV3IFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPigpOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGU7CisgICAgICAg
ICAgICB3aGlsZSAobm9kZSkgeworICAgICAgICAgICAgICAgIG1fY2hpbGROb2Rlcy0+YXBwZW5k
KG5vZGUpOworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQ2hpbGROb2Rlc1NuYXBzaG90KiBu
ZXh0U25hcHNob3QoKSB7IHJldHVybiBtX25leHRTbmFwc2hvdDsgfQorICAgIGJvb2wgaGFzU25h
cHNob3QoKSB7IHJldHVybiAhIW1fY2hpbGROb2RlczsgfQorCisgICAgc3RhdGljIHZvaWQgdGFr
ZUNoaWxkTm9kZXNTbmFwc2hvdCgpCisgICAgeworICAgICAgICBDaGlsZE5vZGVzU25hcHNob3Qq
IHNuYXBzaG90ID0gbGF0ZXN0U25hcHNob3Q7CisgICAgICAgIHdoaWxlIChzbmFwc2hvdCAmJiAh
c25hcHNob3QtPmhhc1NuYXBzaG90KCkpIHsKKyAgICAgICAgICAgIHNuYXBzaG90LT50YWtlU25h
cHNob3QoKTsKKyAgICAgICAgICAgIHNuYXBzaG90ID0gc25hcHNob3QtPm5leHRTbmFwc2hvdCgp
OworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIE5vZGUqIG1fcGFyZW50Tm9kZTsK
KyAgICBOb2RlKiBtX2N1cnJlbnROb2RlOworICAgIHVuc2lnbmVkIG1fY3VycmVudEluZGV4Owor
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiogbV9jaGlsZE5vZGVzOyAvLyBMYXppbHkgaW5zdGFu
dGlhdGVkLgorICAgIENoaWxkTm9kZXNTbmFwc2hvdCogbV9uZXh0U25hcHNob3Q7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDb250YWluZXJOb2RlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IGM4OTU5
ZGZiODE2M2Y0ZWU5NWI0NWUwOTNmNGY3YmM1MWMzZjU2M2MuLjY5ODA1ZmE4MTUyYWY1ZTBhOWJk
NGIzNzBjMTQ5ZmMwOTUyMzkzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMzQsMTYgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudElu
c2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5lck5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZVZlY3Rv
ciBjaGlsZHJlbjsKLSAgICBnZXRDaGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgQ2hpbGROb2Rl
c1NuYXBzaG90IHNuYXBzaG90KG5vZGUpOworICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IHNuYXBz
aG90Lm5leHROb2RlKCkpIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIHJlbW92ZWQgZnJv
bSB0aGUgZG9jdW1lbnQgZHVyaW5nIHRoaXMgbG9vcCwgdGhlbgogICAgICAgICAvLyB3ZSBkb24n
dCB3YW50IHRvIHRlbGwgdGhlIHJlc3Qgb2Ygb3VyIGNoaWxkcmVuIHRoYXQgdGhleSd2ZSBiZWVu
CiAgICAgICAgIC8vIGluc2VydGVkIGludG8gdGhlIGRvY3VtZW50IGJlY2F1c2UgdGhleSBoYXZl
bid0LgotICAgICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpICYmIGNoaWxkcmVuW2ldLT5wYXJl
bnROb2RlKCkgPT0gbm9kZSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1
bWVudChjaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkg
JiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSBub2RlKQorICAgICAgICAgICAgbm90aWZ5Tm9kZUlu
c2VydGVkSW50b0RvY3VtZW50KGNoaWxkKTsKICAgICB9Ci0gICAgICAgIAorCiAgICAgaWYgKCFu
b2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjcsMTQgKzY2LDEz
IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNl
cnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqCiAKIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlKiBu
b2RlKQogewotICAgIE5vZGVWZWN0b3IgY2hpbGRyZW47Ci0gICAgZ2V0Q2hpbGROb2Rlcyhub2Rl
LCBjaGlsZHJlbik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7
ICsraSkgeworICAgIENoaWxkTm9kZXNTbmFwc2hvdCBzbmFwc2hvdChub2RlKTsKKyAgICB3aGls
ZSAoTm9kZSogY2hpbGQgPSBzbmFwc2hvdC5uZXh0Tm9kZSgpKSB7CiAgICAgICAgIC8vIElmIHdl
IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZG9jdW1lbnQgZHVyaW5nIHRoaXMgbG9vcCwgdGhlbiB3
ZQogICAgICAgICAvLyBkb24ndCB3YW50IHRvIHRlbGwgdGhlIHJlc3Qgb2Ygb3VyIGNoaWxkcmVu
IHRoYXQgdGhleSd2ZSBiZWVuCiAgICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQg
YmVjYXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAgIGlmICghbm9kZS0+aW5Eb2N1bWVudCgpICYm
IGNoaWxkcmVuW2ldLT5wYXJlbnROb2RlKCkgPT0gbm9kZSkKLSAgICAgICAgICAgIG5vdGlmeU5v
ZGVSZW1vdmVkRnJvbURvY3VtZW50KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKCFu
b2RlLT5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSBub2RlKQorICAgICAg
ICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpOwogICAgIH0KIAogICAg
IGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmNwcAppbmRleCAzOTI1OWEwN2IxZjY5M2Q1NmY1NWYzODBmOTAyZDg0YjBiMTY5YWUzLi5j
MWU1OGE5YzgzYjcyZTcwODc4YTk5ZDJkN2NlNjkxM2QzYTE5YjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV2ZW50
RGlzcGF0Y2hlci5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisj
aW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNp
bmNsdWRlICJFdmVudENvbnRleHQuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoTWVkaWF0b3Iu
aCIKQEAgLTIzOCw2ICsyMzksOCBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZW5zdXJlRXZlbnRB
bmNlc3RvcnMoRXZlbnQqIGV2ZW50KQogCiBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBDaGlsZE5vZGVzU25hcHNob3Q6
OnRha2VDaGlsZE5vZGVzU25hcHNob3QoKTsKKwogICAgIGV2ZW50LT5zZXRUYXJnZXQoZXZlbnRU
YXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0UnVsZXMobV9ub2RlLmdldCgpKSk7CiAKICAgICBBU1NF
UlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156248</attachid>
            <date>2012-08-02 19:58:14 -0700</date>
            <delta_ts>2012-08-07 22:39:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92965-20120803115754.patch</filename>
            <type>text/plain</type>
            <size>9716</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMGUyYmI1ZGMyZjMx
M2E4Y2M5MTc5MzhmMDQ0ODViMWFiNzE1MS4uZTVlMTZmNmVjNDk5Njg0ZWIwNDkzNjA4OWJjN2I0
OGFjM2VhNWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA4LTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDaGls
ZE5vZGV7SW5zZXJ0aW9uLFJlbW92YWx9Tm90aWZpZXI6Om5vdGlmeSgpIGJ5IGxhemlseSB0YWtp
bmcgYSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIERy
b21hZW8vZG9tLW1vZGlmeSBieSA4LjIlIGluIGJvdGggQ2hyb21pdW0gYW5kIFNhZmFyaS4KKwor
ICAgICAgICBbTWFjL1NhZmFyaV0gICAgIDQ1OTAuMzMgcnVucy9zICA9PiAgNDk2NS43OSBydW5z
L3MgICgrOC4xOCUpCisgICAgICAgIFtDaHJvbWl1bS9MaW51eF0gMzk3MC42MyBydW5zL3MgID0+
ICA0Mjk5LjY1IHJ1bnMvcyAgKCs4LjI5JSkKKworICAgICAgICBub3RpZnlEZXNjZW5kYW50UmVt
b3ZlZEZyb21Eb2N1bWVudCgpIGNhbm5vdCBpdGVyYXRlIGNoaWxkIG5vZGVzIGluIHRoaXMgd2F5
OgorCisgICAgICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoTm9k
ZSogbm9kZSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAg
ICAgICAuLi47CisgICAgICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
Y2hpbGQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVGhpcyBpcyBiZWNh
dXNlIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KGNoaWxkKSBtaWdodCBkaXNwYXRjaCBl
dmVudHMKKyAgICAgICAgYW5kIHRoZSBldmVudHMgbWlnaHQgY2hhbmdlIGNoaWxkIHRyZWVzLiBU
byBhdm9pZCBzZWN1cml0eSBpc3N1ZXMsIHRoZSBjdXJyZW50CisgICAgICAgIGNvZGUgdGFrZXMg
YSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcyBiZWZvcmUgc3RhcnRpbmcgdGhlIGl0ZXJhdGlvbi4K
KworICAgICAgICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUq
IG5vZGUpIHsKKyAgICAgICAgICAgIE5vZGVWZWN0b3IgY2hpbGRyZW47CisgICAgICAgICAgICBn
ZXRDaGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsgLy8gVGFrZSBhIHNuYXBzaG90LgorICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7IGkrKykgeworICAgICAg
ICAgICAgICAgIC4uLjsKKyAgICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChjaGlsZHJlbltpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBC
YXNlZCBvbiB0aGUgb2JzZXJ2YXRpb24gdGhhdCBpbiBhbG1vc3QgYWxsIGNhc2VzIGV2ZW50cyB3
b24ndCBiZSBkaXNwYXRjaGVkCisgICAgICAgIGZyb20gaW5zaWRlIG5vdGlmeU5vZGVSZW1vdmVk
RnJvbURvY3VtZW50KCksIHRoaXMgcGF0Y2ggaW1wbGVtZW50cworICAgICAgICBhICJsYXp5IiBz
bmFwc2hvdC4gVGhlIHNuYXBzaG90IGlzIHRha2VuIGF0IHRoZSBwb2ludCB3aGVyZQorICAgICAg
ICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoKSBpcyBpbnZva2VkLiBUaGUgc25hcHNo
b3QgaXMgbm90IHRha2VuIHVubGVzcworICAgICAgICBhbnkgZXZlbnQgaXMgZGlzcGF0Y2hlZC4K
KworICAgICAgICBObyB0ZXN0cy4gQ29uZmlybSB0aGF0IGFsbCBleGlzdGluZyB0ZXN0cyBwYXNz
LgorICAgICAgICBBY3R1YWxseSwgYXQgcHJlc2VudCB0aGVyZSBpcyAoc2hvdWxkIGJlKSBubyBj
YXNlIHdoZXJlIGFuIGV2ZW50IGlzCisgICAgICAgIGRpc3BhdGNoZWQgZnJvbSBpbnNpZGUgbm90
aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoKS4gRXZlbiBET01Ob2RlSW5zZXJ0ZWQKKyAgICAg
ICAgYW5kIERPTU5vZGVSZW1vdmVkIGV2ZW50cyBhcmUgbm90IGRpc3BhdGNoZWQuIE9yaWdpbmFs
bHkgdGhlIHNuYXBzaG90IHdhcworICAgICAgICBpbXBsZW1lbnRlZCAianVzdCBpbiBjYXNlIiB0
byBwcm90ZWN0IHRoZSBjb2RlIGZyb20gZnV0dXJlIGF0dGFja3MuCisgICAgICAgIEkgbWFudWFs
bHkgY29uZmlybWVkIHRoYXQgdGhlIGxhenkgc25hcHNob3Qgd29ya3MgY29ycmVjdGx5IGJ5IGlu
c2VydGluZworICAgICAgICB0YWtlQ2hpbGROb2Rlc1NuYXBzaG90KCkgdG8gbm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoKQorICAgICAgICBpbiBhIHJhbmRvbSBtYW5uZXIuCisK
KyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAoQ2hpbGROb2Rlc0xhenlTbmFw
c2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzTGF6eVNuYXBzaG90OjpDaGlsZE5v
ZGVzTGF6eVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5U25hcHNo
b3Q6On5DaGlsZE5vZGVzTGF6eVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9k
ZXNMYXp5U25hcHNob3Q6Om5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNM
YXp5U25hcHNob3Q6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVz
TGF6eVNuYXBzaG90OjpuZXh0U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rl
c0xhenlTbmFwc2hvdDo6aGFzU25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rl
c0xhenlTbmFwc2hvdDo6dGFrZUNoaWxkTm9kZXNMYXp5U25hcHNob3QpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50
SW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAg
ICogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoRXZlbnQpOgorCiAyMDEyLTA3LTMxICBTaGF3biBTaW5naCAgPHNoYXdu
c2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSGl0IHRlc3QgcG9pbnRz
IGFyZSBiZWluZyBjbGlwcGVkIGJ5IGxheWVycyB0aGF0IHNob3VsZCBub3QgY2xpcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDNmY2FkMmJhYzgyY2NhNGE4YWUwODA3NzAy
MTg5ZjE4ZTVmZGMxNzIuLjViZDhkNTlhMTc3YzQ2YmEwOGY4MDhlZDgzZDQyZjQyMDBhYzMxMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTYwLDYgKzYwLDggQEAgc3Rh
dGljIE5vZGVDYWxsYmFja1F1ZXVlKiBzX3Bvc3RBdHRhY2hDYWxsYmFja1F1ZXVlOwogc3RhdGlj
IHNpemVfdCBzX2F0dGFjaERlcHRoOwogc3RhdGljIGJvb2wgc19zaG91bGRSZUVuYWJsZU1lbW9y
eUNhY2hlQ2FsbHNBZnRlckF0dGFjaDsKIAorQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGRO
b2Rlc0xhenlTbmFwc2hvdDo6bGF0ZXN0U25hcHNob3QgPSAwOworCiBzdGF0aWMgdm9pZCBjb2xs
ZWN0VGFyZ2V0Tm9kZXMoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiB7CiAgICAgaWYg
KG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggOWFiYWYyMzczYzBhOTBiMDNjYmEyMjIyYzk1
YWIxODlkYjdjMmU3ZC4uYmQ1MTBkZjNjMWY0MzBmN2MxZmU1OTg4ZGEyM2U0MmU1MGM3N2I5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtMjk4LDYgKzMwMSw3MyBAQCBpbmxp
bmUgdm9pZCBnZXRDaGlsZE5vZGVzKE5vZGUqIG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQogICAg
ICAgICBub2Rlcy5hcHBlbmQoY2hpbGQpOwogfQogCitjbGFzcyBDaGlsZE5vZGVzTGF6eVNuYXBz
aG90IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDaGlsZE5vZGVzTGF6eVNuYXBzaG90KTsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDaGlsZE5vZGVzTGF6
eVNuYXBzaG90KE5vZGUqIHBhcmVudE5vZGUpCisgICAgICAgIDogbV9wYXJlbnROb2RlKHBhcmVu
dE5vZGUpCisgICAgICAgICwgbV9jdXJyZW50Tm9kZShwYXJlbnROb2RlLT5maXJzdENoaWxkKCkp
CisgICAgICAgICwgbV9jdXJyZW50SW5kZXgoMCkKKyAgICB7CisgICAgICAgIG1fbmV4dFNuYXBz
aG90ID0gbGF0ZXN0U25hcHNob3Q7CisgICAgICAgIGxhdGVzdFNuYXBzaG90ID0gdGhpczsKKyAg
ICB9CisKKyAgICB+Q2hpbGROb2Rlc0xhenlTbmFwc2hvdCgpCisgICAgeworICAgICAgICBsYXRl
c3RTbmFwc2hvdCA9IG1fbmV4dFNuYXBzaG90OworICAgIH0KKworICAgIC8vIFJldHVybnMgMCBp
ZiB0aGVyZSBpcyBubyBuZXh0IE5vZGUuCisgICAgTm9kZSogbmV4dE5vZGUoKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWSghbV9jaGlsZE5vZGVzLmdldCgpKSkgeworICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fY3VycmVudE5vZGU7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50Tm9kZSkK
KyAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbV9jdXJyZW50Tm9kZS0+bmV4dFNpYmxp
bmcoKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisgICAgICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiogbm9kZVZlY3RvciA9IG1fY2hpbGROb2Rlcy5nZXQoKTsKKyAgICAg
ICAgaWYgKG1fY3VycmVudEluZGV4ID49IG5vZGVWZWN0b3ItPnNpemUoKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gKCpub2RlVmVjdG9yKVttX2N1cnJlbnRJbmRleCsr
XS5nZXQoKTsKKyAgICB9CisKKyAgICB2b2lkIHRha2VTbmFwc2hvdCgpCisgICAgeworICAgICAg
ICBpZiAoaGFzU25hcHNob3QoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jaGls
ZE5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGU7CisgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAg
ICAgICAgICBtX2NoaWxkTm9kZXMtPmFwcGVuZChub2RlKTsKKyAgICAgICAgICAgIG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgQ2hpbGROb2Rlc0xh
enlTbmFwc2hvdCogbmV4dFNuYXBzaG90KCkgeyByZXR1cm4gbV9uZXh0U25hcHNob3Q7IH0KKyAg
ICBib29sIGhhc1NuYXBzaG90KCkgeyByZXR1cm4gISFtX2NoaWxkTm9kZXMuZ2V0KCk7IH0KKwor
ICAgIHN0YXRpYyB2b2lkIHRha2VDaGlsZE5vZGVzTGF6eVNuYXBzaG90KCkKKyAgICB7CisgICAg
ICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIHNuYXBzaG90ID0gbGF0ZXN0U25hcHNob3Q7Cisg
ICAgICAgIHdoaWxlIChzbmFwc2hvdCAmJiAhc25hcHNob3QtPmhhc1NuYXBzaG90KCkpIHsKKyAg
ICAgICAgICAgIHNuYXBzaG90LT50YWtlU25hcHNob3QoKTsKKyAgICAgICAgICAgIHNuYXBzaG90
ID0gc25hcHNob3QtPm5leHRTbmFwc2hvdCgpOworICAgICAgICB9CisgICAgfQorCitwcml2YXRl
OgorICAgIHN0YXRpYyBDaGlsZE5vZGVzTGF6eVNuYXBzaG90KiBsYXRlc3RTbmFwc2hvdDsKKwor
ICAgIE5vZGUqIG1fcGFyZW50Tm9kZTsKKyAgICBOb2RlKiBtX2N1cnJlbnROb2RlOworICAgIHVu
c2lnbmVkIG1fY3VycmVudEluZGV4OworICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPE5vZGU+ID4g
PiBtX2NoaWxkTm9kZXM7IC8vIExhemlseSBpbnN0YW50aWF0ZWQuCisgICAgQ2hpbGROb2Rlc0xh
enlTbmFwc2hvdCogbV9uZXh0U25hcHNob3Q7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBDb250YWluZXJOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IGM4OTU5ZGZiODE2M2Y0ZWU5NWI0NWUwOTNm
NGY3YmM1MWMzZjU2M2MuLjJlZGVhMzBlMGMwODZlZTBlY2Y4MzQzZTU5NjVlZjk4MmRlYjMwMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApA
QCAtMzQsMTYgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDaGlsZE5vZGVJ
bnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KENv
bnRhaW5lck5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKLSAgICBnZXRD
aGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
aWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCBzbmFwc2hv
dChub2RlKTsKKyAgICB3aGlsZSAoTm9kZSogY2hpbGQgPSBzbmFwc2hvdC5uZXh0Tm9kZSgpKSB7
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGR1
cmluZyB0aGlzIGxvb3AsIHRoZW4KICAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0ZWxsIHRo
ZSByZXN0IG9mIG91ciBjaGlsZHJlbiB0aGF0IHRoZXkndmUgYmVlbgogICAgICAgICAvLyBpbnNl
cnRlZCBpbnRvIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkgaGF2ZW4ndC4KLSAgICAgICAgaWYg
KG5vZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZHJlbltpXS0+cGFyZW50Tm9kZSgpID09IG5vZGUp
Ci0gICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY2hpbGRyZW5baV0u
Z2V0KCkpOworICAgICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpICYmIGNoaWxkLT5wYXJlbnRO
b2RlKCkgPT0gbm9kZSkKKyAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVu
dChjaGlsZCk7CiAgICAgfQotICAgICAgICAKKwogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9k
ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3LDE0ICs2NiwxMyBAQCB2b2lkIENoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShDb250
YWluZXJOb2RlKgogCiB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSogbm9kZSkKIHsKLSAgICBOb2Rl
VmVjdG9yIGNoaWxkcmVuOwotICAgIGdldENoaWxkTm9kZXMobm9kZSwgY2hpbGRyZW4pOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICBDaGls
ZE5vZGVzTGF6eVNuYXBzaG90IHNuYXBzaG90KG5vZGUpOworICAgIHdoaWxlIChOb2RlKiBjaGls
ZCA9IHNuYXBzaG90Lm5leHROb2RlKCkpIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIGFk
ZGVkIHRvIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuIHdlCiAgICAgICAgIC8v
IGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0aGV5J3Zl
IGJlZW4KICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBiZWNhdXNlIHRoZXkg
aGF2ZW4ndC4KLSAgICAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkgJiYgY2hpbGRyZW5baV0t
PnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9t
RG9jdW1lbnQoY2hpbGRyZW5baV0uZ2V0KCkpOworICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1l
bnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IG5vZGUpCisgICAgICAgICAgICBub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudChjaGlsZCk7CiAgICAgfQogCiAgICAgaWYgKCFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNw
YXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4
IDM5MjU5YTA3YjFmNjkzZDU2ZjU1ZjM4MGY5MDJkODRiMGIxNjlhZTMuLjEyOWYwYzlkZjhlMzE3
MjdhYTAzZjNmOGM3NDBlOTNiNzJjMDVhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3Bh
dGNoZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgi
CiAKICNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJDb250
YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
Q29udGV4dC5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIgpAQCAtMjM4LDYg
KzIzOSw4IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVu
dCogZXZlbnQpCiAKIGJvb2wgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogeworICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3Q6OnRha2VDaGls
ZE5vZGVzTGF6eVNuYXBzaG90KCk7CisKICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFyZ2V0
UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKG1fbm9kZS5nZXQoKSkpOwogCiAgICAgQVNTRVJUKCFl
dmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157065</attachid>
            <date>2012-08-07 18:08:03 -0700</date>
            <delta_ts>2012-08-07 18:08:03 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-92965-20120808100738.patch</filename>
            <type>text/plain</type>
            <size>10250</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uMWU2MWU4YTcxYWE5ZmIxYmM4OGFiOWFjYmIzN2U2
OWZkMWIzNWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA4LTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDaGls
ZE5vZGV7SW5zZXJ0aW9uLFJlbW92YWx9Tm90aWZpZXI6Om5vdGlmeSgpIGJ5IGxhemlseSB0YWtp
bmcgYSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NjUKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgcGVyZm9ybWFuY2Ugb2YgRHJvbWFl
by9kb20tbW9kaWZ5IGJ5IDguMiUgaW4gYm90aCBDaHJvbWl1bSBhbmQgU2FmYXJpLgorCisgICAg
ICAgIFtNYWMvU2FmYXJpXSAgICAgNDU5MC4zMyBydW5zL3MgID0+ICA0OTY1Ljc5IHJ1bnMvcyAg
KCs4LjE4JSkKKyAgICAgICAgW0Nocm9taXVtL0xpbnV4XSAzOTcwLjYzIHJ1bnMvcyAgPT4gIDQy
OTkuNjUgcnVucy9zICAoKzguMjklKQorCisgICAgICAgIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVk
RnJvbURvY3VtZW50KCkgY2Fubm90IGl0ZXJhdGUgY2hpbGQgbm9kZXMgaW4gdGhpcyB3YXk6CisK
KyAgICAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKiBu
b2RlKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAg
IC4uLjsKKyAgICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChjaGls
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBUaGlzIGlzIGJlY2F1c2Ug
bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpIG1pZ2h0IGRpc3BhdGNoIGV2ZW50
cworICAgICAgICBhbmQgdGhlIGV2ZW50cyBtaWdodCBjaGFuZ2UgY2hpbGQgdHJlZXMuIFRvIGF2
b2lkIHNlY3VyaXR5IGlzc3VlcywgdGhlIGN1cnJlbnQKKyAgICAgICAgY29kZSB0YWtlcyBhIHNu
YXBzaG90IG9mIGNoaWxkIG5vZGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaXRlcmF0aW9uLgorCisg
ICAgICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9k
ZSkgeworICAgICAgICAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKKyAgICAgICAgICAgIGdldENo
aWxkTm9kZXMobm9kZSwgY2hpbGRyZW4pOyAvLyBUYWtlIGEgc25hcHNob3QuCisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgLi4uOworICAgICAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50
KGNoaWxkcmVuW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEJhc2Vk
IG9uIHRoZSBvYnNlcnZhdGlvbiB0aGF0IGluIGFsbW9zdCBhbGwgY2FzZXMgZXZlbnRzIHdvbid0
IGJlIGRpc3BhdGNoZWQKKyAgICAgICAgZnJvbSBpbnNpZGUgbm90aWZ5Tm9kZVJlbW92ZWRGcm9t
RG9jdW1lbnQoKSwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzCisgICAgICAgIGEgImxhenkiIHNuYXBz
aG90LiBUaGUgc25hcHNob3QgaXMgdGFrZW4gYXQgdGhlIHBvaW50IHdoZXJlCisgICAgICAgIEV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpIGlzIGludm9rZWQuIFRoZSBzbmFwc2hvdCBp
cyBub3QgdGFrZW4gdW5sZXNzCisgICAgICAgIGFueSBldmVudCBpcyBkaXNwYXRjaGVkLgorCisg
ICAgICAgIE5vIHRlc3RzLiBDb25maXJtIHRoYXQgYWxsIGV4aXN0aW5nIHRlc3RzIHBhc3MuCisg
ICAgICAgIEFjdHVhbGx5LCBhdCBwcmVzZW50IHRoZXJlIGlzIChzaG91bGQgYmUpIG5vIGNhc2Ug
d2hlcmUgYW4gZXZlbnQgaXMKKyAgICAgICAgZGlzcGF0Y2hlZCBmcm9tIGluc2lkZSBub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudCgpLiBFdmVuIERPTU5vZGVJbnNlcnRlZAorICAgICAgICBh
bmQgRE9NTm9kZVJlbW92ZWQgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4gT3JpZ2luYWxseSB0
aGUgc25hcHNob3Qgd2FzCisgICAgICAgIGltcGxlbWVudGVkICJqdXN0IGluIGNhc2UiIHRvIHBy
b3RlY3QgdGhlIGNvZGUgZnJvbSBmdXR1cmUgYXR0YWNrcy4KKyAgICAgICAgSSBtYW51YWxseSBj
b25maXJtZWQgdGhhdCB0aGUgbGF6eSBzbmFwc2hvdCB3b3JrcyBjb3JyZWN0bHkgYnkgaW5zZXJ0
aW5nCisgICAgICAgIHRha2VDaGlsZE5vZGVzU25hcHNob3QoKSB0byBub3RpZnlEZXNjZW5kYW50
UmVtb3ZlZEZyb21Eb2N1bWVudCgpCisgICAgICAgIGluIGEgcmFuZG9tIG1hbm5lci4KKworICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDaGlsZE5vZGVzTGF6eVNuYXBzaG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5U25hcHNob3Q6OkNoaWxkTm9kZXNM
YXp5U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6
fkNoaWxkTm9kZXNMYXp5U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xh
enlTbmFwc2hvdDo6bmV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlT
bmFwc2hvdDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5
U25hcHNob3Q6Om5leHRTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzTGF6
eVNuYXBzaG90OjpoYXNTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzTGF6
eVNuYXBzaG90Ojp0YWtlQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNl
cnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKiBk
b20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hFdmVudCk6CisKIDIwMTItMDgtMDcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBQbGF0Zm9ybVRvdWNoRXZlbnRF
ZmwgYW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IDE3YzUwNWE1ZDI1OWQzMmU2MjJiMTE4MzYxOGRlYTMzYWU4ZjFhOTIuLjdjNzdi
OTMzNGE3MjE0NmZhNzg4YWQwOTk1ZWQ5OTk2ZjZhZjQ4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTYwLDYgKzYwLDggQEAgc3RhdGljIE5vZGVDYWxsYmFja1F1ZXVl
KiBzX3Bvc3RBdHRhY2hDYWxsYmFja1F1ZXVlOwogc3RhdGljIHNpemVfdCBzX2F0dGFjaERlcHRo
Owogc3RhdGljIGJvb2wgc19zaG91bGRSZUVuYWJsZU1lbW9yeUNhY2hlQ2FsbHNBZnRlckF0dGFj
aDsKIAorQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6bGF0
ZXN0U25hcHNob3QgPSAwOworCiBzdGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSog
bm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiB7CiAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKaW5kZXggNGE3ZDFkMzM5N2ExYWQzMGFjY2M2Nzc0NmJmY2JmMjRhMDA2ODRlOC4uOGY2ZDUz
YjFmMDcyNGZlODYwYmViY2Q4OWQ2Y2EwZjRhYjk3ZWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
bG9hdFBvaW50OwpAQCAtMjk4LDYgKzMwMSw3MyBAQCBpbmxpbmUgdm9pZCBnZXRDaGlsZE5vZGVz
KE5vZGUqIG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQogICAgICAgICBub2Rlcy5hcHBlbmQoY2hp
bGQpOwogfQogCitjbGFzcyBDaGlsZE5vZGVzTGF6eVNuYXBzaG90IHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDaGlsZE5vZGVzTGF6eVNuYXBzaG90KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDaGlsZE5vZGVzTGF6eVNuYXBzaG90KE5vZGUqIHBhcmVu
dE5vZGUpCisgICAgICAgIDogbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCisgICAgICAgICwgbV9j
dXJyZW50Tm9kZShwYXJlbnROb2RlLT5maXJzdENoaWxkKCkpCisgICAgICAgICwgbV9jdXJyZW50
SW5kZXgoMCkKKyAgICB7CisgICAgICAgIG1fbmV4dFNuYXBzaG90ID0gbGF0ZXN0U25hcHNob3Q7
CisgICAgICAgIGxhdGVzdFNuYXBzaG90ID0gdGhpczsKKyAgICB9CisKKyAgICB+Q2hpbGROb2Rl
c0xhenlTbmFwc2hvdCgpCisgICAgeworICAgICAgICBsYXRlc3RTbmFwc2hvdCA9IG1fbmV4dFNu
YXBzaG90OworICAgIH0KKworICAgIC8vIFJldHVybnMgMCBpZiB0aGVyZSBpcyBubyBuZXh0IE5v
ZGUuCisgICAgTm9kZSogbmV4dE5vZGUoKQorICAgIHsKKyAgICAgICAgaWYgKExJS0VMWSghaGFz
U25hcHNob3QoKSkpIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlOwor
ICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUpCisgICAgICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZSA9IG1fY3VycmVudE5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICByZXR1cm4g
bm9kZTsKKyAgICAgICAgfQorICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4qIG5vZGVWZWN0
b3IgPSBtX2NoaWxkTm9kZXMuZ2V0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA+PSBu
b2RlVmVjdG9yLT5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
ICgqbm9kZVZlY3RvcilbbV9jdXJyZW50SW5kZXgrK10uZ2V0KCk7CisgICAgfQorCisgICAgdm9p
ZCB0YWtlU25hcHNob3QoKQorICAgIHsKKyAgICAgICAgaWYgKGhhc1NuYXBzaG90KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2hpbGROb2RlcyA9IGFkb3B0UHRyKG5ldyBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4oKSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2Rl
OworICAgICAgICB3aGlsZSAobm9kZSkgeworICAgICAgICAgICAgbV9jaGlsZE5vZGVzLT5hcHBl
bmQobm9kZSk7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIG5leHRTbmFwc2hvdCgp
IHsgcmV0dXJuIG1fbmV4dFNuYXBzaG90OyB9CisgICAgYm9vbCBoYXNTbmFwc2hvdCgpIHsgcmV0
dXJuICEhbV9jaGlsZE5vZGVzLmdldCgpOyB9CisKKyAgICBzdGF0aWMgdm9pZCB0YWtlQ2hpbGRO
b2Rlc0xhenlTbmFwc2hvdCgpCisgICAgeworICAgICAgICBDaGlsZE5vZGVzTGF6eVNuYXBzaG90
KiBzbmFwc2hvdCA9IGxhdGVzdFNuYXBzaG90OworICAgICAgICB3aGlsZSAoc25hcHNob3QgJiYg
IXNuYXBzaG90LT5oYXNTbmFwc2hvdCgpKSB7CisgICAgICAgICAgICBzbmFwc2hvdC0+dGFrZVNu
YXBzaG90KCk7CisgICAgICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LT5uZXh0U25hcHNob3Qo
KTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2hpbGROb2Rlc0xh
enlTbmFwc2hvdCogbGF0ZXN0U25hcHNob3Q7CisKKyAgICBOb2RlKiBtX3BhcmVudE5vZGU7Cisg
ICAgTm9kZSogbV9jdXJyZW50Tm9kZTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRJbmRleDsKKyAg
ICBPd25QdHI8VmVjdG9yPFJlZlB0cjxOb2RlPiA+ID4gbV9jaGlsZE5vZGVzOyAvLyBMYXppbHkg
aW5zdGFudGlhdGVkLgorICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIG1fbmV4dFNuYXBzaG90
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ29udGFpbmVyTm9k
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApp
bmRleCBjODk1OWRmYjgxNjNmNGVlOTViNDVlMDkzZjRmN2JjNTFjM2Y1NjNjLi4yZWRlYTMwZTBj
MDg2ZWUwZWNmODM0M2U1OTY1ZWY5ODJkZWIzMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTM0LDE2ICszNCwxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURl
c2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOb2RlKiBub2RlKQogewotICAg
IE5vZGVWZWN0b3IgY2hpbGRyZW47Ci0gICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBjaGlsZHJlbik7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAg
IENoaWxkTm9kZXNMYXp5U25hcHNob3Qgc25hcHNob3Qobm9kZSk7CisgICAgd2hpbGUgKE5vZGUq
IGNoaWxkID0gc25hcHNob3QubmV4dE5vZGUoKSkgewogICAgICAgICAvLyBJZiB3ZSBoYXZlIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuCiAgICAg
ICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhh
dCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9jdW1lbnQgYmVj
YXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkgJiYgY2hp
bGRyZW5baV0tPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90aWZ5Tm9kZUlu
c2VydGVkSW50b0RvY3VtZW50KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKG5vZGUt
PmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IG5vZGUpCisgICAgICAgICAg
ICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY2hpbGQpOwogICAgIH0KLSAgICAgICAg
CisKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC02NywxNCArNjYsMTMgQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5
RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKIAogdm9pZCBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENv
bnRhaW5lck5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKLSAgICBnZXRD
aGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
aWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCBzbmFwc2hv
dChub2RlKTsKKyAgICB3aGlsZSAoTm9kZSogY2hpbGQgPSBzbmFwc2hvdC5uZXh0Tm9kZSgpKSB7
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZG9jdW1lbnQgZHVyaW5n
IHRoaXMgbG9vcCwgdGhlbiB3ZQogICAgICAgICAvLyBkb24ndCB3YW50IHRvIHRlbGwgdGhlIHJl
c3Qgb2Ygb3VyIGNoaWxkcmVuIHRoYXQgdGhleSd2ZSBiZWVuCiAgICAgICAgIC8vIHJlbW92ZWQg
ZnJvbSB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAgIGlmICghbm9k
ZS0+aW5Eb2N1bWVudCgpICYmIGNoaWxkcmVuW2ldLT5wYXJlbnROb2RlKCkgPT0gbm9kZSkKLSAg
ICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KGNoaWxkcmVuW2ldLmdldCgp
KTsKKyAgICAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUo
KSA9PSBub2RlKQorICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hp
bGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA5YmMwZGJhODIzNDVjNGJlYjUyMjU1ODkw
YWEzODY2NWY2YTQ1YWRkLi5kNjJjNWYzNWVkZWFjNGY4MmYxNmVjZmRjMTM1NDYxNjRiNTZlYzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNpbmNsdWRlICJFdmVu
dERpc3BhdGNoTWVkaWF0b3IuaCIKQEAgLTIzOSw2ICsyNDAsOCBAQCB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6ZW5zdXJlRXZlbnRBbmNlc3RvcnMoRXZlbnQqIGV2ZW50KQogYm9vbCBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiB7CiAgICAg
UmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIENoaWxkTm9kZXNMYXp5U25hcHNo
b3Q6OnRha2VDaGlsZE5vZGVzTGF6eVNuYXBzaG90KCk7CisKICAgICBldmVudC0+c2V0VGFyZ2V0
KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKG1fbm9kZS5nZXQoKSkpOwogICAg
IEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRh
cmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAppbmRleCAxNGUyOGMxYWQ5
ZmMxMzczYjY5ZjNkZWMxOTUxMjkwNzY5ZGIwOWQxLi4wYzM3MDhhNWE5Njc0OTQ5YjliM2Q0NmIx
YTVmMzBlYzAzYjdhZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNw
YXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub2RlKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgRXZlbnREaXNwYXRjaGVyKE5vZGUqKTsKKyAgICBleHBsaWNpdCBFdmVudERpc3BhdGNo
ZXIoTm9kZSopOwogCiAgICAgRXZlbnREaXNwYXRjaEJlaGF2aW9yIGRldGVybWluZURpc3BhdGNo
QmVoYXZpb3IoRXZlbnQqLCBTaGFkb3dSb290KiwgRXZlbnRUYXJnZXQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157066</attachid>
            <date>2012-08-07 18:09:35 -0700</date>
            <delta_ts>2012-08-07 22:38:51 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-92965-20120808100909.patch</filename>
            <type>text/plain</type>
            <size>9765</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uMWU2MWU4YTcxYWE5ZmIxYmM4OGFiOWFjYmIzN2U2
OWZkMWIzNWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA4LTAyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBDaGls
ZE5vZGV7SW5zZXJ0aW9uLFJlbW92YWx9Tm90aWZpZXI6Om5vdGlmeSgpIGJ5IGxhemlseSB0YWtp
bmcgYSBzbmFwc2hvdCBvZiBjaGlsZCBub2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NjUKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgcGVyZm9ybWFuY2Ugb2YgRHJvbWFl
by9kb20tbW9kaWZ5IGJ5IDguMiUgaW4gYm90aCBDaHJvbWl1bSBhbmQgU2FmYXJpLgorCisgICAg
ICAgIFtNYWMvU2FmYXJpXSAgICAgNDU5MC4zMyBydW5zL3MgID0+ICA0OTY1Ljc5IHJ1bnMvcyAg
KCs4LjE4JSkKKyAgICAgICAgW0Nocm9taXVtL0xpbnV4XSAzOTcwLjYzIHJ1bnMvcyAgPT4gIDQy
OTkuNjUgcnVucy9zICAoKzguMjklKQorCisgICAgICAgIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVk
RnJvbURvY3VtZW50KCkgY2Fubm90IGl0ZXJhdGUgY2hpbGQgbm9kZXMgaW4gdGhpcyB3YXk6CisK
KyAgICAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKiBu
b2RlKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAg
IC4uLjsKKyAgICAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChjaGls
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBUaGlzIGlzIGJlY2F1c2Ug
bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoY2hpbGQpIG1pZ2h0IGRpc3BhdGNoIGV2ZW50
cworICAgICAgICBhbmQgdGhlIGV2ZW50cyBtaWdodCBjaGFuZ2UgY2hpbGQgdHJlZXMuIFRvIGF2
b2lkIHNlY3VyaXR5IGlzc3VlcywgdGhlIGN1cnJlbnQKKyAgICAgICAgY29kZSB0YWtlcyBhIHNu
YXBzaG90IG9mIGNoaWxkIG5vZGVzIGJlZm9yZSBzdGFydGluZyB0aGUgaXRlcmF0aW9uLgorCisg
ICAgICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9k
ZSkgeworICAgICAgICAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKKyAgICAgICAgICAgIGdldENo
aWxkTm9kZXMobm9kZSwgY2hpbGRyZW4pOyAvLyBUYWtlIGEgc25hcHNob3QuCisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgLi4uOworICAgICAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50
KGNoaWxkcmVuW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEJhc2Vk
IG9uIHRoZSBvYnNlcnZhdGlvbiB0aGF0IGluIGFsbW9zdCBhbGwgY2FzZXMgZXZlbnRzIHdvbid0
IGJlIGRpc3BhdGNoZWQKKyAgICAgICAgZnJvbSBpbnNpZGUgbm90aWZ5Tm9kZVJlbW92ZWRGcm9t
RG9jdW1lbnQoKSwgdGhpcyBwYXRjaCBpbXBsZW1lbnRzCisgICAgICAgIGEgImxhenkiIHNuYXBz
aG90LiBUaGUgc25hcHNob3QgaXMgdGFrZW4gYXQgdGhlIHBvaW50IHdoZXJlCisgICAgICAgIEV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgpIGlzIGludm9rZWQuIFRoZSBzbmFwc2hvdCBp
cyBub3QgdGFrZW4gdW5sZXNzCisgICAgICAgIGFueSBldmVudCBpcyBkaXNwYXRjaGVkLgorCisg
ICAgICAgIE5vIHRlc3RzLiBDb25maXJtIHRoYXQgYWxsIGV4aXN0aW5nIHRlc3RzIHBhc3MuCisg
ICAgICAgIEFjdHVhbGx5LCBhdCBwcmVzZW50IHRoZXJlIGlzIChzaG91bGQgYmUpIG5vIGNhc2Ug
d2hlcmUgYW4gZXZlbnQgaXMKKyAgICAgICAgZGlzcGF0Y2hlZCBmcm9tIGluc2lkZSBub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudCgpLiBFdmVuIERPTU5vZGVJbnNlcnRlZAorICAgICAgICBh
bmQgRE9NTm9kZVJlbW92ZWQgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZC4gT3JpZ2luYWxseSB0
aGUgc25hcHNob3Qgd2FzCisgICAgICAgIGltcGxlbWVudGVkICJqdXN0IGluIGNhc2UiIHRvIHBy
b3RlY3QgdGhlIGNvZGUgZnJvbSBmdXR1cmUgYXR0YWNrcy4KKyAgICAgICAgSSBtYW51YWxseSBj
b25maXJtZWQgdGhhdCB0aGUgbGF6eSBzbmFwc2hvdCB3b3JrcyBjb3JyZWN0bHkgYnkgaW5zZXJ0
aW5nCisgICAgICAgIHRha2VDaGlsZE5vZGVzU25hcHNob3QoKSB0byBub3RpZnlEZXNjZW5kYW50
UmVtb3ZlZEZyb21Eb2N1bWVudCgpCisgICAgICAgIGluIGEgcmFuZG9tIG1hbm5lci4KKworICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDaGlsZE5vZGVzTGF6eVNuYXBzaG90
KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5U25hcHNob3Q6OkNoaWxkTm9kZXNM
YXp5U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6
fkNoaWxkTm9kZXNMYXp5U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xh
enlTbmFwc2hvdDo6bmV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlT
bmFwc2hvdDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZXNMYXp5
U25hcHNob3Q6Om5leHRTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzTGF6
eVNuYXBzaG90OjpoYXNTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVzTGF6
eVNuYXBzaG90Ojp0YWtlQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNl
cnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKiBk
b20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hFdmVudCk6CisKIDIwMTItMDgtMDcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9p
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBQbGF0Zm9ybVRvdWNoRXZlbnRF
ZmwgYW5kIFBsYXRmb3JtVG91Y2hQb2ludEVmbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IDE3YzUwNWE1ZDI1OWQzMmU2MjJiMTE4MzYxOGRlYTMzYWU4ZjFhOTIuLjdjNzdi
OTMzNGE3MjE0NmZhNzg4YWQwOTk1ZWQ5OTk2ZjZhZjQ4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTYwLDYgKzYwLDggQEAgc3RhdGljIE5vZGVDYWxsYmFja1F1ZXVl
KiBzX3Bvc3RBdHRhY2hDYWxsYmFja1F1ZXVlOwogc3RhdGljIHNpemVfdCBzX2F0dGFjaERlcHRo
Owogc3RhdGljIGJvb2wgc19zaG91bGRSZUVuYWJsZU1lbW9yeUNhY2hlQ2FsbHNBZnRlckF0dGFj
aDsKIAorQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6bGF0
ZXN0U25hcHNob3QgPSAwOworCiBzdGF0aWMgdm9pZCBjb2xsZWN0VGFyZ2V0Tm9kZXMoTm9kZSog
bm9kZSwgTm9kZVZlY3RvciYgbm9kZXMpCiB7CiAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0g
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKaW5kZXggNGE3ZDFkMzM5N2ExYWQzMGFjY2M2Nzc0NmJmY2JmMjRhMDA2ODRlOC4uZGZkNDA0
N2Q2NTU2MGFjMGQ3ZjA2YmZlMDEyY2M0OGQ0OTQ4OWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
bG9hdFBvaW50OwpAQCAtMjk4LDYgKzMwMSw3MyBAQCBpbmxpbmUgdm9pZCBnZXRDaGlsZE5vZGVz
KE5vZGUqIG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQogICAgICAgICBub2Rlcy5hcHBlbmQoY2hp
bGQpOwogfQogCitjbGFzcyBDaGlsZE5vZGVzTGF6eVNuYXBzaG90IHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDaGlsZE5vZGVzTGF6eVNuYXBzaG90KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDaGlsZE5vZGVzTGF6eVNuYXBzaG90KE5v
ZGUqIHBhcmVudE5vZGUpCisgICAgICAgIDogbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCisgICAg
ICAgICwgbV9jdXJyZW50Tm9kZShwYXJlbnROb2RlLT5maXJzdENoaWxkKCkpCisgICAgICAgICwg
bV9jdXJyZW50SW5kZXgoMCkKKyAgICB7CisgICAgICAgIG1fbmV4dFNuYXBzaG90ID0gbGF0ZXN0
U25hcHNob3Q7CisgICAgICAgIGxhdGVzdFNuYXBzaG90ID0gdGhpczsKKyAgICB9CisKKyAgICB+
Q2hpbGROb2Rlc0xhenlTbmFwc2hvdCgpCisgICAgeworICAgICAgICBsYXRlc3RTbmFwc2hvdCA9
IG1fbmV4dFNuYXBzaG90OworICAgIH0KKworICAgIC8vIFJldHVybnMgMCBpZiB0aGVyZSBpcyBu
byBuZXh0IE5vZGUuCisgICAgTm9kZSogbmV4dE5vZGUoKQorICAgIHsKKyAgICAgICAgaWYgKExJ
S0VMWSghaGFzU25hcHNob3QoKSkpIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1cnJl
bnROb2RlOworICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUpCisgICAgICAgICAgICAgICAg
bV9jdXJyZW50Tm9kZSA9IG1fY3VycmVudE5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gbm9kZTsKKyAgICAgICAgfQorICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4q
IG5vZGVWZWN0b3IgPSBtX2NoaWxkTm9kZXMuZ2V0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnRJ
bmRleCA+PSBub2RlVmVjdG9yLT5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuICgqbm9kZVZlY3RvcilbbV9jdXJyZW50SW5kZXgrK10uZ2V0KCk7CisgICAgfQor
CisgICAgdm9pZCB0YWtlU25hcHNob3QoKQorICAgIHsKKyAgICAgICAgaWYgKGhhc1NuYXBzaG90
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2hpbGROb2RlcyA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8UmVmUHRyPE5vZGU+ID4oKSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX2N1
cnJlbnROb2RlOworICAgICAgICB3aGlsZSAobm9kZSkgeworICAgICAgICAgICAgbV9jaGlsZE5v
ZGVzLT5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmco
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIG5leHRT
bmFwc2hvdCgpIHsgcmV0dXJuIG1fbmV4dFNuYXBzaG90OyB9CisgICAgYm9vbCBoYXNTbmFwc2hv
dCgpIHsgcmV0dXJuICEhbV9jaGlsZE5vZGVzLmdldCgpOyB9CisKKyAgICBzdGF0aWMgdm9pZCB0
YWtlQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCgpCisgICAgeworICAgICAgICBDaGlsZE5vZGVzTGF6
eVNuYXBzaG90KiBzbmFwc2hvdCA9IGxhdGVzdFNuYXBzaG90OworICAgICAgICB3aGlsZSAoc25h
cHNob3QgJiYgIXNuYXBzaG90LT5oYXNTbmFwc2hvdCgpKSB7CisgICAgICAgICAgICBzbmFwc2hv
dC0+dGFrZVNuYXBzaG90KCk7CisgICAgICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LT5uZXh0
U25hcHNob3QoKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2hp
bGROb2Rlc0xhenlTbmFwc2hvdCogbGF0ZXN0U25hcHNob3Q7CisKKyAgICBOb2RlKiBtX3BhcmVu
dE5vZGU7CisgICAgTm9kZSogbV9jdXJyZW50Tm9kZTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRJ
bmRleDsKKyAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxOb2RlPiA+ID4gbV9jaGlsZE5vZGVzOyAv
LyBMYXppbHkgaW5zdGFudGlhdGVkLgorICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIG1fbmV4
dFNuYXBzaG90OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ29u
dGFpbmVyTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmNwcAppbmRleCBjODk1OWRmYjgxNjNmNGVlOTViNDVlMDkzZjRmN2JjNTFjM2Y1NjNjLi4y
ZWRlYTMwZTBjMDg2ZWUwZWNmODM0M2U1OTY1ZWY5ODJkZWIzMDJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTM0LDE2ICszNCwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOb2RlKiBub2Rl
KQogewotICAgIE5vZGVWZWN0b3IgY2hpbGRyZW47Ci0gICAgZ2V0Q2hpbGROb2Rlcyhub2RlLCBj
aGlsZHJlbik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsr
aSkgeworICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3Qgc25hcHNob3Qobm9kZSk7CisgICAgd2hp
bGUgKE5vZGUqIGNoaWxkID0gc25hcHNob3QubmV4dE5vZGUoKSkgewogICAgICAgICAvLyBJZiB3
ZSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0
aGVuCiAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hp
bGRyZW4gdGhhdCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gaW5zZXJ0ZWQgaW50byB0aGUgZG9j
dW1lbnQgYmVjYXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50
KCkgJiYgY2hpbGRyZW5baV0tPnBhcmVudE5vZGUoKSA9PSBub2RlKQotICAgICAgICAgICAgbm90
aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAg
aWYgKG5vZGUtPmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IG5vZGUpCisg
ICAgICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY2hpbGQpOwogICAgIH0K
LSAgICAgICAgCisKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC02NywxNCArNjYsMTMgQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKIAogdm9p
ZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURv
Y3VtZW50KENvbnRhaW5lck5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZVZlY3RvciBjaGlsZHJlbjsK
LSAgICBnZXRDaGlsZE5vZGVzKG5vZGUsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hv
dCBzbmFwc2hvdChub2RlKTsKKyAgICB3aGlsZSAoTm9kZSogY2hpbGQgPSBzbmFwc2hvdC5uZXh0
Tm9kZSgpKSB7CiAgICAgICAgIC8vIElmIHdlIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZG9jdW1l
bnQgZHVyaW5nIHRoaXMgbG9vcCwgdGhlbiB3ZQogICAgICAgICAvLyBkb24ndCB3YW50IHRvIHRl
bGwgdGhlIHJlc3Qgb2Ygb3VyIGNoaWxkcmVuIHRoYXQgdGhleSd2ZSBiZWVuCiAgICAgICAgIC8v
IHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0aGV5IGhhdmVuJ3QuCi0gICAgICAg
IGlmICghbm9kZS0+aW5Eb2N1bWVudCgpICYmIGNoaWxkcmVuW2ldLT5wYXJlbnROb2RlKCkgPT0g
bm9kZSkKLSAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KGNoaWxkcmVu
W2ldLmdldCgpKTsKKyAgICAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBh
cmVudE5vZGUoKSA9PSBub2RlKQorICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnQoY2hpbGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA5YmMwZGJhODIzNDVjNGJl
YjUyMjU1ODkwYWEzODY2NWY2YTQ1YWRkLi5kNjJjNWYzNWVkZWFjNGY4MmYxNmVjZmRjMTM1NDYx
NjRiNTZlYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogCiAjaW5jbHVkZSAiQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNpbmNs
dWRlICJFdmVudERpc3BhdGNoTWVkaWF0b3IuaCIKQEAgLTIzOSw2ICsyNDAsOCBAQCB2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6ZW5zdXJlRXZlbnRBbmNlc3RvcnMoRXZlbnQqIGV2ZW50KQogYm9vbCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQp
CiB7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworICAgIENoaWxkTm9kZXNM
YXp5U25hcHNob3Q6OnRha2VDaGlsZE5vZGVzTGF6eVNuYXBzaG90KCk7CisKICAgICBldmVudC0+
c2V0VGFyZ2V0KGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1bGVzKG1fbm9kZS5nZXQo
KSkpOwogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKICAgICBBU1NFUlQo
ZXZlbnQtPnRhcmdldCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>