<?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>36424</bug_id>
          
          <creation_ts>2010-03-20 23:17:30 -0700</creation_ts>
          <short_desc>Web Inspector: AuditRules still use getMatchedCSSRules as a part of the img-related audit.</short_desc>
          <delta_ts>2010-03-22 11:23:53 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>pfeldman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202271</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-20 23:17:30 -0700</bug_when>
    <thetext>document.defaultView.getMatchedCSSRules should be replaced with InspectorBackend accessor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202483</commentid>
    <comment_count>1</comment_count>
      <attachid>51284</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-22 07:44:40 -0700</bug_when>
    <thetext>Created attachment 51284
[PATCH] Proposed solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202532</commentid>
    <comment_count>2</comment_count>
      <attachid>51284</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-22 09:19:28 -0700</bug_when>
    <thetext>Comment on attachment 51284
[PATCH] Proposed solution

&gt; +        function imageStylesReady(imageId, context, styles)
&gt; +        {
&gt; +            var widthFound, heightFound;
&gt; +            --context.imagesLeft;
&gt; +
&gt; +            const node = WebInspector.domAgent.nodeForId(imageId);
&gt; +            var src = node.getAttribute(&quot;src&quot;);
&gt; +            if (!src) {
&gt; +                invokeDoneIfNeeded(context);
&gt; +                return;

You could have done this in the injected audit part.

&gt; +            for (var name in styles.styleAttributes) {
&gt; +                if (name === &quot;width&quot;) {
&gt; +                    widthFound = true;
&gt;                      continue;
&gt; -                var cssText = (image.style &amp;&amp; image.style.cssText) ? image.style.cssText : &quot;&quot;;
&gt; -                var rules = document.defaultView.getMatchedCSSRules(image, &quot;&quot;, true);
&gt; -                if (!hasWidth(image, cssText, rules) || !hasHeight(image, cssText, rules)) {
&gt; -                    found = true;
&gt; -                    if (urlToNoDimensionCount.hasOwnProperty(image.src))
&gt; -                        ++urlToNoDimensionCount[image.src];
&gt; -                    else
&gt; -                        urlToNoDimensionCount[image.src] = 1;
&gt;                  }
&gt; +                if (name === &quot;height&quot;)
&gt; +                    heightFound = true;
&gt; +            }

This part sound confusing to me. Is it equivalent to (&quot;width&quot; in styles.styleAttributes &amp;&amp; &quot;height&quot; in styles.styleAttributes)?


&gt; +            for (var i = styles.matchedCSSRules.length - 1; i &gt;= 0; --i) {
&gt; +                var style = WebInspector.CSSStyleDeclaration.parseRule(styles.matchedCSSRules[i]).style;
&gt; +                if (style.getPropertyValue(&quot;width&quot;) !== &quot;&quot;)
&gt; +                    widthFound = true;
&gt; +                if (style.getPropertyValue(&quot;height&quot;) !== &quot;&quot;)
&gt; +                    heightFound = true;

You could add !heightFound || !widthFound into the for check in order to same time here.

&gt; +                if (context.urlToNoDimensionCount.hasOwnProperty(src))

Why using hasOwnProperty here?

&gt; +        function receivedImages(imageIds)
&gt; +        {
&gt; +            if (!imageIds || !imageIds.length)
&gt; +                return callback(null);
&gt; +            var context = {imagesLeft: imageIds.length, urlToNoDimensionCount: {}};

Wrong indent before for (var i = imageIds.length - 1; i &gt;= 0; --i)&apos;s closing tag.

&gt; +InjectedScript.getElementsByTagName = function(tagName)
&gt; +{

No need to expose this. Just expose pushNodePathToFrontend to the injected audit code. r- is for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202595</commentid>
    <comment_count>3</comment_count>
      <attachid>51305</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-22 10:45:42 -0700</bug_when>
    <thetext>Created attachment 51305
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202617</commentid>
    <comment_count>4</comment_count>
      <attachid>51305</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-22 11:05:58 -0700</bug_when>
    <thetext>Comment on attachment 51305
[PATCH] Comments addressed

r+ with nits, please fix before landing.

&gt; +            var widthFound, heightFound;

No need for these to live for so long - just declare them when assigning.

&gt; +                var nodeId = this.pushNodePathToFrontend(nodes[i]);

I&apos;d call this new method &apos;getNodeId&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202633</commentid>
    <comment_count>5</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-03-22 11:23:53 -0700</bug_when>
    <thetext>Latest comments addressed.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       WebCore/ChangeLog
        M       WebCore/inspector/front-end/AuditRules.js
        M       WebCore/inspector/front-end/InjectedScript.js
Committed r56347</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51284</attachid>
            <date>2010-03-22 07:44:40 -0700</date>
            <delta_ts>2010-03-22 10:45:42 -0700</delta_ts>
            <desc>[PATCH] Proposed solution</desc>
            <filename>imageaudit.patch</filename>
            <type>text/plain</type>
            <size>9198</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWJhYTc1OC4uNjk5YTg5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wMy0yMiAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0UnVsZXMgc3RpbGwgdXNl
IGdldE1hdGNoZWRDU1NSdWxlcyBhcyBhIHBhcnQgb2YgdGhlIGltZy1yZWxhdGVkIGF1ZGl0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0MjQKKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlLmRvUnVu
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUu
cHJvdG90eXBlLmRvUnVuLmltYWdlU3R5bGVzUmVhZHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZS5wcm90b3R5cGUuZG9SdW4ucmVjZWl2ZWRJ
bWFnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6
CisgICAgICAgIChpbmplY3RlZFNjcmlwdENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzOgorCiAyMDEwLTAzLTIyICBMZWFu
ZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0UnVsZXMuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qcwppbmRleCBiYWExNjA5Li42ZjE3ZWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQXVkaXRSdWxlcy5qcwpAQCAtNjIzLDczICs2MjMsOTQgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0
UnVsZXMuSW1hZ2VEaW1lbnNpb25zUnVsZSA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlID0gewogICAgIGRvUnVuOiBmdW5j
dGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlv
biBldmFsQ2FsbGJhY2soZXZhbFJlc3VsdCwgaXNFeGNlcHRpb24pCisgICAgICAgIGZ1bmN0aW9u
IGRvbmVDYWxsYmFjayhjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNFeGNl
cHRpb24gfHwgIWV2YWxSZXN1bHQgfHwgIWV2YWxSZXN1bHQudG90YWxJbWFnZXMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpOwotCi0gICAgICAgICAgICB2YXIgZW50cnkg
PSByZXN1bHQuYWRkQ2hpbGQoIkEgd2lkdGggYW5kIGhlaWdodCBzaG91bGQgYmUgc3BlY2lmaWVk
IGZvciBhbGwgaW1hZ2VzIGluIG9yZGVyIHRvIHNwZWVkIHVwIHBhZ2UgZGlzcGxheS4gVGhlIGZv
bGxvd2luZyBpbWFnZShzKSBhcmUgbWlzc2luZyBhIHdpZHRoIGFuZC9vciBoZWlnaHQ6IiwgdHJ1
ZSk7Ci0gICAgICAgICAgICB2YXIgbWFwID0gZXZhbFJlc3VsdC5tYXA7CisgICAgICAgICAgICB2
YXIgbWFwID0gY29udGV4dC51cmxUb05vRGltZW5zaW9uQ291bnQ7CiAgICAgICAgICAgICBmb3Ig
KHZhciB1cmwgaW4gbWFwKSB7CisgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gZW50cnkgfHwg
cmVzdWx0LmFkZENoaWxkKCJBIHdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGJlIHNwZWNpZmllZCBm
b3IgYWxsIGltYWdlcyBpbiBvcmRlciB0byBzcGVlZCB1cCBwYWdlIGRpc3BsYXkuIFRoZSBmb2xs
b3dpbmcgaW1hZ2UocykgYXJlIG1pc3NpbmcgYSB3aWR0aCBhbmQvb3IgaGVpZ2h0OiIsIHRydWUp
OwogICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKHVy
bCk7CiAgICAgICAgICAgICAgICAgaWYgKG1hcFt1cmxdID4gMSkKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgKz0gIiAoIiArIG1hcFt1cmxdICsgIiB1c2VzKSI7CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlICs9IFN0cmluZy5zcHJpbnRmKCIgKCVkIHVzZXMpIiwgbWFwW3VybF0pOwogICAg
ICAgICAgICAgICAgIGVudHJ5LmFkZENoaWxkKHZhbHVlKTsKICAgICAgICAgICAgICAgICByZXN1
bHQudmlvbGF0aW9uQ291bnQrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7CisgICAgICAgICAgICBjYWxsYmFjayhlbnRyeSA/IHJlc3VsdCA6IG51bGwpOwog
ICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gcm91dGluZSgpCisgICAgICAgIGZ1bmN0aW9u
IGludm9rZURvbmVJZk5lZWRlZChjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIg
aW1hZ2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpOwotICAgICAgICAg
ICAgY29uc3Qgd2lkdGhSZWdFeHAgPSAvd2lkdGhbXjo7XSo6L2dpbTsKLSAgICAgICAgICAgIGNv
bnN0IGhlaWdodFJlZ0V4cCA9IC9oZWlnaHRbXjo7XSo6L2dpbTsKLQotICAgICAgICAgICAgZnVu
Y3Rpb24gaGFzRGltZW5zaW9uKGVsZW1lbnQsIGNzc1RleHQsIHJ1bGVzLCByZWdleHAsIGF0dHJp
YnV0ZU5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hdHRyaWJ1dGVzLmdldE5h
bWVkSXRlbShhdHRyaWJ1dGVOYW1lKSAhPSBudWxsIHx8IChjc3NUZXh0ICYmIGNzc1RleHQubWF0
Y2gocmVnZXhwKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAg
ICAgICAgICAgaWYgKCFydWxlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVzLml0ZW0oaSkuc3R5bGUuY3NzVGV4dC5tYXRj
aChyZWdleHApKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghY29udGV4dC5pbWFnZXNMZWZ0KQorICAgICAgICAgICAgICAgIGRv
bmVDYWxsYmFjayhjb250ZXh0KTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBo
YXNXaWR0aChlbGVtZW50LCBjc3NUZXh0LCBydWxlcykgewotICAgICAgICAgICAgICAgIHJldHVy
biBoYXNEaW1lbnNpb24oZWxlbWVudCwgY3NzVGV4dCwgcnVsZXMsIHdpZHRoUmVnRXhwLCAid2lk
dGgiKTsKKyAgICAgICAgZnVuY3Rpb24gaW1hZ2VTdHlsZXNSZWFkeShpbWFnZUlkLCBjb250ZXh0
LCBzdHlsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB3aWR0aEZvdW5kLCBoZWlnaHRG
b3VuZDsKKyAgICAgICAgICAgIC0tY29udGV4dC5pbWFnZXNMZWZ0OworCisgICAgICAgICAgICBj
b25zdCBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChpbWFnZUlkKTsKKyAg
ICAgICAgICAgIHZhciBzcmMgPSBub2RlLmdldEF0dHJpYnV0ZSgic3JjIik7CisgICAgICAgICAg
ICBpZiAoIXNyYykgeworICAgICAgICAgICAgICAgIGludm9rZURvbmVJZk5lZWRlZChjb250ZXh0
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGZ1bmN0aW9uIGhhc0hlaWdodChlbGVtZW50LCBjc3NUZXh0LCBydWxlcykgewotICAgICAgICAg
ICAgICAgIHJldHVybiBoYXNEaW1lbnNpb24oZWxlbWVudCwgY3NzVGV4dCwgcnVsZXMsIGhlaWdo
dFJlZ0V4cCwgImhlaWdodCIpOworICAgICAgICAgICAgdmFyIGNvbXBsZXRlU3JjOworICAgICAg
ICAgICAgZm9yICh2YXIgZnJhbWVPd25lckNhbmRpZGF0ZSA9IG5vZGU7IGZyYW1lT3duZXJDYW5k
aWRhdGU7IGZyYW1lT3duZXJDYW5kaWRhdGUgPSBmcmFtZU93bmVyQ2FuZGlkYXRlLnBhcmVudE5v
ZGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWVPd25lckNhbmRpZGF0ZS5kb2N1bWVudFVS
TCkgeworICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVNyYyA9IFdlYkluc3BlY3Rvci5jb21w
bGV0ZVVSTChmcmFtZU93bmVyQ2FuZGlkYXRlLmRvY3VtZW50VVJMLCBzcmMpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoY29tcGxldGVTcmMpCisgICAgICAgICAgICAgICAgc3JjID0gY29tcGxldGVT
cmM7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0g
bmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uKHN0eWxlcy5jb21wdXRlZFN0eWxl
KTsKKyAgICAgICAgICAgIGlmIChjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoInBvc2l0
aW9uIikgPT09ICJhYnNvbHV0ZSIpIHsKKyAgICAgICAgICAgICAgICBpbnZva2VEb25lSWZOZWVk
ZWQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICB2YXIgdXJsVG9Ob0RpbWVuc2lvbkNvdW50ID0ge307Ci0gICAgICAgICAgICB2
YXIgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2Vz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gaW1hZ2VzW2ldOwot
ICAgICAgICAgICAgICAgIGlmICghaW1hZ2Uuc3JjKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGltYWdlKS5nZXRQcm9wZXJ0eVZhbHVlKCJwb3NpdGlvbiIpOwot
ICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gImFic29sdXRlIikKKyAgICAgICAgICAg
IGZvciAodmFyIG5hbWUgaW4gc3R5bGVzLnN0eWxlQXR0cmlidXRlcykgeworICAgICAgICAgICAg
ICAgIGlmIChuYW1lID09PSAid2lkdGgiKSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoRm91
bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB2YXIgY3NzVGV4dCA9IChpbWFnZS5zdHlsZSAmJiBpbWFnZS5zdHlsZS5jc3NUZXh0KSA/IGlt
YWdlLnN0eWxlLmNzc1RleHQgOiAiIjsKLSAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRNYXRjaGVkQ1NTUnVsZXMoaW1hZ2UsICIiLCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWhhc1dpZHRoKGltYWdlLCBjc3NUZXh0LCBydWxlcykgfHwgIWhh
c0hlaWdodChpbWFnZSwgY3NzVGV4dCwgcnVsZXMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVybFRvTm9EaW1lbnNpb25Db3Vu
dC5oYXNPd25Qcm9wZXJ0eShpbWFnZS5zcmMpKQotICAgICAgICAgICAgICAgICAgICAgICAgKyt1
cmxUb05vRGltZW5zaW9uQ291bnRbaW1hZ2Uuc3JjXTsKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9Ob0RpbWVuc2lvbkNvdW50W2ltYWdlLnNy
Y10gPSAxOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0g
ImhlaWdodCIpCisgICAgICAgICAgICAgICAgICAgIGhlaWdodEZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aEZvdW5kICYmIGhlaWdodEZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgaW52b2tlRG9uZUlmTmVlZGVkKGNvbnRleHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHZhciBpID0gc3R5bGVz
Lm1hdGNoZWRDU1NSdWxlcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAg
ICAgIHZhciBzdHlsZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUnVs
ZShzdHlsZXMubWF0Y2hlZENTU1J1bGVzW2ldKS5zdHlsZTsKKyAgICAgICAgICAgICAgICBpZiAo
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSAhPT0gIiIpCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoRm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChzdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCJoZWlnaHQiKSAhPT0gIiIpCisgICAgICAgICAgICAgICAgICAgIGhlaWdodEZv
dW5kID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmb3VuZCA/IHt0
b3RhbEltYWdlczogaW1hZ2VzLmxlbmd0aCwgbWFwOiB1cmxUb05vRGltZW5zaW9uQ291bnR9IDog
bnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF3aWR0aEZvdW5kIHx8ICFoZWln
aHRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnVybFRvTm9EaW1lbnNpb25D
b3VudC5oYXNPd25Qcm9wZXJ0eShzcmMpKQorICAgICAgICAgICAgICAgICAgICArK2NvbnRleHQu
dXJsVG9Ob0RpbWVuc2lvbkNvdW50W3NyY107CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LnVybFRvTm9EaW1lbnNpb25Db3VudFtzcmNdID0gMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaW52b2tlRG9uZUlmTmVlZGVkKGNvbnRleHQpOwog
ICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZXZhbHVhdGVJblRh
cmdldFdpbmRvdyhyb3V0aW5lLCBudWxsLCBldmFsQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAg
ICAgIGZ1bmN0aW9uIHJlY2VpdmVkSW1hZ2VzKGltYWdlSWRzKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIWltYWdlSWRzIHx8ICFpbWFnZUlkcy5sZW5ndGgpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgdmFyIGNvbnRleHQgPSB7aW1hZ2Vz
TGVmdDogaW1hZ2VJZHMubGVuZ3RoLCB1cmxUb05vRGltZW5zaW9uQ291bnQ6IHt9fTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSBpbWFnZUlkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlcyhXZWJJbnNwZWN0b3IuQ2Fs
bGJhY2sud3JhcChpbWFnZVN0eWxlc1JlYWR5LmJpbmQodGhpcywgaW1hZ2VJZHNbaV0sIGNvbnRl
eHQpKSwgaW1hZ2VJZHNbaV0sIHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWci
LCByZWNlaXZlZEltYWdlcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKaW5kZXggNTVkNDQ0Zi4uN2Q3MmFjZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwpAQCAtMzA1LDYgKzMw
NSwxOCBAQCBJbmplY3RlZFNjcmlwdC5hZGRJbnNwZWN0ZWROb2RlID0gZnVuY3Rpb24obm9kZUlk
KQogICAgIHJldHVybiB0cnVlOwogfQogCitJbmplY3RlZFNjcmlwdC5nZXRFbGVtZW50c0J5VGFn
TmFtZSA9IGZ1bmN0aW9uKHRhZ05hbWUpCit7CisgICAgY29uc3QgZG9jID0gSW5qZWN0ZWRTY3Jp
cHQuX3dpbmRvdygpLmRvY3VtZW50OworICAgIGNvbnN0IG5vZGVJZHMgPSBbXTsKKyAgICB2YXIg
bm9kZXMgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSk7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbm9kZUlkID0gSW5q
ZWN0ZWRTY3JpcHRIb3N0LnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXNbaV0sIGZhbHNlLCBm
YWxzZSk7CisgICAgICAgIG5vZGVJZHMucHVzaChub2RlSWQpOworICAgIH0KKyAgICByZXR1cm4g
bm9kZUlkczsKK30KKwogSW5qZWN0ZWRTY3JpcHQucGVyZm9ybVNlYXJjaCA9IGZ1bmN0aW9uKHdo
aXRlc3BhY2VUcmltbWVkUXVlcnkpCiB7CiAgICAgLy8gRklYTUU6IEZldyB0aGluZ3MgYXJlIG1p
c3NpbmcgaGVyZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5qcwppbmRleCAyNTU4MjY3Li5jNTYxOTg2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzCkBAIC03OSw2
ICs3OSw3IEBAIEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiZXZhbHVhdGUi
KTsKIEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigiZXZhbHVhdGVJbkNhbGxG
cmFtZSIpOwogSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRDb21wbGV0
aW9ucyIpOwogSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRDb21wdXRl
ZFN0eWxlIik7CitJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdldEVsZW1l
bnRzQnlUYWdOYW1lIik7CiBJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdl
dElubGluZVN0eWxlIik7CiBJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdl
dE5vZGVQcm9wZXJ0eVZhbHVlIik7CiBJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRs
ZXIoImdldFByb3BlcnRpZXMiKTsK
</data>
<flag name="review"
          id="34515"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51305</attachid>
            <date>2010-03-22 10:45:42 -0700</date>
            <delta_ts>2010-03-22 11:05:58 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>imageaudit.patch</filename>
            <type>text/plain</type>
            <size>8944</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWJhYTc1OC4uNGE3YzEwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wMy0yMiAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0UnVsZXMgc3RpbGwgdXNl
IGdldE1hdGNoZWRDU1NSdWxlcyBhcyBhIHBhcnQgb2YgdGhlIGltZy1yZWxhdGVkIGF1ZGl0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0MjQKKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlLmRvUnVu
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUu
cHJvdG90eXBlLmRvUnVuLnJlY2VpdmVkSW1hZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5B
dWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlLmRvUnVuLnB1c2hJbWFnZU5v
ZGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzOgor
ICAgICAgICAoaW5qZWN0ZWRTY3JpcHRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qczoKKwogMjAxMC0wMy0yMiAgTGVhbmRy
byBQZXJlaXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJ1bGVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKaW5kZXggYmFhMTYwOS4uNDkzNjhhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0UnVsZXMuanMKQEAgLTYyMyw3MyArNjIzLDkxIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1
bGVzLkltYWdlRGltZW5zaW9uc1J1bGUgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuQXVkaXRS
dWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnByb3RvdHlwZSA9IHsKICAgICBkb1J1bjogZnVuY3Rp
b24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZXZhbENhbGxiYWNrKGV2YWxSZXN1bHQsIGlzRXhjZXB0aW9uKQorICAgICAgICBmdW5jdGlvbiBk
b25lQ2FsbGJhY2soY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzRXhjZXB0
aW9uIHx8ICFldmFsUmVzdWx0IHx8ICFldmFsUmVzdWx0LnRvdGFsSW1hZ2VzKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTsKLQotICAgICAgICAgICAgdmFyIGVudHJ5ID0g
cmVzdWx0LmFkZENoaWxkKCJBIHdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGJlIHNwZWNpZmllZCBm
b3IgYWxsIGltYWdlcyBpbiBvcmRlciB0byBzcGVlZCB1cCBwYWdlIGRpc3BsYXkuIFRoZSBmb2xs
b3dpbmcgaW1hZ2UocykgYXJlIG1pc3NpbmcgYSB3aWR0aCBhbmQvb3IgaGVpZ2h0OiIsIHRydWUp
OwotICAgICAgICAgICAgdmFyIG1hcCA9IGV2YWxSZXN1bHQubWFwOworICAgICAgICAgICAgdmFy
IG1hcCA9IGNvbnRleHQudXJsVG9Ob0RpbWVuc2lvbkNvdW50OwogICAgICAgICAgICAgZm9yICh2
YXIgdXJsIGluIG1hcCkgeworICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IGVudHJ5IHx8IHJl
c3VsdC5hZGRDaGlsZCgiQSB3aWR0aCBhbmQgaGVpZ2h0IHNob3VsZCBiZSBzcGVjaWZpZWQgZm9y
IGFsbCBpbWFnZXMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgcGFnZSBkaXNwbGF5LiBUaGUgZm9sbG93
aW5nIGltYWdlKHMpIGFyZSBtaXNzaW5nIGEgd2lkdGggYW5kL29yIGhlaWdodDoiLCB0cnVlKTsK
ICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTCh1cmwp
OwogICAgICAgICAgICAgICAgIGlmIChtYXBbdXJsXSA+IDEpCi0gICAgICAgICAgICAgICAgICAg
IHZhbHVlICs9ICIgKCIgKyBtYXBbdXJsXSArICIgdXNlcykiOworICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSArPSBTdHJpbmcuc3ByaW50ZigiICglZCB1c2VzKSIsIG1hcFt1cmxdKTsKICAgICAg
ICAgICAgICAgICBlbnRyeS5hZGRDaGlsZCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LnZpb2xhdGlvbkNvdW50Kys7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsYmFjayhy
ZXN1bHQpOworICAgICAgICAgICAgY2FsbGJhY2soZW50cnkgPyByZXN1bHQgOiBudWxsKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHJvdXRpbmUoKQorICAgICAgICBmdW5jdGlvbiBp
bWFnZVN0eWxlc1JlYWR5KGltYWdlSWQsIGNvbnRleHQsIHN0eWxlcykKICAgICAgICAgewotICAg
ICAgICAgICAgdmFyIGltYWdlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWci
KTsKLSAgICAgICAgICAgIGNvbnN0IHdpZHRoUmVnRXhwID0gL3dpZHRoW146O10qOi9naW07Ci0g
ICAgICAgICAgICBjb25zdCBoZWlnaHRSZWdFeHAgPSAvaGVpZ2h0W146O10qOi9naW07Ci0KLSAg
ICAgICAgICAgIGZ1bmN0aW9uIGhhc0RpbWVuc2lvbihlbGVtZW50LCBjc3NUZXh0LCBydWxlcywg
cmVnZXhwLCBhdHRyaWJ1dGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0
cmlidXRlcy5nZXROYW1lZEl0ZW0oYXR0cmlidXRlTmFtZSkgIT0gbnVsbCB8fCAoY3NzVGV4dCAm
JiBjc3NUZXh0Lm1hdGNoKHJlZ2V4cCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgICAgICAgICAgICAgIGlmICghcnVsZXMpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChydWxlcy5pdGVtKGkpLnN0eWxl
LmNzc1RleHQubWF0Y2gocmVnZXhwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgdmFyIHdpZHRoRm91bmQsIGhlaWdodEZvdW5kOworICAgICAgICAg
ICAgLS1jb250ZXh0LmltYWdlc0xlZnQ7CisKKyAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQubm9kZUZvcklkKGltYWdlSWQpOworICAgICAgICAgICAgdmFyIHNy
YyA9IG5vZGUuZ2V0QXR0cmlidXRlKCJzcmMiKTsKKyAgICAgICAgICAgIGZvciAodmFyIGZyYW1l
T3duZXJDYW5kaWRhdGUgPSBub2RlOyBmcmFtZU93bmVyQ2FuZGlkYXRlOyBmcmFtZU93bmVyQ2Fu
ZGlkYXRlID0gZnJhbWVPd25lckNhbmRpZGF0ZS5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGZyYW1lT3duZXJDYW5kaWRhdGUuZG9jdW1lbnRVUkwpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGNvbXBsZXRlU3JjID0gV2ViSW5zcGVjdG9yLmNvbXBsZXRlVVJMKGZyYW1lT3du
ZXJDYW5kaWRhdGUuZG9jdW1lbnRVUkwsIHNyYyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc1dpZHRoKGVsZW1lbnQsIGNzc1Rl
eHQsIHJ1bGVzKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGhhc0RpbWVuc2lvbihlbGVtZW50
LCBjc3NUZXh0LCBydWxlcywgd2lkdGhSZWdFeHAsICJ3aWR0aCIpOworICAgICAgICAgICAgaWYg
KGNvbXBsZXRlU3JjKQorICAgICAgICAgICAgICAgIHNyYyA9IGNvbXBsZXRlU3JjOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbihzdHlsZXMuY29tcHV0ZWRTdHlsZSk7CisgICAgICAg
ICAgICBpZiAoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJwb3NpdGlvbiIpID09PSAi
YWJzb2x1dGUiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LmltYWdlc0xlZnQpCisg
ICAgICAgICAgICAgICAgICAgIGRvbmVDYWxsYmFjayhjb250ZXh0KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGhhc0hlaWdo
dChlbGVtZW50LCBjc3NUZXh0LCBydWxlcykgewotICAgICAgICAgICAgICAgIHJldHVybiBoYXNE
aW1lbnNpb24oZWxlbWVudCwgY3NzVGV4dCwgcnVsZXMsIGhlaWdodFJlZ0V4cCwgImhlaWdodCIp
OworICAgICAgICAgICAgaWYgKCJ3aWR0aCIgaW4gc3R5bGVzLnN0eWxlQXR0cmlidXRlcykKKyAg
ICAgICAgICAgICAgICAgICAgd2lkdGhGb3VuZCA9IHRydWU7CisKKyAgICAgICAgICAgIGlmICgi
aGVpZ2h0IiBpbiBzdHlsZXMuc3R5bGVBdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgICAgICBo
ZWlnaHRGb3VuZCA9IHRydWU7CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSBzdHlsZXMubWF0
Y2hlZENTU1J1bGVzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAhKHdpZHRoRm91bmQgJiYgaGVpZ2h0
Rm91bmQpOyAtLWkpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVJ1bGUoc3R5bGVzLm1hdGNoZWRDU1NSdWxlc1tpXSku
c3R5bGU7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlLmdldFByb3BlcnR5VmFsdWUoIndpZHRo
IikgIT09ICIiKQorICAgICAgICAgICAgICAgICAgICB3aWR0aEZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBpZiAoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0IikgIT09ICIiKQor
ICAgICAgICAgICAgICAgICAgICBoZWlnaHRGb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghd2lkdGhGb3VuZCB8fCAhaGVpZ2h0Rm91bmQp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc3JjIGluIGNvbnRleHQudXJsVG9Ob0RpbWVuc2lvbkNv
dW50KQorICAgICAgICAgICAgICAgICAgICArK2NvbnRleHQudXJsVG9Ob0RpbWVuc2lvbkNvdW50
W3NyY107CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LnVybFRvTm9EaW1lbnNpb25Db3VudFtzcmNdID0gMTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgdmFyIHVybFRvTm9EaW1lbnNpb25Db3VudCA9IHt9OwotICAgICAgICAgICAgdmFyIGZv
dW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IGltYWdlc1tpXTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWltYWdlLnNyYykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShpbWFnZSkuZ2V0UHJvcGVydHlWYWx1ZSgicG9zaXRpb24iKTsKLSAgICAg
ICAgICAgICAgICBpZiAocG9zaXRpb24gPT09ICJhYnNvbHV0ZSIpCisgICAgICAgICAgICBpZiAo
IWNvbnRleHQuaW1hZ2VzTGVmdCkKKyAgICAgICAgICAgICAgICBkb25lQ2FsbGJhY2soY29udGV4
dCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlZEltYWdlcyhpbWFnZUlk
cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFpbWFnZUlkcyB8fCAhaW1hZ2VJZHMubGVu
Z3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAg
IHZhciBjb250ZXh0ID0ge2ltYWdlc0xlZnQ6IGltYWdlSWRzLmxlbmd0aCwgdXJsVG9Ob0RpbWVu
c2lvbkNvdW50OiB7fX07CisgICAgICAgICAgICBmb3IgKHZhciBpID0gaW1hZ2VJZHMubGVuZ3Ro
IC0gMTsgaSA+PSAwOyAtLWkpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRT
dHlsZXMoV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoaW1hZ2VTdHlsZXNSZWFkeS5iaW5kKHRo
aXMsIGltYWdlSWRzW2ldLCBjb250ZXh0KSksIGltYWdlSWRzW2ldLCB0cnVlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHB1c2hJbWFnZU5vZGVzKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uc3Qgbm9kZUlkcyA9IFtdOworICAgICAgICAgICAgdmFyIG5vZGVzID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghbm9kZXNb
aV0uc3JjKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB2
YXIgY3NzVGV4dCA9IChpbWFnZS5zdHlsZSAmJiBpbWFnZS5zdHlsZS5jc3NUZXh0KSA/IGltYWdl
LnN0eWxlLmNzc1RleHQgOiAiIjsKLSAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRNYXRjaGVkQ1NTUnVsZXMoaW1hZ2UsICIiLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWhhc1dpZHRoKGltYWdlLCBjc3NUZXh0LCBydWxlcykgfHwgIWhhc0hl
aWdodChpbWFnZSwgY3NzVGV4dCwgcnVsZXMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVybFRvTm9EaW1lbnNpb25Db3VudC5o
YXNPd25Qcm9wZXJ0eShpbWFnZS5zcmMpKQotICAgICAgICAgICAgICAgICAgICAgICAgKyt1cmxU
b05vRGltZW5zaW9uQ291bnRbaW1hZ2Uuc3JjXTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgdXJsVG9Ob0RpbWVuc2lvbkNvdW50W2ltYWdlLnNyY10g
PSAxOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgbm9kZUlkID0gdGhp
cy5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzW2ldKTsKKyAgICAgICAgICAgICAgICBub2Rl
SWRzLnB1c2gobm9kZUlkKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmb3Vu
ZCA/IHt0b3RhbEltYWdlczogaW1hZ2VzLmxlbmd0aCwgbWFwOiB1cmxUb05vRGltZW5zaW9uQ291
bnR9IDogbnVsbDsKKyAgICAgICAgICAgIHJldHVybiBub2RlSWRzOwogICAgICAgICB9CiAKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuZXZhbHVhdGVJblRhcmdldFdpbmRvdyhyb3V0
aW5lLCBudWxsLCBldmFsQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVzLmV2YWx1YXRlSW5UYXJnZXRXaW5kb3cocHVzaEltYWdlTm9kZXMsIG51bGws
IHJlY2VpdmVkSW1hZ2VzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbmplY3RlZFNjcmlwdC5qcwppbmRleCA1NWQ0NDRmLi5kNmI1OTBlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCkBAIC0zMDUsNiArMzA1
LDExIEBAIEluamVjdGVkU2NyaXB0LmFkZEluc3BlY3RlZE5vZGUgPSBmdW5jdGlvbihub2RlSWQp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0luamVjdGVkU2NyaXB0LnB1c2hOb2RlUGF0aFRvRnJv
bnRlbmQgPSBmdW5jdGlvbihub2RlKQoreworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Qu
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2RlLCBmYWxzZSwgZmFsc2UpOworfQorCiBJbmplY3Rl
ZFNjcmlwdC5wZXJmb3JtU2VhcmNoID0gZnVuY3Rpb24od2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkK
IHsKICAgICAvLyBGSVhNRTogRmV3IHRoaW5ncyBhcmUgbWlzc2luZyBoZXJlOgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNzLmpzCmluZGV4
IDI1NTgyNjcuLjI2YzBhNzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMKQEAgLTg2LDYgKzg2LDcgQEAgSW5qZWN0ZWRTY3Jp
cHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJnZXRQcm90b3R5cGVzIik7CiBJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoImdldFN0eWxlcyIpOwogSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MuX2luc3RhbGxIYW5kbGVyKCJvcGVuSW5JbnNwZWN0ZWRXaW5kb3ciKTsKIEluamVjdGVkU2Ny
aXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlcigicGVyZm9ybVNlYXJjaCIpOworSW5qZWN0ZWRTY3Jp
cHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJwdXNoTm9kZVBhdGhUb0Zyb250ZW5kIik7CiBJbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInB1c2hOb2RlVG9Gcm9udGVuZCIpOwog
SW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKCJub2RlQnlQYXRoIik7CiBJbmpl
Y3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIoInNlYXJjaENhbmNlbGVkIik7Cg==
</data>
<flag name="review"
          id="34540"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>