<?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>58997</bug_id>
          
          <creation_ts>2011-04-20 08:50:37 -0700</creation_ts>
          <short_desc>Qualified names used for all TagName access, yet namespace usage is rare</short_desc>
          <delta_ts>2011-04-21 18:42:16 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>389256</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-04-20 08:50:37 -0700</bug_when>
    <thetext>Node::getElementsByTagName and Node::getElementsByTagNameNS always use qualified names yet few websites actually use namespaces.

Given that most access is without namespaces, will split into two paths.  A missing or &quot;*&quot; namespace can use the simple name instead of a fully qualified name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389275</commentid>
    <comment_count>1</comment_count>
      <attachid>90347</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-04-20 09:16:40 -0700</bug_when>
    <thetext>Created attachment 90347
Patch to use only local name when namespace is empty or &quot;*&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389435</commentid>
    <comment_count>2</comment_count>
      <attachid>90347</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-20 12:33:54 -0700</bug_when>
    <thetext>Comment on attachment 90347
Patch to use only local name when namespace is empty or &quot;*&quot;

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

r-

&gt; Source/WebCore/dom/Node.cpp:1736
&gt; +    if (namespaceURI.isEmpty() || namespaceURI == starAtom)
&gt; +        return getElementsByTagName(localName);

I&apos;m not sure that this is correct. getElementsByTagName is supposed to return all elements with a given localName, so forwarding the &quot;*&quot; namespace URI to getElementsByTagName is right. However, getElementsByTagName with an empty namespace URI is only supposed to match elements with the given localName in the null namespace. That is not the same behavior as getElementsByTagName.

Here is a test case that illustrates the difference:


&lt;div id=&quot;testContainer&quot;&gt;
&lt;/div&gt;

&lt;pre&gt;
&lt;script&gt;
var testContainer = document.getElementById(&quot;testContainer&quot;);

