<?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>61727</bug_id>
          
          <creation_ts>2011-05-30 06:03:13 -0700</creation_ts>
          <short_desc>Add a utility function which dumps a tree for the Node, including a document of a frame.</short_desc>
          <delta_ts>2011-05-31 00:40:03 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>412202</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 06:03:13 -0700</bug_when>
    <thetext>This is a separated patch from bug 59812.

https://bugs.webkit.org/show_bug.cgi?id=59812#c11

I don&apos;t need a public Node::parentOrHostOrFrameOwner function anymore, which is now a private function.
This patch now includes only one public member function, Node::showTreeForThisAcrossFrame, which is useful for debugging a complex document which contains iframe elements.
All other member functions are now private functions.

All functions are available only in debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412204</commentid>
    <comment_count>1</comment_count>
      <attachid>95342</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 06:10:11 -0700</bug_when>
    <thetext>Created attachment 95342
dump also a document of a frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412314</commentid>
    <comment_count>2</comment_count>
      <attachid>95342</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-30 12:00:15 -0700</bug_when>
    <thetext>Comment on attachment 95342
dump also a document of a frame

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

&gt; Source/WebCore/dom/Node.cpp:851
&gt; +inline static ShadowRoot* shadowRoot(const Node* node)

We don&apos;t normally use const Node* because constness goes away as soon as we walk the tree.

&gt; Source/WebCore/dom/Node.cpp:2383
&gt; +    if (!parent &amp;&amp; document()-&gt;frame())
&gt; +        parent = document()-&gt;frame()-&gt;ownerElement();

Shouldn&apos;t you be checking whether document() is null or not?

&gt; Source/WebCore/dom/Node.cpp:2415
&gt; +        if (node == markedNode)
&gt; +            fprintf(stderr, &quot;%s&quot;, markedLabel);

It seems like you can just do fputs(&quot;*&quot;, stderr);

&gt; Source/WebCore/dom/Node.h:504
&gt; +    // Like showTreeForThis, but also shows a document of a frame element.

Nit: I don&apos;t think this comment is necessary.  It repeats what the function name tells me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412438</commentid>
    <comment_count>3</comment_count>
      <attachid>95342</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 20:50:15 -0700</bug_when>
    <thetext>Comment on attachment 95342
dump also a document of a frame

Thank you for the review.

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

&gt;&gt; Source/WebCore/dom/Node.cpp:851
&gt;&gt; +inline static ShadowRoot* shadowRoot(const Node* node)
&gt; 
&gt; We don&apos;t normally use const Node* because constness goes away as soon as we walk the tree.

Done. I reverted this change.

&gt;&gt; Source/WebCore/dom/Node.cpp:2383
&gt;&gt; +        parent = document()-&gt;frame()-&gt;ownerElement();
&gt; 
&gt; Shouldn&apos;t you be checking whether document() is null or not?

Done. Added the null check.
It&apos;s possible that document() is null according to Node::document()&apos;s comment.

&gt;&gt; Source/WebCore/dom/Node.cpp:2415
&gt;&gt; +            fprintf(stderr, &quot;%s&quot;, markedLabel);
&gt; 
&gt; It seems like you can just do fputs(&quot;*&quot;, stderr);

Done. I removed a local variable, markedLabel.

&gt;&gt; Source/WebCore/dom/Node.h:504
&gt;&gt; +    // Like showTreeForThis, but also shows a document of a frame element.
&gt; 
&gt; Nit: I don&apos;t think this comment is necessary.  It repeats what the function name tells me.

Done. Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412439</commentid>
    <comment_count>4</comment_count>
      <attachid>95392</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 20:51:25 -0700</bug_when>
    <thetext>Created attachment 95392
Addressed the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412442</commentid>
    <comment_count>5</comment_count>
      <attachid>95392</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-30 21:08:51 -0700</bug_when>
    <thetext>Comment on attachment 95392
Addressed the review comments.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61727

Missing bug title.  Also, the bug URL + bug title need to appear before the description.

