<?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>87440</bug_id>
          
          <creation_ts>2012-05-24 16:47:24 -0700</creation_ts>
          <short_desc>DOM APIs don&apos;t deflate device dimensions by the device scale factor</short_desc>
          <delta_ts>2012-06-29 12:41:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>aelias</cc>
    
    <cc>bdakin</cc>
    
    <cc>danakj</cc>
    
    <cc>fsamuel</cc>
    
    <cc>jamesr</cc>
    
    <cc>johnme</cc>
    
    <cc>kenneth</cc>
    
    <cc>kpiascik</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>633369</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 16:47:24 -0700</bug_when>
    <thetext>Figure out what to do with devicePixelRatioForDeviceDimensions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633373</commentid>
    <comment_count>1</comment_count>
      <attachid>143928</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 16:49:05 -0700</bug_when>
    <thetext>Created attachment 143928
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633376</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 16:51:47 -0700</bug_when>
    <thetext>This patch is from the chromium-android branch.  I&apos;m trying to sort out whether this is a valuable change that we should make upstream or whether it&apos;s something we need to remove from the branch.  Fady seemed to indicate that this was a valuable change, but that there were some complexities in creating a correct implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633377</commentid>
    <comment_count>3</comment_count>
      <attachid>143928</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-05-24 16:52:33 -0700</bug_when>
    <thetext>Comment on attachment 143928
work in progress

devicePixelRatioForDeviceDimensions just doesn&apos;t make sense. devicePixelRatio is a fixed number (1 or 2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633380</commentid>
    <comment_count>4</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2012-05-24 16:54:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This patch is from the chromium-android branch.  I&apos;m trying to sort out whether this is a valuable change that we should make upstream or whether it&apos;s something we need to remove from the branch.  Fady seemed to indicate that this was a valuable change, but that there were some complexities in creating a correct implementation.

We wanted to do the same thing but with defaultDeviceScaleFactor(), but opted for making WebCore mostly oblivious to device scaling due to bugs in fixed layout and time constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633390</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 17:09:11 -0700</bug_when>
    <thetext>&gt; devicePixelRatioForDeviceDimensions just doesn&apos;t make sense. devicePixelRatio is a fixed number (1 or 2).

Yes, I agree that the patch, as written, doesn&apos;t make much sense.  I had first posted the reverse of this patch to the chromium-android patch to revert the change, but Fady suggested that we discuss whether it makes sense to do something like this upstream.  IMHO, it&apos;s better to have those sorts of discussions in the WebKit bug tracker.  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633395</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-24 17:22:53 -0700</bug_when>
    <thetext>I&apos;m having some difficulty understanding this value and why it&apos;s defined as:

result.devicePixelRatioForDeviceDimensions = isAutoDPI ? (deviceDPI / 160.0f) : result.devicePixelRatio;

In the autoDPI case which is 99.9% of websites (any website without a viewport tag explicitly requesting DPI), this value is just the same as defaultDeviceScaleFactor (the physical DPI of the device).  In the rare explicitly-requested-DPI case, it&apos;s devicePixelRatio (= deviceScaleFactor).

I don&apos;t fully understand the need to introduce this third value, could we just use defaultDeviceScaleFactor instead?  John, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633409</commentid>
    <comment_count>7</comment_count>
      <attachid>143935</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 17:40:53 -0700</bug_when>
    <thetext>Created attachment 143935
Alternate version that doesn&apos;t introduce a new variable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633414</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-24 17:47:41 -0700</bug_when>
    <thetext>Hmm, looking at this further, I think we actually do need a third value because of ChromeOS&apos;s different deviceScale decisions.  Clank&apos;s viewport is specified in physical pixels whereas ChromeOS&apos;s is in CSS pixels.  So actually, ChromeOS does not need this diff at all, and we could rename the new value to viewportScaleFactor and set it to:

viewportScaleFactor = defaultDeviceScaleFactor / WebViewImpl::m_deviceScaleInCompositor;

This would give a value of 1 on ChromeOS and of defaultDeviceScaleFactor on Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633421</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 17:59:28 -0700</bug_when>
    <thetext>It is wise for Android and ChromeOS to make different decisions in this regard?  That seems like a recipe for sadness in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633426</commentid>
    <comment_count>10</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-24 18:04:23 -0700</bug_when>
    <thetext>Not very, no, and we had a debate about this.  Each approach has its own set of bugs which impact one platform more severely than the other, so we ended up being forced to diverge for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633552</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-24 22:02:26 -0700</bug_when>
    <thetext>Was that discusion captured in a bug I can read?  I&apos;m not sure how it affects this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634622</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-26 01:50:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 143928 [details])