var div1 = document.createElementNS(null, &quot;div&quot;);
var div2 = document.createElementNS(&quot;http://madeupnamespace.com&quot;, &quot;div&quot;);
testContainer.appendChild(div1);
testContainer.appendChild(div2);

document.writeln(testContainer.getElementsByTagName(&quot;div&quot;).length);
document.writeln(testContainer.getElementsByTagNameNS(&quot;*&quot;, &quot;div&quot;).length);
document.writeln(testContainer.getElementsByTagNameNS(null, &quot;div&quot;).length);
&lt;/script&gt;
&lt;/pre&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389947</commentid>
    <comment_count>3</comment_count>
      <attachid>90513</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-04-21 05:29:24 -0700</bug_when>
    <thetext>Created attachment 90513
Patch with updates to address reviewer&apos;s issues

Changed Node:getElementsByTagName to process namespace with implied &quot;*&quot; and changed Node::getElementsByTagNameNS to handle null namespaces.

No apparent impact on performance speed up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390502</commentid>
    <comment_count>4</comment_count>
      <attachid>90513</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-21 17:55:41 -0700</bug_when>
    <thetext>Comment on attachment 90513
Patch with updates to address reviewer&apos;s issues

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390528</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-04-21 18:42:16 -0700</bug_when>
    <thetext>Committed r84586: &lt;http://trac.webkit.org/changeset/84586&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90347</attachid>
            <date>2011-04-20 09:16:40 -0700</date>
            <delta_ts>2011-04-21 05:29:24 -0700</delta_ts>
            <desc>Patch to use only local name when namespace is empty or &quot;*&quot;</desc>
            <filename>58997.patch</filename>
            <type>text/plain</type>
            <size>8679</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Mzc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMjAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUXVhbGlmaWVkIG5hbWVzIHVzZWQgZm9yIGFsbCBUYWdOYW1l
IGFjY2VzcywgeWV0IG5hbWVzcGFjZSB1c2FnZSBpcyByYXJlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODk5NworCisgICAgICAgIFRoZSBtZXRob2Rz
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGFuZCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TIHdoZXJlCisg
ICAgICAgIGFsd2F5cyBjcmVhdGluZyBhbmQgdXNpbmcgUXVhbGlmaWVkTmFtZXMuICBRdWFsaWZp
ZWROYW1lOjppbml0CisgICAgICAgIHdhcyBjb25zaXN0ZW50bHkgaW4gdGhlIHRvcCAzIHJvdXRp
bmVzIHdoZW4gcnVubmluZyB0aGUgRHJvbWFlbworICAgICAgICBET00tcXVlcnkgYmVuY2htYXJr
LiAgU3BsaXQgb3V0IHRoZSBmdW5jdGlvbmFsaXR5IHNvIHRoYXQgCisgICAgICAgIGdldEVsZW1l
bnRzQnlUYWdOYW1lIHVzZXMgdGhlIGxvY2FsIG5hbWUgYW5kIGEgc2VwYXJhdGUgVGFnTm9kZUxp
c3RDYWNoZQorICAgICAgICBrZXllZCBieSBhbiBhdG9taWMgbmFtZSBpbnN0ZWFkIG9mIGEgUXVh
bGlmaWVkTmFtZS4gIEFjY2VzcyB0byBlbGVtZW50cworICAgICAgICB2aWEgZ2V0RWxlbWVudHNC
eVRhZ05hbWVOUyB0aGF0IGhhdmUgYW4gZW1wdHkgb3IgIioiIG5hbWVzcGFjZSBhcmUKKyAgICAg
ICAgZm9yd2FyZGVkIHRvIGdldEVsZW1lbnRzQnlUYWdOYW1lIGFzIHdlbGwuICBUaGlzIHByb3Zp
ZGVzIH4xMCUgc3BlZWQKKyAgICAgICAgdXAgaW4gdGhhdCBEcm9tYWVvIHRlc3QuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGFkZGVkLCBleGlzdGluZyB0ZXN0cyBoYXZlIGNvdmVyYWdlLiAgVGhl
IGNoYW5nZXMgYXJlCisgICAgICAgIGFuIG9wdGltaXphdGlvbiBvZiBleGlzdGluZyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0
RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNC
eVRhZ05hbWVOUyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxp
ZGF0ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6aXNFbXB0
eSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6
CisgICAgICAgICogZG9tL1RhZ05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05v
ZGVMaXN0Ojp+VGFnTm9kZUxpc3QpOgorCiAyMDExLTA0LTE5ICBTdGVwaGVuIFdoaXRlICA8c2Vu
b3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVz
c2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDg0MzY3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2
b2lkIE5vZGU6OnJlbW92ZUNhY2hlZE5hbWVOb2RlTGlzdChOYW1lCiAgICAgZGF0YS0+bV9uYW1l
Tm9kZUxpc3RDYWNoZS5yZW1vdmUobm9kZU5hbWUpOwogfQogCi12b2lkIE5vZGU6OnJlbW92ZUNh
Y2hlZFRhZ05vZGVMaXN0KFRhZ05vZGVMaXN0KiBsaXN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQordm9pZCBOb2RlOjpyZW1vdmVDYWNoZWRUYWdOb2RlTGlzdChUYWdOb2RlTGlzdCogbGlz
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChyYXJlRGF0YSgpKTsK
ICAgICBBU1NFUlQocmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpOwpAQCAtMTA5OCw2ICsxMDk4LDE3
IEBAIHZvaWQgTm9kZTo6cmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QoVGFnTm8KICAgICBkYXRhLT5t
X3RhZ05vZGVMaXN0Q2FjaGUucmVtb3ZlKG5hbWUuaW1wbCgpKTsKIH0KIAordm9pZCBOb2RlOjpy
ZW1vdmVDYWNoZWRUYWdOb2RlTGlzdChUYWdOb2RlTGlzdCogbGlzdCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkKK3sKKyAgICBBU1NFUlQocmFyZURhdGEoKSk7CisgICAgQVNTRVJUKHJhcmVE
YXRhKCktPm5vZGVMaXN0cygpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxpc3QsIGxpc3QtPmhhc093
bkNhY2hlcygpKTsKKyAgICAKKyAgICBOb2RlTGlzdHNOb2RlRGF0YSogZGF0YSA9IHJhcmVEYXRh
KCktPm5vZGVMaXN0cygpOworICAgIEFTU0VSVF9VTlVTRUQobGlzdCwgbGlzdCA9PSBkYXRhLT5t
X3RhZ05vZGVMaXN0Q2FjaGVOUy5nZXQobmFtZS5pbXBsKCkpKTsKKyAgICBkYXRhLT5tX3RhZ05v
ZGVMaXN0Q2FjaGVOUy5yZW1vdmUobmFtZS5pbXBsKCkpOworfQorCiB2b2lkIE5vZGU6OnJlbW92
ZUNhY2hlZExhYmVsc05vZGVMaXN0KER5bmFtaWNOb2RlTGlzdCogbGlzdCkKIHsKICAgICBBU1NF
UlQocmFyZURhdGEoKSk7CkBAIC0xNjkwLDE2ICsxNzAxLDQwIEBAIGJvb2wgTm9kZTo6aW5TYW1l
Q29udGFpbmluZ0Jsb2NrRmxvd0VsZW0KIAogLy8gRklYTUU6IEVuZCBvZiBvYnZpb3VzbHkgbWlz
cGxhY2VkIEhUTUwgZWRpdGluZyBmdW5jdGlvbnMuICBUcnkgdG8gbW92ZSB0aGVzZSBvdXQgb2Yg
Tm9kZS4KIAotUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0
RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAg
cmV0dXJuIGdldEVsZW1lbnRzQnlUYWdOYW1lTlMoc3RhckF0b20sIG5hbWUpOworICAgIGlmIChs
b2NhbE5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgTm9kZVJhcmVEYXRh
KiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKKyAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7
CisgICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkp
OworICAgICAgICBkb2N1bWVudCgpLT5hZGROb2RlTGlzdENhY2hlKCk7CisgICAgfQorCisgICAg
U3RyaW5nIG5hbWUgPSBsb2NhbE5hbWU7CisgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpCisgICAgICAgIG5hbWUgPSBsb2NhbE5hbWUubG93ZXIoKTsKKworICAgIEF0b21pY1N0
cmluZyBsb2NhbE5hbWVBdG9tID0gbmFtZTsKKworICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6
OlRhZ05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkYXRhLT5ub2RlTGlz
dHMoKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKKyAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0Pihy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisKKyAgICBSZWZQdHI8VGFnTm9kZUxpc3Q+IGxpc3QgPSBU
YWdOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIHN0YXJBdG9tLCBsb2NhbE5hbWVBdG9tKTsKKyAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOyAgIAogfQogIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeVRh
Z05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbE5hbWUpCiB7CiAgICAgaWYgKGxvY2FsTmFtZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgCisKKyAgICBpZiAobmFtZXNwYWNlVVJJLmlzRW1wdHkoKSB8fCBuYW1l
c3BhY2VVUkkgPT0gc3RhckF0b20pCisgICAgICAgIHJldHVybiBnZXRFbGVtZW50c0J5VGFnTmFt
ZShsb2NhbE5hbWUpOworCiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEo
KTsKICAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7CiAgICAgICAgIGRhdGEtPnNldE5vZGVM
aXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwpAQCAtMTcwOSwxNCArMTc0NCwxNCBA
QCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5CiAgICAgU3RyaW5nIG5h
bWUgPSBsb2NhbE5hbWU7CiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCiAg
ICAgICAgIG5hbWUgPSBsb2NhbE5hbWUubG93ZXIoKTsKLSAgICAKKwogICAgIEF0b21pY1N0cmlu
ZyBsb2NhbE5hbWVBdG9tID0gbmFtZTsKLSAgICAgICAgCi0gICAgcGFpcjxOb2RlTGlzdHNOb2Rl
RGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRhdGEtPm5v
ZGVMaXN0cygpLT5tX3RhZ05vZGVMaXN0Q2FjaGUuYWRkKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZUF0b20sIG5hbWVzcGFjZVVSSSkuaW1wbCgpLCAwKTsKKworICAgIHBhaXI8Tm9k
ZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGVOUzo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IGRhdGEtPm5vZGVMaXN0cygpLT5tX3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgbG9jYWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOwog
ICAgIGlmICghcmVzdWx0LnNlY29uZCkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9k
ZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAKLSAgICBSZWZQdHI8VGFnTm9kZUxp
c3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIG5hbWVzcGFjZVVSSS5pc0VtcHR5
KCkgPyBudWxsQXRvbSA6IG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lQXRvbSk7CisKKyAgICBSZWZQ
dHI8VGFnTm9kZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lQXRvbSk7CiAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0Lmdl
dCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KQEAgLTIzOTEsNiArMjQyNiw5IEBA
IHZvaWQgTm9kZUxpc3RzTm9kZURhdGE6OmludmFsaWRhdGVDYWNoZXMKICAgICBUYWdOb2RlTGlz
dENhY2hlOjpjb25zdF9pdGVyYXRvciB0YWdDYWNoZUVuZCA9IG1fdGFnTm9kZUxpc3RDYWNoZS5l
bmQoKTsKICAgICBmb3IgKFRhZ05vZGVMaXN0Q2FjaGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90
YWdOb2RlTGlzdENhY2hlLmJlZ2luKCk7IGl0ICE9IHRhZ0NhY2hlRW5kOyArK2l0KQogICAgICAg
ICBpdC0+c2Vjb25kLT5pbnZhbGlkYXRlQ2FjaGUoKTsKKyAgICBUYWdOb2RlTGlzdENhY2hlTlM6
OmNvbnN0X2l0ZXJhdG9yIHRhZ0NhY2hlTlNFbmQgPSBtX3RhZ05vZGVMaXN0Q2FjaGVOUy5lbmQo
KTsKKyAgICBmb3IgKFRhZ05vZGVMaXN0Q2FjaGVOUzo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Rh
Z05vZGVMaXN0Q2FjaGVOUy5iZWdpbigpOyBpdCAhPSB0YWdDYWNoZU5TRW5kOyArK2l0KQorICAg
ICAgICBpdC0+c2Vjb25kLT5pbnZhbGlkYXRlQ2FjaGUoKTsKICAgICBpbnZhbGlkYXRlQ2FjaGVz
VGhhdERlcGVuZE9uQXR0cmlidXRlcygpOwogfQogCkBAIC0yNDIwLDYgKzI0NTgsMTIgQEAgYm9v
bCBOb2RlTGlzdHNOb2RlRGF0YTo6aXNFbXB0eSgpIGNvbnN0CiAgICAgICAgIGlmIChpdC0+c2Vj
b25kLT5yZWZDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAK
KyAgICBUYWdOb2RlTGlzdENhY2hlTlM6OmNvbnN0X2l0ZXJhdG9yIHRhZ0NhY2hlTlNFbmQgPSBt
X3RhZ05vZGVMaXN0Q2FjaGVOUy5lbmQoKTsKKyAgICBmb3IgKFRhZ05vZGVMaXN0Q2FjaGVOUzo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RhZ05vZGVMaXN0Q2FjaGVOUy5iZWdpbigpOyBpdCAhPSB0
YWdDYWNoZU5TRW5kOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5yZWZDb3VudCgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIENsYXNzTm9kZUxpc3RD
YWNoZTo6Y29uc3RfaXRlcmF0b3IgY2xhc3NDYWNoZUVuZCA9IG1fY2xhc3NOb2RlTGlzdENhY2hl
LmVuZCgpOwogICAgIGZvciAoQ2xhc3NOb2RlTGlzdENhY2hlOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fY2xhc3NOb2RlTGlzdENhY2hlLmJlZ2luKCk7IGl0ICE9IGNsYXNzQ2FjaGVFbmQ7ICsraXQp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gODQzNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNiArNTE0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgbm90aWZ5TG9jYWxOb2RlTGlzdHNMYWJlbENoYW5nZWQoKTsKICAgICB2b2lkIHJlbW92
ZUNhY2hlZENsYXNzTm9kZUxpc3QoQ2xhc3NOb2RlTGlzdCosIGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgcmVtb3ZlQ2FjaGVkTmFtZU5vZGVMaXN0KE5hbWVOb2RlTGlzdCosIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgcmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QoVGFnTm9kZUxpc3QqLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZUNhY2hlZFRhZ05vZGVMaXN0KFRhZ05v
ZGVMaXN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkTGFi
ZWxzTm9kZUxpc3QoRHluYW1pY05vZGVMaXN0Kik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCShyZXZpc2lvbiA4NDM2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsMTIgQEAgcHVibGljOgogICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE5hbWVOb2RlTGlzdCo+IE5hbWVOb2RlTGlzdENhY2hl
OwogICAgIE5hbWVOb2RlTGlzdENhY2hlIG1fbmFtZU5vZGVMaXN0Q2FjaGU7CiAgICAgCi0gICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbD4s
IFRhZ05vZGVMaXN0Kj4gVGFnTm9kZUxpc3RDYWNoZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBUYWdOb2RlTGlzdCo+IFRhZ05vZGVMaXN0Q2FjaGU7CiAgICAgVGFnTm9kZUxp
c3RDYWNoZSBtX3RhZ05vZGVMaXN0Q2FjaGU7CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsPiwgVGFnTm9kZUxpc3QqPiBUYWdOb2Rl
TGlzdENhY2hlTlM7CisgICAgVGFnTm9kZUxpc3RDYWNoZU5TIG1fdGFnTm9kZUxpc3RDYWNoZU5T
OworICAgIAogICAgIFJlZlB0cjxEeW5hbWljTm9kZUxpc3Q+IG1fbGFiZWxzTm9kZUxpc3RDYWNo
ZTsKICAgICAKICAgICBzdGF0aWMgUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gY3JlYXRl
KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmNwcAkocmV2aXNpb24gODQzNjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSwxMCBAQCBUYWdOb2RlTGlzdDo6VGFnTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlCiAK
IFRhZ05vZGVMaXN0Ojp+VGFnTm9kZUxpc3QoKQogewotICAgIG1fcm9vdE5vZGUtPnJlbW92ZUNh
Y2hlZFRhZ05vZGVMaXN0KHRoaXMsIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG1fbG9jYWxOYW1l
LCBtX25hbWVzcGFjZVVSSSkpOworICAgIGlmIChtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSkK
KyAgICAgICAgbV9yb290Tm9kZS0+cmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QodGhpcywgbV9sb2Nh
bE5hbWUpOworICAgIGVsc2UKKyAgICAgICAgbV9yb290Tm9kZS0+cmVtb3ZlQ2FjaGVkVGFnTm9k
ZUxpc3QodGhpcywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbV9sb2NhbE5hbWUsIG1fbmFtZXNw
YWNlVVJJKSk7CiB9IAogCiBib29sIFRhZ05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhFbGVtZW50KiB0
ZXN0Tm9kZSkgY29uc3QK
</data>
<flag name="review"
          id="83089"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90513</attachid>
            <date>2011-04-21 05:29:24 -0700</date>
            <delta_ts>2011-04-21 17:55:41 -0700</delta_ts>
            <desc>Patch with updates to address reviewer&apos;s issues</desc>
            <filename>58997-1.patch</filename>
            <type>text/plain</type>
            <size>8900</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Mzc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDQtMjAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUXVhbGlmaWVkIG5hbWVzIHVzZWQgZm9yIGFsbCBUYWdOYW1l
IGFjY2VzcywgeWV0IG5hbWVzcGFjZSB1c2FnZSBpcyByYXJlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODk5NworCisgICAgICAgIFRoZSBtZXRob2Rz
IGdldEVsZW1lbnRzQnlUYWdOYW1lIGFuZCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TIHdoZXJlCisg
ICAgICAgIGFsd2F5cyBjcmVhdGluZyBhbmQgdXNpbmcgUXVhbGlmaWVkTmFtZXMuICBRdWFsaWZp
ZWROYW1lOjppbml0CisgICAgICAgIHdhcyBjb25zaXN0ZW50bHkgaW4gdGhlIHRvcCAzIHJvdXRp
bmVzIHdoZW4gcnVubmluZyB0aGUgRHJvbWFlbworICAgICAgICBET00tcXVlcnkgYmVuY2htYXJr
LiAgU3BsaXQgb3V0IHRoZSBmdW5jdGlvbmFsaXR5IHNvIHRoYXQKKyAgICAgICAgZ2V0RWxlbWVu
dHNCeVRhZ05hbWUgdXNlcyBqdXN0IHRoZSBsb2NhbCBuYW1lLCBhbiBpbXBsaWVkICIqIgorICAg
ICAgICBuYW1lc3BhY2UgYW5kIGEgc2VwYXJhdGUgVGFnTm9kZUxpc3RDYWNoZSBrZXllZCBieSBh
biBhdG9taWMgbmFtZQorICAgICAgICBpbnN0ZWFkIG9mIGEgUXVhbGlmaWVkTmFtZS4gIEFjY2Vz
cyB0byBlbGVtZW50cyB2aWEKKyAgICAgICAgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyB0aGF0IGhh
dmUgIioiIG5hbWVzcGFjZSBhcmUgZm9yd2FyZGVkIHRvCisgICAgICAgIGdldEVsZW1lbnRzQnlU
YWdOYW1lIGFzIHdlbGwuICBUaGlzIHByb3ZpZGVzIH4xMCUgc3BlZWQgdXAgaW4gdGhhdAorICAg
ICAgICBEcm9tYWVvIHRlc3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFkZGVkLCBleGlzdGlu
ZyB0ZXN0cyBoYXZlIGNvdmVyYWdlLiAgVGhlIGNoYW5nZXMgYXJlCisgICAgICAgIGFuIG9wdGlt
aXphdGlvbiBvZiBleGlzdGluZyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogZG9tL05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTGlzdHNOb2RlRGF0YTo6aXNFbXB0eSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgICogZG9tL1RhZ05vZGVMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRhZ05vZGVMaXN0Ojp+VGFnTm9kZUxpc3QpOgorCiAyMDEx
LTA0LTE5ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJl
dmlzaW9uIDg0MzY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIE5vZGU6OnJlbW92ZUNhY2hlZE5hbWVOb2Rl
TGlzdChOYW1lCiAgICAgZGF0YS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5yZW1vdmUobm9kZU5hbWUp
OwogfQogCi12b2lkIE5vZGU6OnJlbW92ZUNhY2hlZFRhZ05vZGVMaXN0KFRhZ05vZGVMaXN0KiBs
aXN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQordm9pZCBOb2RlOjpyZW1vdmVDYWNoZWRU
YWdOb2RlTGlzdChUYWdOb2RlTGlzdCogbGlzdCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
ewogICAgIEFTU0VSVChyYXJlRGF0YSgpKTsKICAgICBBU1NFUlQocmFyZURhdGEoKS0+bm9kZUxp
c3RzKCkpOwpAQCAtMTA5OCw2ICsxMDk4LDE3IEBAIHZvaWQgTm9kZTo6cmVtb3ZlQ2FjaGVkVGFn
Tm9kZUxpc3QoVGFnTm8KICAgICBkYXRhLT5tX3RhZ05vZGVMaXN0Q2FjaGUucmVtb3ZlKG5hbWUu
aW1wbCgpKTsKIH0KIAordm9pZCBOb2RlOjpyZW1vdmVDYWNoZWRUYWdOb2RlTGlzdChUYWdOb2Rl
TGlzdCogbGlzdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3sKKyAgICBBU1NFUlQocmFy
ZURhdGEoKSk7CisgICAgQVNTRVJUKHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGxpc3QsIGxpc3QtPmhhc093bkNhY2hlcygpKTsKKworICAgIE5vZGVMaXN0c05v
ZGVEYXRhKiBkYXRhID0gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCk7CisgICAgQVNTRVJUX1VOVVNF
RChsaXN0LCBsaXN0ID09IGRhdGEtPm1fdGFnTm9kZUxpc3RDYWNoZU5TLmdldChuYW1lLmltcGwo
KSkpOworICAgIGRhdGEtPm1fdGFnTm9kZUxpc3RDYWNoZU5TLnJlbW92ZShuYW1lLmltcGwoKSk7
Cit9CisKIHZvaWQgTm9kZTo6cmVtb3ZlQ2FjaGVkTGFiZWxzTm9kZUxpc3QoRHluYW1pY05vZGVM
aXN0KiBsaXN0KQogewogICAgIEFTU0VSVChyYXJlRGF0YSgpKTsKQEAgLTE2OTAsMTYgKzE3MDEs
NDAgQEAgYm9vbCBOb2RlOjppblNhbWVDb250YWluaW5nQmxvY2tGbG93RWxlbQogCiAvLyBGSVhN
RTogRW5kIG9mIG9idmlvdXNseSBtaXNwbGFjZWQgSFRNTCBlZGl0aW5nIGZ1bmN0aW9ucy4gIFRy
eSB0byBtb3ZlIHRoZXNlIG91dCBvZiBOb2RlLgogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitQYXNzUmVm
UHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSkKIHsKLSAgICByZXR1cm4gZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhzdGFy
QXRvbSwgbmFtZSk7CisgICAgaWYgKGxvY2FsTmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOworICAgIGlm
ICghZGF0YS0+bm9kZUxpc3RzKCkpIHsKKyAgICAgICAgZGF0YS0+c2V0Tm9kZUxpc3RzKE5vZGVM
aXN0c05vZGVEYXRhOjpjcmVhdGUoKSk7CisgICAgICAgIGRvY3VtZW50KCktPmFkZE5vZGVMaXN0
Q2FjaGUoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgbmFtZSA9IGxvY2FsTmFtZTsKKyAgICBpZiAo
ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgbmFtZSA9IGxvY2FsTmFtZS5s
b3dlcigpOworCisgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0b20gPSBuYW1lOworCisgICAg
cGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IGRhdGEtPm5vZGVMaXN0cygpLT5tX3RhZ05vZGVMaXN0Q2FjaGUuYWRkKGxvY2Fs
TmFtZUF0b20sIDApOworICAgIGlmICghcmVzdWx0LnNlY29uZCkKKyAgICAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKworICAgIFJlZlB0
cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywgc3RhckF0b20s
IGxvY2FsTmFtZUF0b20pOworICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsK
KyAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7ICAgCiB9Ci0gCisKIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogewogICAgIGlmIChsb2Nh
bE5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIAorCisgICAgaWYgKG5hbWVz
cGFjZVVSSSA9PSBzdGFyQXRvbSkKKyAgICAgICAgcmV0dXJuIGdldEVsZW1lbnRzQnlUYWdOYW1l
KGxvY2FsTmFtZSk7CisKICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVSYXJlRGF0YSgp
OwogICAgIGlmICghZGF0YS0+bm9kZUxpc3RzKCkpIHsKICAgICAgICAgZGF0YS0+c2V0Tm9kZUxp
c3RzKE5vZGVMaXN0c05vZGVEYXRhOjpjcmVhdGUoKSk7CkBAIC0xNzA5LDEzICsxNzQ0LDEzIEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnkKICAgICBTdHJpbmcgbmFt
ZSA9IGxvY2FsTmFtZTsKICAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKICAg
ICAgICAgbmFtZSA9IGxvY2FsTmFtZS5sb3dlcigpOwotICAgIAorCiAgICAgQXRvbWljU3RyaW5n
IGxvY2FsTmFtZUF0b20gPSBuYW1lOwotICAgICAgICAKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVE
YXRhOjpUYWdOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZGF0YS0+bm9k
ZUxpc3RzKCktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bG9jYWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOworCisgICAgcGFpcjxOb2Rl
TGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZU5TOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0
ID0gZGF0YS0+bm9kZUxpc3RzKCktPm1fdGFnTm9kZUxpc3RDYWNoZU5TLmFkZChRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCBsb2NhbE5hbWVBdG9tLCBuYW1lc3BhY2VVUkkpLmltcGwoKSwgMCk7CiAg
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2Rl
TGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgIAorCiAgICAgUmVmUHRyPFRhZ05vZGVM
aXN0PiBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBuYW1lc3BhY2VVUkkuaXNFbXB0
eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZUF0b20pOwogICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7
CkBAIC0yMzkxLDYgKzI0MjYsOSBAQCB2b2lkIE5vZGVMaXN0c05vZGVEYXRhOjppbnZhbGlkYXRl
Q2FjaGVzCiAgICAgVGFnTm9kZUxpc3RDYWNoZTo6Y29uc3RfaXRlcmF0b3IgdGFnQ2FjaGVFbmQg
PSBtX3RhZ05vZGVMaXN0Q2FjaGUuZW5kKCk7CiAgICAgZm9yIChUYWdOb2RlTGlzdENhY2hlOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fdGFnTm9kZUxpc3RDYWNoZS5iZWdpbigpOyBpdCAhPSB0YWdD
YWNoZUVuZDsgKytpdCkKICAgICAgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0ZUNhY2hlKCk7Cisg
ICAgVGFnTm9kZUxpc3RDYWNoZU5TOjpjb25zdF9pdGVyYXRvciB0YWdDYWNoZU5TRW5kID0gbV90
YWdOb2RlTGlzdENhY2hlTlMuZW5kKCk7CisgICAgZm9yIChUYWdOb2RlTGlzdENhY2hlTlM6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV90YWdOb2RlTGlzdENhY2hlTlMuYmVnaW4oKTsgaXQgIT0gdGFn
Q2FjaGVOU0VuZDsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0ZUNhY2hlKCk7
CiAgICAgaW52YWxpZGF0ZUNhY2hlc1RoYXREZXBlbmRPbkF0dHJpYnV0ZXMoKTsKIH0KIApAQCAt
MjQyMSw2ICsyNDU5LDEyIEBAIGJvb2wgTm9kZUxpc3RzTm9kZURhdGE6OmlzRW1wdHkoKSBjb25z
dAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIFRhZ05vZGVMaXN0Q2Fj
aGVOUzo6Y29uc3RfaXRlcmF0b3IgdGFnQ2FjaGVOU0VuZCA9IG1fdGFnTm9kZUxpc3RDYWNoZU5T
LmVuZCgpOworICAgIGZvciAoVGFnTm9kZUxpc3RDYWNoZU5TOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fdGFnTm9kZUxpc3RDYWNoZU5TLmJlZ2luKCk7IGl0ICE9IHRhZ0NhY2hlTlNFbmQ7ICsraXQp
IHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQtPnJlZkNvdW50KCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgQ2xhc3NOb2RlTGlzdENhY2hlOjpjb25zdF9pdGVyYXRv
ciBjbGFzc0NhY2hlRW5kID0gbV9jbGFzc05vZGVMaXN0Q2FjaGUuZW5kKCk7CiAgICAgZm9yIChD
bGFzc05vZGVMaXN0Q2FjaGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jbGFzc05vZGVMaXN0Q2Fj
aGUuYmVnaW4oKTsgaXQgIT0gY2xhc3NDYWNoZUVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQt
PnNlY29uZC0+cmVmQ291bnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gODQzNjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsOSArNTE0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeUxvY2FsTm9kZUxpc3RzTGFiZWxDaGFuZ2Vk
KCk7CiAgICAgdm9pZCByZW1vdmVDYWNoZWRDbGFzc05vZGVMaXN0KENsYXNzTm9kZUxpc3QqLCBj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZUNhY2hlZE5hbWVOb2RlTGlzdChOYW1lTm9k
ZUxpc3QqLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlbW92ZUNhY2hlZFRhZ05vZGVMaXN0
KFRhZ05vZGVMaXN0KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCByZW1vdmVDYWNo
ZWRUYWdOb2RlTGlzdChUYWdOb2RlTGlzdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
b2lkIHJlbW92ZUNhY2hlZExhYmVsc05vZGVMaXN0KER5bmFtaWNOb2RlTGlzdCopOwotICAgIAor
CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeVRhZ05h
bWVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUpOwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1l
KGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAkocmV2aXNpb24gODQzNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwxNSBAQCBwdWJsaWM6CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBOYW1lTm9kZUxpc3QqPiBOYW1lTm9kZUxpc3RDYWNoZTsKICAg
ICBOYW1lTm9kZUxpc3RDYWNoZSBtX25hbWVOb2RlTGlzdENhY2hlOwotICAgIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw+LCBUYWdO
b2RlTGlzdCo+IFRhZ05vZGVMaXN0Q2FjaGU7CisgCisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21p
Y1N0cmluZywgVGFnTm9kZUxpc3QqPiBUYWdOb2RlTGlzdENhY2hlOwogICAgIFRhZ05vZGVMaXN0
Q2FjaGUgbV90YWdOb2RlTGlzdENhY2hlOwogCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxR
dWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbD4sIFRhZ05vZGVMaXN0Kj4gVGFnTm9kZUxp
c3RDYWNoZU5TOworICAgIFRhZ05vZGVMaXN0Q2FjaGVOUyBtX3RhZ05vZGVMaXN0Q2FjaGVOUzsK
KyAKICAgICBSZWZQdHI8RHluYW1pY05vZGVMaXN0PiBtX2xhYmVsc05vZGVMaXN0Q2FjaGU7Ci0g
ICAgCisgCiAgICAgc3RhdGljIFBhc3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGNyZWF0ZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IE5vZGVMaXN0c05vZGVEYXRhOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vVGFnTm9kZUxpc3QuY3BwCShyZXZpc2lvbiA4NDM2NykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9UYWdOb2RlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDExIEBA
IFRhZ05vZGVMaXN0OjpUYWdOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGUKIAogVGFnTm9kZUxpc3Q6
On5UYWdOb2RlTGlzdCgpCiB7Ci0gICAgbV9yb290Tm9kZS0+cmVtb3ZlQ2FjaGVkVGFnTm9kZUxp
c3QodGhpcywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbV9sb2NhbE5hbWUsIG1fbmFtZXNwYWNl
VVJJKSk7Ci19IAorICAgIGlmIChtX25hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSkKKyAgICAgICAg
bV9yb290Tm9kZS0+cmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QodGhpcywgbV9sb2NhbE5hbWUpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9yb290Tm9kZS0+cmVtb3ZlQ2FjaGVkVGFnTm9kZUxpc3QodGhp
cywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbV9sb2NhbE5hbWUsIG1fbmFtZXNwYWNlVVJJKSk7
Cit9CiAKIGJvb2wgVGFnTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKEVsZW1lbnQqIHRlc3ROb2RlKSBj
b25zdAogewo=
</data>
<flag name="review"
          id="83275"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>