&gt; Source/WebCore/dom/Node.cpp:2411
&gt; +    const Node* node = this;
&gt; +    while (node-&gt;parentOrHostOrFrameOwner())
&gt; +        node = node-&gt;parentOrHostOrFrameOwner();
&gt; +    const Node* rootNode = node;

Can you declare rootNode before the loop and walk up the tree using rootNode instead of node?
That way, you can declare node in the for loop as in:
for (Node* node = rootNode; node; node = node-&gt;traverseNextNodeAcrossFrame())

&gt; Source/WebCore/dom/Node.cpp:2413
&gt; +        if (node == markedNode)

You can just compare node with this here instead of declaring markedNode.

&gt; Source/WebCore/dom/Node.cpp:2418
&gt; +        fprintf(stderr, &quot;%s&quot;, indent.utf8().data());

Come to think of it, there&apos;s no reason to use fprintf here.  You can just do fputs(indent.utf8().data(), stderr).

&gt; Source/WebCore/dom/Node.h:722
&gt; +    // In addition to parentOrHost, also up to a FrameOwnerElement of the current frame.
&gt; +    ContainerNode* parentOrHostOrFrameOwner() const;
&gt; +    // Like traversalNextNode, but traverses also into a document of a frame element.

Again, these comments don&apos;t add any values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412462</commentid>
    <comment_count>6</comment_count>
      <attachid>95392</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 22:59:35 -0700</bug_when>
    <thetext>Comment on attachment 95392
Addressed the review comments.

Hi Ryosuke,
Thank you for the review, again.

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61727
&gt; 
&gt; Missing bug title.  Also, the bug URL + bug title need to appear before the description.

Done.
I am assuming that we cannot have an empty line between a bug title (one line is preferred?) and bug URL.
I omitted the description because this is trivial change and the bug title tells well.

&gt;&gt; Source/WebCore/dom/Node.cpp:2411
&gt;&gt; +    const Node* rootNode = node;
&gt; 
&gt; Can you declare rootNode before the loop and walk up the tree using rootNode instead of node?
&gt; That way, you can declare node in the for loop as in:
&gt; for (Node* node = rootNode; node; node = node-&gt;traverseNextNodeAcrossFrame())

Sure. That&apos;s better.

&gt;&gt; Source/WebCore/dom/Node.cpp:2413
&gt;&gt; +        if (node == markedNode)
&gt; 
&gt; You can just compare node with this here instead of declaring markedNode.

Done

&gt;&gt; Source/WebCore/dom/Node.cpp:2418
&gt;&gt; +        fprintf(stderr, &quot;%s&quot;, indent.utf8().data());
&gt; 
&gt; Come to think of it, there&apos;s no reason to use fprintf here.  You can just do fputs(indent.utf8().data(), stderr).

Done.

&gt;&gt; Source/WebCore/dom/Node.h:722
&gt;&gt; +    // Like traversalNextNode, but traverses also into a document of a frame element.
&gt; 
&gt; Again, these comments don&apos;t add any values.

Okay. I just tried to follow the convention of this file, which has a lot of comments.
I agree with you. The comments don&apos;t add any values here, and they are private member fucntions. I removed the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412463</commentid>
    <comment_count>7</comment_count>
      <attachid>95398</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 23:01:44 -0700</bug_when>
    <thetext>Created attachment 95398
Addressed the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412465</commentid>
    <comment_count>8</comment_count>
      <attachid>95398</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-30 23:14:20 -0700</bug_when>
    <thetext>Comment on attachment 95398
Addressed the review comments.

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

&gt; Source/WebCore/dom/Node.cpp:2387
&gt; +ContainerNode* Node::parentOrHostOrFrameOwner() const
&gt; +{
&gt; +    ContainerNode* parent = parentOrHostNode();
&gt; +    if (!parent &amp;&amp; document() &amp;&amp; document()-&gt;frame())
&gt; +        parent = document()-&gt;frame()-&gt;ownerElement();
&gt; +    return parent;
&gt; +}
&gt; +
&gt; +Node* Node::traverseNextNodeAcrossFrame() const

On my second thought, these functions don&apos;t even need to be member functions since they don&apos;t access any private functions / variables and are only used by showTreeForThisAcrossFrame.  Please make them static local functions before you land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412468</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-30 23:25:29 -0700</bug_when>
    <thetext>Thank you for the review again.