&gt; devicePixelRatioForDeviceDimensions just doesn&apos;t make sense. devicePixelRatio is a fixed number (1 or 2).

Actually some Nokia devices and Android devices use the value of 1.5, so basically it can be 1, 1.5 and 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634623</commentid>
    <comment_count>13</comment_count>
      <attachid>143935</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-26 01:52:43 -0700</bug_when>
    <thetext>Comment on attachment 143935
Alternate version that doesn&apos;t introduce a new variable

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

&gt; Source/WebCore/page/DOMWindow.cpp:1098
&gt; -    return static_cast&lt;int&gt;(page-&gt;chrome()-&gt;windowRect().height());
&gt; +    return static_cast&lt;int&gt;(page-&gt;chrome()-&gt;windowRect().height() / page-&gt;settings()-&gt;defaultDeviceScaleFactor());

hmm I don&apos;t get this. For Qt, the size of the windowRect is in device pixels and not upscaled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636682</commentid>
    <comment_count>14</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-29 18:27:58 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Was that discusion captured in a bug I can read?  I&apos;m not sure how it affects this patch.

The different ChromeOS behavior was introduced in bug 86051, not sure how much it would clarify things to read all of it though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636701</commentid>
    <comment_count>15</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-29 18:37:33 -0700</bug_when>
    <thetext>For CROS we did it in such a way that the frame&apos;s size is equal to the number of CSS pixels, so it&apos;s not inflated to physical pixels as would be done with fixed-layout-mode. So the devicePixelRatioForDeviceDimensions might be 1 in that case.. and the variable is more a ratio between CSS/layout pixels and the frame&apos;s size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636722</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-29 18:57:37 -0700</bug_when>
    <thetext>I&apos;m hesitant to introduce yet another scale factor into the project.  It seems that folks cannot even keep the ones we have currently straight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636725</commentid>
    <comment_count>17</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-05-29 19:00:04 -0700</bug_when>
    <thetext>One remaining question I have is what size viewport does the Mac port pass in from the embedder?  Physical pixels or device-independent pixels?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636726</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-29 19:02:00 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; One remaining question I have is what size viewport does the Mac port pass in from the embedder?  Physical pixels or device-independent pixels?

I suspect bdakin might be able to answer your question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636727</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-29 19:03:49 -0700</bug_when>
    <thetext>IMHO, we should use the same approach here across ports, and Android and Chrome OS should also use that same approach.  Using a different architecture on Android and Chrome OS might be easier in the short term, but it&apos;s a recipe for sadness and not in our long-term interests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636732</commentid>
    <comment_count>20</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-29 19:12:00 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; IMHO, we should use the same approach here across ports, and Android and Chrome OS should also use that same approach.  Using a different architecture on Android and Chrome OS might be easier in the short term, but it&apos;s a recipe for sadness and not in our long-term interests.

AIUI Chrome OS plans to use the same approach as Android, and so these two should converge, but it was not feasible for the next Chromium milestone. The difference right now is essentially that Chrome OS applies the device scale during composite instead of as a CSS transform on the root layer.

Doing otherwise at the moment broke some important things, like Google Docs and CSS fixed position elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636735</commentid>
    <comment_count>21</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-29 19:14:56 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I&apos;m hesitant to introduce yet another scale factor into the project.  It seems that folks cannot even keep the ones we have currently straight.

Oh yes.. I don&apos;t mean to do that. I think we have too many probably, and it&apos;s confusing because they are not the right ones currently. IMO, we should have the most basic factors possible and then combine and use them as appropriate in code. It just seems like this one&apos;s name is misleading if the device scale is not part of the page scale (and thus transforming the root layer)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636783</commentid>
    <comment_count>22</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-05-29 20:37:23 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; One remaining question I have is what size viewport does the Mac port pass in from the embedder?  Physical pixels or device-independent pixels?

I must admit that I don&apos;t fully understand the question. What you mean by the embedder? 

But generally we use CSS aka device-independent pixels for just about everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637628</commentid>
    <comment_count>23</comment_count>
    <who name="John Mellor">johnme</who>
    <bug_when>2012-05-30 13:32:41 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; The difference right now is essentially that Chrome OS applies the device scale during composite instead of as a CSS transform on the root layer.

I&apos;m confused - why is either port transforming things by the deviceScaleFactor? Do you mean the pageScaleFactor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637661</commentid>
    <comment_count>24</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-30 13:51:48 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #20)
&gt; &gt; The difference right now is essentially that Chrome OS applies the device scale during composite instead of as a CSS transform on the root layer.
&gt; 
&gt; I&apos;m confused - why is either port transforming things by the deviceScaleFactor? Do you mean the pageScaleFactor?

In Android deviceScaleFactor is a component of pageScaleFactor, so I do.

In ChromeOS right now, pageScaleFactor is always 1, and everything is scaled during draw by the deviceScaleFactor. This is to avoid scaling the Frame as pageScaleFactor would have done, and to match the Mac port more closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650718</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-15 21:05:02 -0700</bug_when>
    <thetext>defaultDeviceScaleFactor doesn&apos;t exist anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660536</commentid>
    <comment_count>26</comment_count>
    <who name="John Mellor">johnme</who>
    <bug_when>2012-06-29 08:55:16 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; defaultDeviceScaleFactor doesn&apos;t exist anymore.