(In reply to comment #8)
&gt; (From update of attachment 95398 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95398&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:2387
&gt; &gt; +ContainerNode* Node::parentOrHostOrFrameOwner() const
&gt; &gt; +{
&gt; &gt; +    ContainerNode* parent = parentOrHostNode();
&gt; &gt; +    if (!parent &amp;&amp; document() &amp;&amp; document()-&gt;frame())
&gt; &gt; +        parent = document()-&gt;frame()-&gt;ownerElement();
&gt; &gt; +    return parent;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +Node* Node::traverseNextNodeAcrossFrame() const
&gt; 
&gt; On my second thought, these functions don&apos;t even need to be member functions since they don&apos;t access any private functions / variables and are only used by showTreeForThisAcrossFrame.  Please make them static local functions before you land.

Okay. I&apos;ll land this patch after I make them static local functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412484</commentid>
    <comment_count>10</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-05-31 00:40:03 -0700</bug_when>
    <thetext>Committed r87716: &lt;http://trac.webkit.org/changeset/87716&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95342</attachid>
            <date>2011-05-30 06:10:11 -0700</date>
            <delta_ts>2011-05-30 20:51:18 -0700</delta_ts>
            <desc>dump also a document of a frame</desc>
            <filename>bug-61727-20110530221009.patch</filename>
            <type>text/plain</type>
            <size>4626</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjA1ZDdmN2FlZmFmNzQ3
MGNkZmI0NjNjNmJkYjlkN2FkMzhmYmMxLi5jNTg0Y2FmYjFiOTQxNDk1Y2E0ZWFiNzdkNTJkYzJj
YTNhMzRiOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDUtMzAgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHV0aWxpdHkgZnVuY3Rpb24sIE5vZGU6OnNob3dU
cmVlRm9yVGhpc0Fjcm9zc0ZyYW1lLCBmb3IgZHVtcGluZyBhIHRyZWUgZm9yIHRoZSBOb2RlLgor
ICAgICAgICBTaW1pbGFyIHRvIGFuIGV4aXN0aW5nIE5vZGU6OnNob3dUcmVlRm9yVGhpcygpIGZ1
bmN0aW9uLCBidXQgZHVtcHMgYWxzbyBhIGRvY3VtZW50IG9mIGEgZnJhbWUgZWxlbWVudC4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3MjcKKwor
ICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgYSBhZGRlZCBmdW5jdGlvbiBpcyBvbmx5IGF2YWls
YWJsZSBpbiBkZWJ1ZyBidWlsZC4KKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JI
b3N0T3JGcmFtZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyYXZlcnNlTmV4dE5v
ZGVBY3Jvc3NGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaG93VHJlZUZvclRoaXNB
Y3Jvc3NGcmFtZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKwogMjAxMS0wNS0yNSAgSmFtZXMg
U2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3Y2YzMjY2NDc1MWY1OGI3ZTI5NmQwOWE1
ZjczZmM5MzUyNzMxOGFmLi5hYTlkNGM0MGYyYWVjNDc1YTQzYjczNTE0YWZmNmZhMDFjMjhjYWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZl
bnQuaCIKQEAgLTg0Nyw3ICs4NDgsNyBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdC
b3goKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIHN0YXRpYyBTaGFkb3dS
b290KiBzaGFkb3dSb290KE5vZGUqIG5vZGUpCitpbmxpbmUgc3RhdGljIFNoYWRvd1Jvb3QqIHNo
YWRvd1Jvb3QoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50
Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dSb290KCkgOiAwOwogfQpAQCAtMjM3NSw2
ICsyMzc2LDUxIEBAIHZvaWQgTm9kZTo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgc3RybmNweShidWZmZXIsIHJlc3VsdC51dGY4KCku
ZGF0YSgpLCBsZW5ndGggLSAxKTsKIH0KIAorQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JI
b3N0T3JGcmFtZU93bmVyKCkgY29uc3QKK3sKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBw
YXJlbnRPckhvc3ROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQgJiYgZG9jdW1lbnQoKS0+ZnJhbWUo
KSkKKyAgICAgICAgcGFyZW50ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7
CisgICAgcmV0dXJuIHBhcmVudDsKK30KKworTm9kZSogTm9kZTo6dHJhdmVyc2VOZXh0Tm9kZUFj
cm9zc0ZyYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoaXNGcmFtZU93bmVyRWxlbWVudCgpKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50Kj4odGhp
cyktPmNvbnRlbnREb2N1bWVudCgpOworICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3cgPSBzaGFk
b3dSb290KHRoaXMpKQorICAgICAgICByZXR1cm4gc2hhZG93LT50cmF2ZXJzZU5leHROb2RlQWNy
b3NzRnJhbWUoKTsKKyAgICBpZiAoZmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm4gZmlyc3RD
aGlsZCgpOworICAgIGlmIChuZXh0U2libGluZygpKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxp
bmcoKTsKKyAgICBjb25zdCBOb2RlKiBuID0gdGhpczsKKyAgICB3aGlsZSAobiAmJiAhbi0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgbiA9IG4tPnBhcmVudE9ySG9zdE9yRnJhbWVPd25lcigpOwor
ICAgIGlmIChuKQorICAgICAgICByZXR1cm4gbi0+bmV4dFNpYmxpbmcoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordm9pZCBOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSgpIGNvbnN0Cit7
CisgICAgY29uc3QgTm9kZSogbWFya2VkTm9kZSA9IHRoaXM7CisgICAgY29uc3QgY2hhciogbWFy
a2VkTGFiZWwgPSAiKiI7CisgICAgY29uc3QgTm9kZSogbm9kZSA9IHRoaXM7CisgICAgd2hpbGUg
KG5vZGUtPnBhcmVudE9ySG9zdE9yRnJhbWVPd25lcigpKQorICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKCk7CisgICAgY29uc3QgTm9kZSogcm9vdE5vZGUgPSBu
b2RlOworICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZUFjcm9z
c0ZyYW1lKCkpIHsKKyAgICAgICAgaWYgKG5vZGUgPT0gbWFya2VkTm9kZSkKKyAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiJXMiLCBtYXJrZWRMYWJlbCk7CisgICAgICAgIFN0cmluZyBpbmRl
bnQ7CisgICAgICAgIGZvciAoY29uc3QgTm9kZSogdG1wTm9kZSA9IG5vZGU7IHRtcE5vZGUgJiYg
dG1wTm9kZSAhPSByb290Tm9kZTsgdG1wTm9kZSA9IHRtcE5vZGUtPnBhcmVudE9ySG9zdE9yRnJh
bWVPd25lcigpKQorICAgICAgICAgICAgaW5kZW50ICs9ICJcdCI7CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiJXMiLCBpbmRlbnQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG5vZGUtPnNob3dO
b2RlKCk7CisgICAgfQorfQorCiAjZW5kaWYKIAogLy8gLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4
IGI5ZGE5NGYyMDhmYjU3M2JlNWE3M2U4MThmZWExMTU5OTdkMzIwYWIuLjkxYWJiZTI5NGM0NmRi
YTVhYTIwZWM0MzBmNTRhYWU3YmQwZWYzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTAxLDYgKzUwMSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dOb2RlKGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiKSBj
b25zdDsKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpcygpIGNvbnN0OwogICAgIHZvaWQgc2hvd1Ry
ZWVBbmRNYXJrKGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUxLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJl
bDEsIGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUyID0gMCwgY29uc3QgY2hhciogbWFya2VkTGFiZWwy
ID0gMCkgY29uc3Q7CisgICAgLy8gTGlrZSBzaG93VHJlZUZvclRoaXMsIGJ1dCBhbHNvIHNob3dz
IGEgZG9jdW1lbnQgb2YgYSBmcmFtZSBlbGVtZW50LgorICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlz
QWNyb3NzRnJhbWUoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdm9pZCByZW1vdmVOb2RlTGlzdENh
Y2hlSWZQb3NzaWJsZSgpOwpAQCAtNzE0LDYgKzcxNiwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBzZXRIYXNSYXJlU1ZHRGF0YSgpIHsgc2V0RmxhZyhIYXNTVkdSYXJlRGF0YUZsYWcpOyB9CiAg
ICAgdm9pZCBjbGVhckhhc1JhcmVTVkdEYXRhKCkgeyBjbGVhckZsYWcoSGFzU1ZHUmFyZURhdGFG
bGFnKTsgfQogI2VuZGlmCisKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gSW4gYWRkaXRpb24gdG8g
cGFyZW50T3JIb3N0LCBhbHNvIHVwIHRvIGEgRnJhbWVPd25lckVsZW1lbnQgb2YgdGhlIGN1cnJl
bnQgZnJhbWUuCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKCkg
Y29uc3Q7CisgICAgLy8gTGlrZSB0cmF2ZXJzYWxOZXh0Tm9kZSwgYnV0IHRyYXZlcnNlcyBhbHNv
IGludG8gYSBkb2N1bWVudCBvZiBhIGZyYW1lIGVsZW1lbnQuCisgICAgTm9kZSogdHJhdmVyc2VO
ZXh0Tm9kZUFjcm9zc0ZyYW1lKCkgY29uc3Q7CisjZW5kaWYKIH07CiAKIC8vIFVzZWQgaW4gTm9k
ZTo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKCkgYW5kIGluIGFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95392</attachid>
            <date>2011-05-30 20:51:25 -0700</date>
            <delta_ts>2011-05-30 23:01:37 -0700</delta_ts>
            <desc>Addressed the review comments.</desc>
            <filename>bug-61727-20110531125123.patch</filename>
            <type>text/plain</type>
            <size>4230</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjA1ZDdmN2FlZmFmNzQ3
MGNkZmI0NjNjNmJkYjlkN2FkMzhmYmMxLi5jYjMwZGRhMTI1ZDFjM2E1ZjJlYjA4MDgwZTQ3MjMx
NjQ0NGIxZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDUtMzAgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHV0aWxpdHkgZnVuY3Rpb24sIE5vZGU6OnNob3dU
cmVlRm9yVGhpc0Fjcm9zc0ZyYW1lLCBmb3IgZHVtcGluZyBhIHRyZWUgZm9yIHRoZSBOb2RlLgor
ICAgICAgICBTaW1pbGFyIHRvIGFuIGV4aXN0aW5nIE5vZGU6OnNob3dUcmVlRm9yVGhpcygpIGZ1
bmN0aW9uLCBidXQgZHVtcHMgYWxzbyBhIGRvY3VtZW50IG9mIGEgZnJhbWUgZWxlbWVudC4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3MjcKKwor
ICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgYSBhZGRlZCBmdW5jdGlvbiBpcyBvbmx5IGF2YWls
YWJsZSBpbiBkZWJ1ZyBidWlsZC4KKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnBhcmVudE9ySG9zdE9yRnJhbWVPd25lcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmF2ZXJzZU5leHROb2RlQWNyb3NzRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUpOgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisKIDIwMTEtMDUtMjUgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
N2NmMzI2NjQ3NTFmNThiN2UyOTZkMDlhNWY3M2ZjOTM1MjczMThhZi4uM2Q3MmQzNjU0NzI1ZTdj
NjlmNGI1ZDExZTE2NjA1ZmM2YTE2ZjQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNTcsNiArNTcs
NyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBAIC0yMzc1LDYgKzIzNzYsNTAgQEAgdm9p
ZCBOb2RlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3QKICAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnV0ZjgoKS5kYXRhKCksIGxlbmd0aCAt
IDEpOwogfQogCitDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3RPckZyYW1lT3duZXIo
KSBjb25zdAoreworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUo
KTsKKyAgICBpZiAoIXBhcmVudCAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkp
CisgICAgICAgIHBhcmVudCA9IGRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwor
ICAgIHJldHVybiBwYXJlbnQ7Cit9CisKK05vZGUqIE5vZGU6OnRyYXZlcnNlTmV4dE5vZGVBY3Jv
c3NGcmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzRnJhbWVPd25lckVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KHRoaXMp
LT5jb250ZW50RG9jdW1lbnQoKTsKKyAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93ID0gc2hhZG93
Um9vdChjb25zdF9jYXN0PE5vZGUqPih0aGlzKSkpCisgICAgICAgIHJldHVybiBzaGFkb3ctPnRy
YXZlcnNlTmV4dE5vZGVBY3Jvc3NGcmFtZSgpOworICAgIGlmIChmaXJzdENoaWxkKCkpCisgICAg
ICAgIHJldHVybiBmaXJzdENoaWxkKCk7CisgICAgaWYgKG5leHRTaWJsaW5nKCkpCisgICAgICAg
IHJldHVybiBuZXh0U2libGluZygpOworICAgIGNvbnN0IE5vZGUqIG4gPSB0aGlzOworICAgIHdo
aWxlIChuICYmICFuLT5uZXh0U2libGluZygpKQorICAgICAgICBuID0gbi0+cGFyZW50T3JIb3N0
T3JGcmFtZU93bmVyKCk7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBuLT5uZXh0U2libGlu
ZygpOworICAgIHJldHVybiAwOworfQorCit2b2lkIE5vZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9z
c0ZyYW1lKCkgY29uc3QKK3sKKyAgICBjb25zdCBOb2RlKiBtYXJrZWROb2RlID0gdGhpczsKKyAg
ICBjb25zdCBOb2RlKiBub2RlID0gdGhpczsKKyAgICB3aGlsZSAobm9kZS0+cGFyZW50T3JIb3N0
T3JGcmFtZU93bmVyKCkpCisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3RPckZyYW1l
T3duZXIoKTsKKyAgICBjb25zdCBOb2RlKiByb290Tm9kZSA9IG5vZGU7CisgICAgZm9yICg7IG5v
ZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlQWNyb3NzRnJhbWUoKSkgeworICAgICAg
ICBpZiAobm9kZSA9PSBtYXJrZWROb2RlKQorICAgICAgICAgICAgZnB1dHMoIioiLCBzdGRlcnIp
OworICAgICAgICBTdHJpbmcgaW5kZW50OworICAgICAgICBmb3IgKGNvbnN0IE5vZGUqIHRtcE5v
ZGUgPSBub2RlOyB0bXBOb2RlICYmIHRtcE5vZGUgIT0gcm9vdE5vZGU7IHRtcE5vZGUgPSB0bXBO
b2RlLT5wYXJlbnRPckhvc3RPckZyYW1lT3duZXIoKSkKKyAgICAgICAgICAgIGluZGVudCArPSAi
XHQiOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgaW5kZW50LnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBub2RlLT5zaG93Tm9kZSgpOworICAgIH0KK30KKwogI2VuZGlmCiAKIC8vIC0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAppbmRleCBiOWRhOTRmMjA4ZmI1NzNiZTVhNzNlODE4ZmVhMTE1OTk3
ZDMyMGFiLi4wYTQxZDdhZTBhOWIwZjYwOTc1MWFiYzdhNDJkYWIxNTc1MmQ4YjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKQEAgLTUwMSw2ICs1MDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93Tm9kZShjb25z
dCBjaGFyKiBwcmVmaXggPSAiIikgY29uc3Q7CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBj
b25zdDsKICAgICB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBOb2RlKiBtYXJrZWROb2RlMSwg
Y29uc3QgY2hhciogbWFya2VkTGFiZWwxLCBjb25zdCBOb2RlKiBtYXJrZWROb2RlMiA9IDAsIGNv
bnN0IGNoYXIqIG1hcmtlZExhYmVsMiA9IDApIGNvbnN0OworICAgIHZvaWQgc2hvd1RyZWVGb3JU
aGlzQWNyb3NzRnJhbWUoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdm9pZCByZW1vdmVOb2RlTGlz
dENhY2hlSWZQb3NzaWJsZSgpOwpAQCAtNzE0LDYgKzcxNSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBzZXRIYXNSYXJlU1ZHRGF0YSgpIHsgc2V0RmxhZyhIYXNTVkdSYXJlRGF0YUZsYWcpOyB9
CiAgICAgdm9pZCBjbGVhckhhc1JhcmVTVkdEYXRhKCkgeyBjbGVhckZsYWcoSGFzU1ZHUmFyZURh
dGFGbGFnKTsgfQogI2VuZGlmCisKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gSW4gYWRkaXRpb24g
dG8gcGFyZW50T3JIb3N0LCBhbHNvIHVwIHRvIGEgRnJhbWVPd25lckVsZW1lbnQgb2YgdGhlIGN1
cnJlbnQgZnJhbWUuCisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0T3JGcmFtZU93bmVy
KCkgY29uc3Q7CisgICAgLy8gTGlrZSB0cmF2ZXJzYWxOZXh0Tm9kZSwgYnV0IHRyYXZlcnNlcyBh
bHNvIGludG8gYSBkb2N1bWVudCBvZiBhIGZyYW1lIGVsZW1lbnQuCisgICAgTm9kZSogdHJhdmVy
c2VOZXh0Tm9kZUFjcm9zc0ZyYW1lKCkgY29uc3Q7CisjZW5kaWYKIH07CiAKIC8vIFVzZWQgaW4g
Tm9kZTo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKCkgYW5kIGluIGFkZFN1YnJlc291cmNl
U3R5bGVVUkxzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95398</attachid>
            <date>2011-05-30 23:01:44 -0700</date>
            <delta_ts>2011-05-30 23:14:20 -0700</delta_ts>
            <desc>Addressed the review comments.</desc>
            <filename>bug-61727-20110531150141.patch</filename>
            <type>text/plain</type>
            <size>3897</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjA1ZDdmN2FlZmFmNzQ3
MGNkZmI0NjNjNmJkYjlkN2FkMzhmYmMxLi4wMDBlNGNiZWNjNGMwNTVkZjMyZGViN2UzNjQ0NjFm
NzkxZDc0Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDUtMzAgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGR1bXBpbmcg
YSB0cmVlIGZvciB0aGUgTm9kZSwgaW5jbHVkaW5nIGEgZG9jdW1lbnQgb2YgYSBmcmFtZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzI3CisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGFkZGVkIGZ1bmN0aW9ucyBhcmUgb25seSBhdmFpbGFi
bGUgaW4gZGVidWcgYnVpbGRzLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnRyYXZlcnNlTmV4dE5vZGVBY3Jvc3NGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzaG93VHJlZUZvclRoaXNBY3Jvc3NGcmFtZSk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKwogMjAxMS0wNS0yNSAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3
Y2YzMjY2NDc1MWY1OGI3ZTI5NmQwOWE1ZjczZmM5MzUyNzMxOGFmLi4zYTJhOTYyZmE2MmZlNzhm
YWJmMjc1ZThhNWRhY2E0MWIzNGExNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC01Nyw2ICs1Nyw3
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKQEAgLTIzNzUsNiArMjM3Niw0OCBAQCB2b2lk
IE5vZGU6OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBj
b25zdAogICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1bHQudXRmOCgpLmRhdGEoKSwgbGVuZ3RoIC0g
MSk7CiB9CiAKK0NvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9ySG9zdE9yRnJhbWVPd25lcigp
IGNvbnN0Cit7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgp
OworICAgIGlmICghcGFyZW50ICYmIGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkK
KyAgICAgICAgcGFyZW50ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Cisg
ICAgcmV0dXJuIHBhcmVudDsKK30KKworTm9kZSogTm9kZTo6dHJhdmVyc2VOZXh0Tm9kZUFjcm9z
c0ZyYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoaXNGcmFtZU93bmVyRWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50Kj4odGhpcykt
PmNvbnRlbnREb2N1bWVudCgpOworICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3cgPSBzaGFkb3dS
b290KGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMpKSkKKyAgICAgICAgcmV0dXJuIHNoYWRvdy0+dHJh
dmVyc2VOZXh0Tm9kZUFjcm9zc0ZyYW1lKCk7CisgICAgaWYgKGZpcnN0Q2hpbGQoKSkKKyAgICAg
ICAgcmV0dXJuIGZpcnN0Q2hpbGQoKTsKKyAgICBpZiAobmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
cmV0dXJuIG5leHRTaWJsaW5nKCk7CisgICAgY29uc3QgTm9kZSogbiA9IHRoaXM7CisgICAgd2hp
bGUgKG4gJiYgIW4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgIG4gPSBuLT5wYXJlbnRPckhvc3RP
ckZyYW1lT3duZXIoKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJuIG4tPm5leHRTaWJsaW5n
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3Nz
RnJhbWUoKSBjb25zdAoreworICAgIGNvbnN0IE5vZGUqIHJvb3ROb2RlID0gdGhpczsKKyAgICB3
aGlsZSAocm9vdE5vZGUtPnBhcmVudE9ySG9zdE9yRnJhbWVPd25lcigpKQorICAgICAgICByb290
Tm9kZSA9IHJvb3ROb2RlLT5wYXJlbnRPckhvc3RPckZyYW1lT3duZXIoKTsKKyAgICBmb3IgKGNv
bnN0IE5vZGUqIG5vZGUgPSByb290Tm9kZTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4
dE5vZGVBY3Jvc3NGcmFtZSgpKSB7CisgICAgICAgIGlmIChub2RlID09IHRoaXMpCisgICAgICAg
ICAgICBmcHV0cygiKiIsIHN0ZGVycik7CisgICAgICAgIFN0cmluZyBpbmRlbnQ7CisgICAgICAg
IGZvciAoY29uc3QgTm9kZSogdG1wTm9kZSA9IG5vZGU7IHRtcE5vZGUgJiYgdG1wTm9kZSAhPSBy
b290Tm9kZTsgdG1wTm9kZSA9IHRtcE5vZGUtPnBhcmVudE9ySG9zdE9yRnJhbWVPd25lcigpKQor
ICAgICAgICAgICAgaW5kZW50ICs9ICJcdCI7CisgICAgICAgIGZwdXRzKGluZGVudC51dGY4KCku
ZGF0YSgpLCBzdGRlcnIpOworICAgICAgICBub2RlLT5zaG93Tm9kZSgpOworICAgIH0KK30KKwog
I2VuZGlmCiAKIC8vIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBiOWRhOTRmMjA4ZmI1NzNiZTVh
NzNlODE4ZmVhMTE1OTk3ZDMyMGFiLi42MTNiNDVhZDYxZjc4ZTQ3M2E2YTU1YWUxNTI4YTNlNGRj
MWRmZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUwMSw2ICs1MDEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzaG93Tm9kZShjb25zdCBjaGFyKiBwcmVmaXggPSAiIikgY29uc3Q7CiAgICAgdm9pZCBzaG93
VHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBOb2Rl
KiBtYXJrZWROb2RlMSwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxLCBjb25zdCBOb2RlKiBtYXJr
ZWROb2RlMiA9IDAsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMiA9IDApIGNvbnN0OworICAgIHZv
aWQgc2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdDsKICNlbmRpZgogCiAgICAgdm9p
ZCByZW1vdmVOb2RlTGlzdENhY2hlSWZQb3NzaWJsZSgpOwpAQCAtNzE0LDYgKzcxNSwxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRIYXNSYXJlU1ZHRGF0YSgpIHsgc2V0RmxhZyhIYXNTVkdS
YXJlRGF0YUZsYWcpOyB9CiAgICAgdm9pZCBjbGVhckhhc1JhcmVTVkdEYXRhKCkgeyBjbGVhckZs
YWcoSGFzU1ZHUmFyZURhdGFGbGFnKTsgfQogI2VuZGlmCisKKyNpZm5kZWYgTkRFQlVHCisgICAg
Q29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0T3JGcmFtZU93bmVyKCkgY29uc3Q7CisgICAgTm9k
ZSogdHJhdmVyc2VOZXh0Tm9kZUFjcm9zc0ZyYW1lKCkgY29uc3Q7CisjZW5kaWYKIH07CiAKIC8v
IFVzZWQgaW4gTm9kZTo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKCkgYW5kIGluIGFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKCkK
</data>
<flag name="review"
          id="88876"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>