That seems orthogonal to &quot;DOM APIs don&apos;t deflate device dimensions by the device scale factor&quot;. We still need to divide device dimensions by deviceScaleFactor on Android and other ports that (unfortunately) size their screen/windowRect in physical screen pixels (as mentioned in comment #8, Chrome OS doesn&apos;t need this since they apparently already have it in CSS pixels).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660538</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 08:58:10 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; defaultDeviceScaleFactor doesn&apos;t exist anymore.
&gt; 
&gt; That seems orthogonal to &quot;DOM APIs don&apos;t deflate device dimensions by the device scale factor&quot;. We still need to divide device dimensions by deviceScaleFactor on Android and other ports that (unfortunately) size their screen/windowRect in physical screen pixels (as mentioned in comment #8, Chrome OS doesn&apos;t need this since they apparently already have it in CSS pixels).

I think Android should just do the same thing as ChromeOS / Mac/ etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660714</commentid>
    <comment_count>28</comment_count>
    <who name="John Mellor">johnme</who>
    <bug_when>2012-06-29 12:41:25 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; defaultDeviceScaleFactor doesn&apos;t exist anymore.
&gt; &gt; 
&gt; &gt; That seems orthogonal to &quot;DOM APIs don&apos;t deflate device dimensions by the device scale factor&quot;. We still need to divide device dimensions by deviceScaleFactor on Android and other ports that (unfortunately) size their screen/windowRect in physical screen pixels (as mentioned in comment #8, Chrome OS doesn&apos;t need this since they apparently already have it in CSS pixels).
&gt; 
&gt; I think Android should just do the same thing as ChromeOS / Mac/ etc.

Sounds reasonable. Alex, what&apos;s our status here?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143928</attachid>
            <date>2012-05-24 16:49:05 -0700</date>
            <delta_ts>2012-05-24 16:52:33 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-87440-20120524164903.patch</filename>
            <type>text/plain</type>
            <size>9670</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODQ0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTI0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRmlndXJlIG91dCB3aGF0IHRvIGRv
IHdpdGggZGV2aWNlUGl4ZWxSYXRpb0ZvckRldmljZURpbWVuc2lvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDQwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpkZXZp
Y2Vfd2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyk6Cisg
ICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgIChWaWV3cG9ydEF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6b3V0ZXJIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpv
dXRlcldpZHRoKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpkZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXREZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5zaW9ucyk6CisgICAg
ICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NjcmVlbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JlZW46OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OndpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6YXZhaWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuOjphdmFpbFdpZHRoKToKKwogMjAxMi0wNS0yNCAgUGFibG8gRmxvdXJldCAgPHBhYmxv
ZkBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgU3VibWl0IGJ1dHRvbiBkb2Vzbid0IHN1Ym1pdCB0
aGUgZm9ybSBpZiB0aGUgZm9ybSBpcyB3cmFwcGVkIGJ5IGFuIGFuY2hvciB0YWcKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAJKHJldmlzaW9uIDExODM5
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBib29sIGRldmljZV9oZWlnaHRNZWRp
YUZlYXR1cmVFdmEKICAgICAgICAgRmxvYXRSZWN0IHNnID0gc2NyZWVuUmVjdChmcmFtZS0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgbG9uZyBoZWlnaHQgPSBzZy5oZWlnaHQoKTsK
KyAgICAgICAgbG9uZyBoZWlnaHQgPSBzdGF0aWNfY2FzdDxsb25nPihzZy5oZWlnaHQoKSAvIGZy
YW1lLT5wYWdlKCktPmRldmljZVBpeGVsUmF0aW9Gb3JEZXZpY2VEaW1lbnNpb25zKCkpOwogICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUo
ZnJhbWUsICZoZWlnaHQpOwogICAgICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZy
YW1lLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwgbGVuZ3Ro
KSAmJiBjb21wYXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50PihoZWlnaHQpLCBsZW5ndGgsIG9wKTsK
ICAgICB9CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZGV2aWNlX3dpZHRoTWVkaWFG
ZWF0dXJlRXZhbAogICAgICAgICBGbG9hdFJlY3Qgc2cgPSBzY3JlZW5SZWN0KGZyYW1lLT5wYWdl
KCktPm1haW5GcmFtZSgpLT52aWV3KCkpOwogICAgICAgICBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
ID0gZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOwog
ICAgICAgICBpbnQgbGVuZ3RoOwotICAgICAgICBsb25nIHdpZHRoID0gc2cud2lkdGgoKTsKKyAg
ICAgICAgbG9uZyB3aWR0aCA9IHN0YXRpY19jYXN0PGxvbmc+KHNnLndpZHRoKCkgLyBmcmFtZS0+
cGFnZSgpLT5kZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5zaW9ucygpKTsKICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVNjcmVlbldpZHRoT3ZlcnJpZGUoZnJhbWUs
ICZ3aWR0aCk7CiAgICAgICAgIHJldHVybiBjb21wdXRlTGVuZ3RoKHZhbHVlLCAhZnJhbWUtPmRv
Y3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBzdHlsZSwgcm9vdFN0eWxlLCBsZW5ndGgpICYmIGNv
bXBhcmVWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoKSwgbGVuZ3RoLCBvcCk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAx
MTgzOTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIFZpZXdwb3J0QXR0cmlidXRlcyBjb21wdXRlVmll
d3BvcnRBdHRyaWIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgYm9vbCBpc0F1dG9EUEkg
PSBhcmdzLnRhcmdldERlbnNpdHlEcGkgPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsK
KwogICAgIHN3aXRjaCAoaW50KGFyZ3MudGFyZ2V0RGVuc2l0eURwaSkpIHsKICAgICBjYXNlIFZp
ZXdwb3J0QXJndW1lbnRzOjpWYWx1ZURldmljZURQSToKICAgICAgICAgYXJncy50YXJnZXREZW5z
aXR5RHBpID0gZGV2aWNlRFBJOwpAQCAtODksNiArOTEsOCBAQCBWaWV3cG9ydEF0dHJpYnV0ZXMg
Y29tcHV0ZVZpZXdwb3J0QXR0cmliCiAgICAgICAgIGRldmljZUhlaWdodCAvPSByZXN1bHQuZGV2
aWNlUGl4ZWxSYXRpbzsKICAgICB9CiAKKyAgICByZXN1bHQuZGV2aWNlUGl4ZWxSYXRpb0ZvckRl
dmljZURpbWVuc2lvbnMgPSBpc0F1dG9EUEkgPyAoZGV2aWNlRFBJIC8gMTYwLjBmKSA6IHJlc3Vs
dC5kZXZpY2VQaXhlbFJhdGlvOworCiAgICAgc3dpdGNoIChpbnQoYXJncy53aWR0aCkpIHsKICAg
ICBjYXNlIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZURlc2t0b3BXaWR0aDoKICAgICAgICAgYXJn
cy53aWR0aCA9IGRlc2t0b3BXaWR0aDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5oCShyZXZpc2lvbiAxMTgzOTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgVmll
d3BvcnRBdHRyaWJ1dGVzIHsKICAgICBGbG9hdFNpemUgbGF5b3V0U2l6ZTsKIAogICAgIGZsb2F0
IGRldmljZVBpeGVsUmF0aW87CisgICAgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpb0ZvckRldmljZURp
bWVuc2lvbnM7CiAKICAgICBmbG9hdCBpbml0aWFsU2NhbGU7CiAgICAgZmxvYXQgbWluaW11bVNj
YWxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTE4MzkwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDk1LDcgKzEwOTUsNyBAQCBpbnQgRE9NV2luZG93OjpvdXRlckhlaWdodCgpIGNvbnN0CiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCkgLyBw
YWdlLT5kZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5zaW9ucygpKTsKIH0KIAogaW50IERP
TVdpbmRvdzo6b3V0ZXJXaWR0aCgpIGNvbnN0CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBpbnQgRE9N
V2luZG93OjpvdXRlcldpZHRoKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCktPndpbmRv
d1JlY3QoKS53aWR0aCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYWdlLT5jaHJv
bWUoKS0+d2luZG93UmVjdCgpLndpZHRoKCkgLyBwYWdlLT5kZXZpY2VQaXhlbFJhdGlvRm9yRGV2
aWNlRGltZW5zaW9ucygpKTsKIH0KIAogaW50IERPTVdpbmRvdzo6aW5uZXJIZWlnaHQoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxMTgzOTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgUGFn
ZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX21lZGlhVm9sdW1lKDEp
CiAgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcigx
KQorICAgICwgbV9kZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5zaW9ucygxKQogICAgICwg
bV9qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQodHJ1ZSkKICAgICAsIG1fZGlkTG9hZFVzZXJTdHls
ZVNoZWV0KGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWUoMCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxMTgzOTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZVNjYWxlRmFjdG9yOyB9CiAgICAgICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpOwogCisgICAgICAgIGZsb2F0IGRldmljZVBpeGVsUmF0aW9Gb3JEZXZpY2VEaW1l
bnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5z
aW9uczsgfQorICAgICAgICB2b2lkIHNldERldmljZVBpeGVsUmF0aW9Gb3JEZXZpY2VEaW1lbnNp
b25zKGZsb2F0IHNjYWxlRmFjdG9yKSB7IG1fZGV2aWNlUGl4ZWxSYXRpb0ZvckRldmljZURpbWVu
c2lvbnMgPSBzY2FsZUZhY3RvcjsgfQorCiAgICAgICAgIHN0cnVjdCBQYWdpbmF0aW9uIHsKICAg
ICAgICAgICAgIGVudW0gTW9kZSB7IFVucGFnaW5hdGVkLCBIb3Jpem9udGFsbHlQYWdpbmF0ZWQs
IFZlcnRpY2FsbHlQYWdpbmF0ZWQgfTsKIApAQCAtNDEwLDYgKzQxMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBmbG9hdCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICAgICAgZmxv
YXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKKyAgICAgICAgZmxvYXQgbV9kZXZpY2VQaXhlbFJhdGlv
Rm9yRGV2aWNlRGltZW5zaW9uczsKIAogICAgICAgICBQYWdpbmF0aW9uIG1fcGFnaW5hdGlvbjsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcAkocmV2aXNpb24gMTE4MzkwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBA
IHVuc2lnbmVkIFNjcmVlbjo6aGVpZ2h0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIGxvbmcgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8bG9uZz4oc2Ny
ZWVuUmVjdChtX2ZyYW1lLT52aWV3KCkpLmhlaWdodCgpKTsKKyAgICBsb25nIGhlaWdodCA9IHN0
YXRpY19jYXN0PGxvbmc+KHNjcmVlblJlY3QobV9mcmFtZS0+dmlldygpKS5oZWlnaHQoKSAvIG1f
ZnJhbWUtPnBhZ2UoKS0+ZGV2aWNlUGl4ZWxSYXRpb0ZvckRldmljZURpbWVuc2lvbnMoKSk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKG1f
ZnJhbWUsICZoZWlnaHQpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVpZ2h0
KTsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgdW5zaWduZWQgU2NyZWVuOjp3aWR0aCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICBsb25nIHdpZHRoID0g
c3RhdGljX2Nhc3Q8bG9uZz4oc2NyZWVuUmVjdChtX2ZyYW1lLT52aWV3KCkpLndpZHRoKCkpOwor
ICAgIGxvbmcgd2lkdGggPSBzdGF0aWNfY2FzdDxsb25nPihzY3JlZW5SZWN0KG1fZnJhbWUtPnZp
ZXcoKSkud2lkdGgoKSAvIG1fZnJhbWUtPnBhZ2UoKS0+ZGV2aWNlUGl4ZWxSYXRpb0ZvckRldmlj
ZURpbWVuc2lvbnMoKSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVNjcmVl
bldpZHRoT3ZlcnJpZGUobV9mcmFtZSwgJndpZHRoKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHdpZHRoKTsKIH0KQEAgLTEwOCwxNCArMTA4LDE0IEBAIHVuc2lnbmVkIFNjcmVl
bjo6YXZhaWxIZWlnaHQoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JlZW5BdmFpbGFibGVS
ZWN0KG1fZnJhbWUtPnZpZXcoKSkuaGVpZ2h0KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3KCkpLmhlaWdodCgpIC8g
bV9mcmFtZS0+cGFnZSgpLT5kZXZpY2VQaXhlbFJhdGlvRm9yRGV2aWNlRGltZW5zaW9ucygpKTsK
IH0KIAogdW5zaWduZWQgU2NyZWVuOjphdmFpbFdpZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2NyZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3KCkpLndpZHRoKCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52
aWV3KCkpLndpZHRoKCkgLyBtX2ZyYW1lLT5wYWdlKCktPmRldmljZVBpeGVsUmF0aW9Gb3JEZXZp
Y2VEaW1lbnNpb25zKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4NDQzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
NS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEZpZ3VyZSBv
dXQgd2hhdCB0byBkbyB3aXRoIGRldmljZVBpeGVsUmF0aW9Gb3JEZXZpY2VEaW1lbnNpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQ0MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpkaXNw
YXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZSk6CisKIDIwMTItMDUtMjQgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhlIGNocm9taXVtLWFuZHJv
aWQgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTE4MzkwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MCw2ICs2NzAs
NyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmRpc3BhdGNoVmlld3BvcnRQCiAgICAgICAgIG1f
d2ViVmlldy0+c2V0RGV2aWNlU2NhbGVGYWN0b3Ioc2V0dGluZ3MtPmRlZmF1bHREZXZpY2VTY2Fs
ZUZhY3RvcigpKTsKICAgICBlbHNlCiAgICAgICAgIG1fd2ViVmlldy0+c2V0RGV2aWNlU2NhbGVG
YWN0b3IoY29tcHV0ZWQuZGV2aWNlUGl4ZWxSYXRpbyk7CisgICAgbV93ZWJWaWV3LT5wYWdlKCkt
PnNldERldmljZVBpeGVsUmF0aW9Gb3JEZXZpY2VEaW1lbnNpb25zKGNvbXB1dGVkLmRldmljZVBp
eGVsUmF0aW9Gb3JEZXZpY2VEaW1lbnNpb25zKTsKICAgICBtX3dlYlZpZXctPnNldFBhZ2VTY2Fs
ZUZhY3RvckxpbWl0cyhjb21wdXRlZC5taW5pbXVtU2NhbGUsIGNvbXB1dGVkLm1heGltdW1TY2Fs
ZSk7CiAgICAgaWYgKG5lZWRJbml0aWFsaXplUGFnZVNjYWxlKQogICAgICAgICBtX3dlYlZpZXct
PnNldFBhZ2VTY2FsZUZhY3RvclByZXNlcnZpbmdTY3JvbGxPZmZzZXQoY29tcHV0ZWQuaW5pdGlh
bFNjYWxlICogY29tcHV0ZWQuZGV2aWNlUGl4ZWxSYXRpbyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143935</attachid>
            <date>2012-05-24 17:40:53 -0700</date>
            <delta_ts>2012-05-26 01:52:43 -0700</delta_ts>
            <desc>Alternate version that doesn&apos;t introduce a new variable</desc>
            <filename>bug-87440-20120524174051.patch</filename>
            <type>text/plain</type>
            <size>5090</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODQ0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTI0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRE9NIEFQSXMgZG9uJ3QgZGVmbGF0
ZSBkZXZpY2UgZGltZW5zaW9ucyBieSB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc0NDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BT
ISkKKworICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRldmljZV9oZWlnaHRNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OmRldmljZV93aWR0aE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6b3V0ZXJIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpvdXRlcldpZHRoKToKKyAgICAgICAgKiBwYWdlL1NjcmVl
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JlZW46OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6YXZhaWxIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuOjphdmFpbFdpZHRoKToKKwogMjAxMi0wNS0y
NCAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgU3VibWl0
IGJ1dHRvbiBkb2Vzbid0IHN1Ym1pdCB0aGUgZm9ybSBpZiB0aGUgZm9ybSBpcyB3cmFwcGVkIGJ5
IGFuIGFuY2hvciB0YWcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAJKHJldmlzaW9uIDExODM5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRp
YyBib29sIGRldmljZV9oZWlnaHRNZWRpYUZlYXR1cmVFdmEKICAgICAgICAgRmxvYXRSZWN0IHNn
ID0gc2NyZWVuUmVjdChmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICAg
ICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgbG9u
ZyBoZWlnaHQgPSBzZy5oZWlnaHQoKTsKKyAgICAgICAgbG9uZyBoZWlnaHQgPSBzdGF0aWNfY2Fz
dDxsb25nPihzZy5oZWlnaHQoKSAvIGZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPmRlZmF1bHRE
ZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
cHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKGZyYW1lLCAmaGVpZ2h0KTsKICAgICAgICAgcmV0dXJu
IGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCks
IHN0eWxlLCByb290U3R5bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGlu
dD4oaGVpZ2h0KSwgbGVuZ3RoLCBvcCk7CiAgICAgfQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRp
YyBib29sIGRldmljZV93aWR0aE1lZGlhRmVhdHVyZUV2YWwKICAgICAgICAgRmxvYXRSZWN0IHNn
ID0gc2NyZWVuUmVjdChmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICAg
ICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgbG9u
ZyB3aWR0aCA9IHNnLndpZHRoKCk7CisgICAgICAgIGxvbmcgd2lkdGggPSBzdGF0aWNfY2FzdDxs
b25nPihzZy53aWR0aCgpIC8gZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+ZGVmYXVsdERldmlj
ZVNjYWxlRmFjdG9yKCkoKSk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBw
bHlTY3JlZW5XaWR0aE92ZXJyaWRlKGZyYW1lLCAmd2lkdGgpOwogICAgICAgICByZXR1cm4gY29t
cHV0ZUxlbmd0aCh2YWx1ZSwgIWZyYW1lLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSwgc3R5
bGUsIHJvb3RTdHlsZSwgbGVuZ3RoKSAmJiBjb21wYXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih3
aWR0aCksIGxlbmd0aCwgb3ApOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAJKHJldmlzaW9uIDExODM5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA5NSw3ICsxMDk1LDcgQEAgaW50IERPTVdpbmRvdzo6b3V0
ZXJIZWlnaHQoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLmhl
aWdodCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYWdlLT5jaHJvbWUoKS0+d2lu
ZG93UmVjdCgpLmhlaWdodCgpIC8gcGFnZS0+c2V0dGluZ3MoKS0+ZGVmYXVsdERldmljZVNjYWxl
RmFjdG9yKCkpOwogfQogCiBpbnQgRE9NV2luZG93OjpvdXRlcldpZHRoKCkgY29uc3QKQEAgLTEx
MDcsNyArMTEwNyw3IEBAIGludCBET01XaW5kb3c6Om91dGVyV2lkdGgoKSBjb25zdAogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpLndpZHRoKCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkud2lkdGgoKSAvIHBhZ2Ut
PnNldHRpbmdzKCktPmRlZmF1bHREZXZpY2VTY2FsZUZhY3RvcigpKTsKIH0KIAogaW50IERPTVdp
bmRvdzo6aW5uZXJIZWlnaHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TY3Jl
ZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcAkocmV2
aXNpb24gMTE4MzkwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHVuc2lnbmVkIFNjcmVlbjo6aGVpZ2h0KCkgY29uc3QK
IHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIGxvbmcgaGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8bG9uZz4oc2NyZWVuUmVjdChtX2ZyYW1lLT52aWV3KCkpLmhlaWdodCgp
KTsKKyAgICBsb25nIGhlaWdodCA9IHN0YXRpY19jYXN0PGxvbmc+KHNjcmVlblJlY3QobV9mcmFt
ZS0+dmlldygpKS5oZWlnaHQoKSAvIG1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+ZGVmYXVs
dERldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBw
bHlTY3JlZW5IZWlnaHRPdmVycmlkZShtX2ZyYW1lLCAmaGVpZ2h0KTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGhlaWdodCk7CiB9CkBAIC03MSw3ICs3MSw3IEBAIHVuc2lnbmVk
IFNjcmVlbjo6d2lkdGgoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgbG9uZyB3aWR0aCA9IHN0YXRpY19jYXN0PGxvbmc+KHNjcmVlblJlY3QobV9m
cmFtZS0+dmlldygpKS53aWR0aCgpKTsKKyAgICBsb25nIHdpZHRoID0gc3RhdGljX2Nhc3Q8bG9u
Zz4oc2NyZWVuUmVjdChtX2ZyYW1lLT52aWV3KCkpLndpZHRoKCkgLyBtX2ZyYW1lLT5wYWdlKCkt
PnNldHRpbmdzKCktPmRlZmF1bHREZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShtX2ZyYW1lLCAmd2lkdGgp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lkdGgpOwogfQpAQCAtMTA4LDE0
ICsxMDgsMTQgQEAgdW5zaWduZWQgU2NyZWVuOjphdmFpbEhlaWdodCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNjcmVlbkF2YWlsYWJsZVJlY3QobV9mcmFtZS0+dmlldygpKS5oZWlnaHQoKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JlZW5BdmFpbGFibGVSZWN0KG1f
ZnJhbWUtPnZpZXcoKSkuaGVpZ2h0KCkgLyBtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPmRl
ZmF1bHREZXZpY2VTY2FsZUZhY3RvcigpKTsKIH0KIAogdW5zaWduZWQgU2NyZWVuOjphdmFpbFdp
ZHRoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1l
LT52aWV3KCkpLndpZHRoKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Ny
ZWVuQXZhaWxhYmxlUmVjdChtX2ZyYW1lLT52aWV3KCkpLndpZHRoKCkgLyBtX2ZyYW1lLT5wYWdl
KCktPnNldHRpbmdzKCktPmRlZmF1bHREZXZpY2VTY2FsZUZhY3RvcigpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>