<?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>36159</bug_id>
          
          <creation_ts>2010-03-16 01:01:50 -0700</creation_ts>
          <short_desc>Move code related with printing defined in WebFrame.mm to WebCore::PrintContext</short_desc>
          <delta_ts>2010-03-24 18:11:09 -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>Printing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>0</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200058</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-03-16 01:01:50 -0700</bug_when>
    <thetext>There are similar code between _computePageRectsWithPrintWidthScaleFactor in WebFrame.mm and WebCore::PrintContext.

It might be better that sharing similar code between them before starting to implement new features related with CSS3&apos;s PagedMedia.
Maybe some code related with printing defined in WebFrame.mm should move to WebCore::PrintContext, and use WebCore::PrintContext from WebKit even in Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200591</commentid>
    <comment_count>1</comment_count>
      <attachid>50876</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-03-16 23:02:15 -0700</bug_when>
    <thetext>Created attachment 50876
refactor-computePageRects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200592</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-16 23:06:30 -0700</bug_when>
    <thetext>Attachment 50876 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/927020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200593</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-03-16 23:15:07 -0700</bug_when>
    <thetext>I&apos;ve cleared the review flag because the patch needs to be compiled at chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200611</commentid>
    <comment_count>4</comment_count>
      <attachid>50880</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-03-17 01:03:56 -0700</bug_when>
    <thetext>Created attachment 50880
refactor-computePageRects-fix-chromium-build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200616</commentid>
    <comment_count>5</comment_count>
      <attachid>50880</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-17 01:32:23 -0700</bug_when>
    <thetext>Comment on attachment 50880
refactor-computePageRects-fix-chromium-build

Basically, looks good. r- for a few style nitpicks.

&gt; -    RenderView* root = toRenderView(m_frame-&gt;document()-&gt;renderer());
&gt; -
&gt; -    if (!root) {
&gt; -        LOG_ERROR(&quot;document to be printed has no renderer&quot;);
&gt; +    if (userScaleFactor &lt;= 0) {
&gt; +        LOG_ERROR(&quot;userScaleFactor has bad value %.2f&quot;, userScaleFactor);
&gt;          return;
&gt;      }
&gt;  
&gt; +    RenderView* root = toRenderView(m_frame-&gt;document()-&gt;renderer());
&gt; +

It seems like NULL check for root was gone. Is this OK?

&gt; +    const Vector&lt;IntRect&gt;&amp; pageRects = printContext.pageRects();
&gt; +    const size_t pageCount = pageRects.size();
&gt; +    for (size_t pageNumber = 0; pageNumber &lt; pageCount; ++pageNumber) {
&gt; +      const IntRect&amp; pageRect = pageRects[pageNumber];
&gt; +      NSValue* val = [NSValue valueWithRect: NSMakeRect(pageRect.x(), pageRect.y(), pageRect.width(), pageRect.height())];
&gt; +      [pages addObject: val];

- Two more spaces for indent here.
- Cannot we use IntRect::operator NSRect() to create NSRect? (maybe it&apos;s not in WebCore.base.exp?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200627</commentid>
    <comment_count>6</comment_count>
      <attachid>50883</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-03-17 02:46:28 -0700</bug_when>
    <thetext>Created attachment 50883
refactor-computePageRects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200634</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-03-17 02:58:44 -0700</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #5)
&gt; (From update of attachment 50880 [details])
&gt; Basically, looks good. r- for a few style nitpicks.
&gt; 
&gt; &gt; -    RenderView* root = toRenderView(m_frame-&gt;document()-&gt;renderer());
&gt; &gt; -
&gt; &gt; -    if (!root) {
&gt; &gt; -        LOG_ERROR(&quot;document to be printed has no renderer&quot;);
&gt; &gt; +    if (userScaleFactor &lt;= 0) {
&gt; &gt; +        LOG_ERROR(&quot;userScaleFactor has bad value %.2f&quot;, userScaleFactor);
&gt; &gt;          return;
&gt; &gt;      }
&gt; &gt;  
&gt; &gt; +    RenderView* root = toRenderView(m_frame-&gt;document()-&gt;renderer());
&gt; &gt; +
&gt; 
&gt; It seems like NULL check for root was gone. Is this OK?

The reason I&apos;ve omitted NULL check for |root| here is that it never happens, I guess.

NULL check for m_frame-&gt;document()-&gt;renderer() is already done in the two callers, computePageRectsWithPageSize and computePageRects.

It never happens that |root| becomes NULL in the following code, doesn&apos;t it?

    if (!m_frame-&gt;document() || !m_frame-&gt;view() || !m_frame-&gt;document()-&gt;renderer())
         return;
    RenderView* root = toRenderView(m_frame-&gt;document()-&gt;renderer());
    if (!root) {
        LOG_ERROR(&quot;document to be printed has no renderer&quot;);

Anyway, for the maximum safety, I&apos;ve decided to insert NULL check at the head of PrintContext::computePageRectsWithPageSizeInternal in the new patch in case that it is called from other functions in the future.

&gt; 
&gt; &gt; +    const Vector&lt;IntRect&gt;&amp; pageRects = printContext.pageRects();
&gt; &gt; +    const size_t pageCount = pageRects.size();
&gt; &gt; +    for (size_t pageNumber = 0; pageNumber &lt; pageCount; ++pageNumber) {
&gt; &gt; +      const IntRect&amp; pageRect = pageRects[pageNumber];
&gt; &gt; +      NSValue* val = [NSValue valueWithRect: NSMakeRect(pageRect.x(), pageRect.y(), pageRect.width(), pageRect.height())];
&gt; &gt; +      [pages addObject: val];
&gt; 
&gt; - Two more spaces for indent here.
&gt; - Cannot we use IntRect::operator NSRect() to create NSRect? (maybe it&apos;s not in
&gt; WebCore.base.exp?)

Done. Thank you! It&apos;s already in WebCore.base.exp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201179</commentid>
    <comment_count>8</comment_count>
      <attachid>50883</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-03-17 21:55:55 -0700</bug_when>
    <thetext>Comment on attachment 50883
refactor-computePageRects

This looks sane. I&apos;ll land this patch unless anyone object tomorrow. I want to wait a moment in case someone have ideas about this.

I asked him to test this manually on Mac by setting scale in the dialog box for printing and looking the print preview. He said it seems working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203556</commentid>
    <comment_count>9</comment_count>
      <attachid>50883</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-24 13:38:12 -0700</bug_when>
    <thetext>Comment on attachment 50883
refactor-computePageRects

Clearing flags on attachment: 50883

Committed r56454: &lt;http://trac.webkit.org/changeset/56454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203557</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-24 13:38:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203714</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-24 18:11:09 -0700</bug_when>
    <thetext>ChangeLog fixed in http://trac.webkit.org/changeset/56476.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50876</attachid>
            <date>2010-03-16 23:02:15 -0700</date>
            <delta_ts>2010-03-17 01:03:51 -0700</delta_ts>
            <desc>refactor-computePageRects</desc>
            <filename>bug-36159-20100317150213.patch</filename>
            <type>text/plain</type>
            <size>10150</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGY4YjU5Yi4uZmI0NzhkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0xNiAgSGF5YXRvIEl0byAg
PGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChOZWVk
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29tcHV0ZVBhZ2VSZWN0cyBzbyB0aGF0IE1hYyBjYW4g
bWFrZSB1c2Ugb2YgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjE1OQorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIHNvIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFnZS9QcmludENv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dp
dGhQYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRl
eHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4
dDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuaDoKKwogMjAx
MC0wMy0xNiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2Uu
ZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDliYWZhZDcuLjQ5YzM1NDAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUu
YmFzZS5leHAKQEAgLTI1MCw2ICsyNTAsOSBAQCBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZTlz
ZXRDbGllbnRFUE5TXzE4SWNvbkRhdGFiYXNlQ2xpZW50RQogX19aTjdXZWJDb3JlMTJQbHVnaW5X
aWRnZXQxNGludmFsaWRhdGVSZWN0RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMlByaW50
Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQTlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVtYmVyRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRF
UktOU185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyOGNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemVFUktOU185RmxvYXRTaXplRWIKK19fWk43V2ViQ29yZTEyUHJpbnRD
b250ZXh0QzFFUE5TXzVGcmFtZUUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFFdgogX19a
TjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNnJlcGFpbnRSZWN0YW5nbGVFUktOU183SW50UmVjdEVi
CiBfX1pON1dlYkNvcmUxMlJlbmRlcldpZGdldDE5c2hvd1N1YnN0aXR1dGVJbWFnZUVOM1dURjEw
UGFzc1JlZlB0cklOU181SW1hZ2VFRUUKIF9fWk43V2ViQ29yZTEyU2NoZWR1bGVQYWlyQzFFUDlO
U1J1bkxvb3BQSzEwX19DRlN0cmluZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5jcHAgYi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCBiNjgwNmViLi44
OGZiZmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtNTgsMTggKzU4LDE4IEBAIHZvaWQgUHJp
bnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRSZWN0LCBm
bG9hdCBoZWFkZXJIZWlnCiAgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1l
LT52aWV3KCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlbmRlclZpZXcqIHJvb3QgPSB0b1JlbmRlclZpZXcobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+cmVuZGVyZXIoKSk7Ci0KLSAgICBpZiAoIXJvb3QpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJkb2N1bWVudCB0byBiZSBwcmludGVkIGhhcyBubyByZW5kZXJlciIpOworICAgIGlmICh1
c2VyU2NhbGVGYWN0b3IgPD0gMCkgeworICAgICAgICBMT0dfRVJST1IoInVzZXJTY2FsZUZhY3Rv
ciBoYXMgYmFkIHZhbHVlICUuMmYiLCB1c2VyU2NhbGVGYWN0b3IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyhtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZW5kZXJlcigpKTsKKwogICAgIGZsb2F0IHJhdGlvID0gcHJpbnRSZWN0Lmhl
aWdodCgpIC8gcHJpbnRSZWN0LndpZHRoKCk7CiAKICAgICBmbG9hdCBwYWdlV2lkdGggID0gKGZs
b2F0KXJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKTsKICAgICBmbG9hdCBwYWdlSGVpZ2h0ID0g
cGFnZVdpZHRoICogcmF0aW87Ci0gICAgb3V0UGFnZUhlaWdodCA9IHBhZ2VIZWlnaHQ7ICAgLy8g
dGhpcyBpcyB0aGUgaGVpZ2h0IG9mIHRoZSBwYWdlIGFkanVzdGVkIGJ5IG1hcmdpbnMKKyAgICBv
dXRQYWdlSGVpZ2h0ID0gcGFnZUhlaWdodDsgLy8gdGhpcyBpcyB0aGUgaGVpZ2h0IG9mIHRoZSBw
YWdlIGFkanVzdGVkIGJ5IG1hcmdpbnMKICAgICBwYWdlSGVpZ2h0IC09IGhlYWRlckhlaWdodCAr
IGZvb3RlckhlaWdodDsKIAogICAgIGlmIChwYWdlSGVpZ2h0IDw9IDApIHsKQEAgLTc3LDI2ICs3
NywyNyBAQCB2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBGbG9hdFJl
Y3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShGbG9hdFNpemUocGFnZVdpZHRoLCBw
YWdlSGVpZ2h0KSwgdXNlclNjYWxlRmFjdG9yKTsKKyAgICBjb21wdXRlUGFnZVJlY3RzV2l0aFBh
Z2VTaXplSW50ZXJuYWwoRmxvYXRTaXplKHBhZ2VXaWR0aCAvIHVzZXJTY2FsZUZhY3RvciwgcGFn
ZUhlaWdodCAvIHVzZXJTY2FsZUZhY3RvciksIGZhbHNlKTsKIH0KIAotdm9pZCBQcmludENvbnRl
eHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6
ZUluUGl4ZWxzLCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IpCit2b2lkIFByaW50Q29udGV4dDo6Y29t
cHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhl
bHMsIGJvb2wgYWxsb3dIb3Jpem9udGFsTXVsdGlQYWdlcykKIHsKLSAgICBSZW5kZXJWaWV3KiBy
b290ID0gdG9SZW5kZXJWaWV3KG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOworICAg
IG1fcGFnZVJlY3RzLmNsZWFyKCk7CiAKLSAgICBpZiAoIXJvb3QpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJkb2N1bWVudCB0byBiZSBwcmludGVkIGhhcyBubyByZW5kZXJlciIpOworICAgIGlmICgh
bV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKHVz
ZXJTY2FsZUZhY3RvciA8PSAwKSB7Ci0gICAgICAgIExPR19FUlJPUigidXNlclNjYWxlRmFjdG9y
IGhhcyBiYWQgdmFsdWUgJS4yZiIsIHVzZXJTY2FsZUZhY3Rvcik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsKHBhZ2VTaXpl
SW5QaXhlbHMsIGFsbG93SG9yaXpvbnRhbE11bHRpUGFnZXMpOworfQogCi0gICAgZmxvYXQgY3Vy
clBhZ2VIZWlnaHQgPSBwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpIC8gdXNlclNjYWxlRmFjdG9y
OwotICAgIGZsb2F0IGRvY0hlaWdodCA9IHJvb3QtPmxheWVyKCktPmhlaWdodCgpOwotICAgIGZs
b2F0IGN1cnJQYWdlV2lkdGggPSBwYWdlU2l6ZUluUGl4ZWxzLndpZHRoKCkgLyB1c2VyU2NhbGVG
YWN0b3I7Cit2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUlu
dGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0hvcml6
b250YWxNdWx0aVBhZ2VzKQoreworICAgIFJlbmRlclZpZXcqIHJvb3QgPSB0b1JlbmRlclZpZXco
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CisKKyAgICBjb25zdCBmbG9hdCBwYWdl
V2lkdGggPSBwYWdlU2l6ZUluUGl4ZWxzLndpZHRoKCk7CisgICAgY29uc3QgZmxvYXQgZG9jV2lk
dGggPSByb290LT5sYXllcigpLT53aWR0aCgpOworICAgIGNvbnN0IGZsb2F0IGRvY0hlaWdodCA9
IHJvb3QtPmxheWVyKCktPmhlaWdodCgpOworICAgIGZsb2F0IGN1cnJQYWdlSGVpZ2h0ID0gcGFn
ZVNpemVJblBpeGVscy5oZWlnaHQoKTsKIAogICAgIC8vIGFsd2F5cyByZXR1cm4gYXQgbGVhc3Qg
b25lIHBhZ2UsIHNpbmNlIGVtcHR5IGZpbGVzIHNob3VsZCBwcmludCBhIGJsYW5rIHBhZ2UKICAg
ICBmbG9hdCBwcmludGVkUGFnZXNIZWlnaHQgPSAwOwpAQCAtMTA0LDggKzEwNSwxMSBAQCB2b2lk
IFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBGbG9hdFNp
emUmIHBhZ2VTaXplSW5QaXhlbAogICAgICAgICBmbG9hdCBwcm9wb3NlZEJvdHRvbSA9IHN0ZDo6
bWluKGRvY0hlaWdodCwgcHJpbnRlZFBhZ2VzSGVpZ2h0ICsgcGFnZVNpemVJblBpeGVscy5oZWln
aHQoKSk7CiAgICAgICAgIG1fZnJhbWUtPnZpZXcoKS0+YWRqdXN0UGFnZUhlaWdodCgmcHJvcG9z
ZWRCb3R0b20sIHByaW50ZWRQYWdlc0hlaWdodCwgcHJvcG9zZWRCb3R0b20sIHByaW50ZWRQYWdl
c0hlaWdodCk7CiAgICAgICAgIGN1cnJQYWdlSGVpZ2h0ID0gbWF4KDEuMGYsIHByb3Bvc2VkQm90
dG9tIC0gcHJpbnRlZFBhZ2VzSGVpZ2h0KTsKLQotICAgICAgICBtX3BhZ2VSZWN0cy5hcHBlbmQo
SW50UmVjdCgwLCAoaW50KXByaW50ZWRQYWdlc0hlaWdodCwgKGludCljdXJyUGFnZVdpZHRoLCAo
aW50KWN1cnJQYWdlSGVpZ2h0KSk7CisgICAgICAgIGlmIChhbGxvd0hvcml6b250YWxNdWx0aVBh
Z2VzKSB7CisgICAgICAgICAgICBmb3IgKGZsb2F0IGN1cldpZHRoID0gMDsgY3VyV2lkdGggPCBk
b2NXaWR0aDsgY3VyV2lkdGggKz0gcGFnZVdpZHRoKQorICAgICAgICAgICAgICAgIG1fcGFnZVJl
Y3RzLmFwcGVuZChJbnRSZWN0KGN1cldpZHRoLCAoaW50KXByaW50ZWRQYWdlc0hlaWdodCwgKGlu
dClwYWdlV2lkdGgsIChpbnQpY3VyclBhZ2VIZWlnaHQpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBtX3BhZ2VSZWN0cy5hcHBlbmQoSW50UmVjdCgwLCAoaW50KXByaW50ZWRQYWdlc0hl
aWdodCwgKGludClwYWdlV2lkdGgsIChpbnQpY3VyclBhZ2VIZWlnaHQpKTsKICAgICAgICAgcHJp
bnRlZFBhZ2VzSGVpZ2h0ICs9IGN1cnJQYWdlSGVpZ2h0OwogICAgIH0gd2hpbGUgKHByaW50ZWRQ
YWdlc0hlaWdodCA8IGRvY0hlaWdodCk7CiB9CkBAIC0xNzUsNyArMTc5LDcgQEAgaW50IFByaW50
Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgRmxv
YXRTaXplJiBwYWdlU2kKICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoRmxvYXRQb2ludCgwLCAwKSwg
cGFnZVNpemVJblBpeGVscyk7CiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7
CiAgICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCkpOwotICAgIHByaW50Q29u
dGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHBhZ2VTaXplSW5QaXhlbHMsIDEpOwor
ICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHBhZ2VTaXplSW5Q
aXhlbHMsIGZhbHNlKTsKIAogICAgIGludCB0b3AgPSBib3gtPm9mZnNldFRvcCgpOwogICAgIGlu
dCBsZWZ0ID0gYm94LT5vZmZzZXRMZWZ0KCk7CkBAIC0xOTYsNyArMjAwLDcgQEAgaW50IFByaW50
Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemVJblBpeGVscykKICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoRmxvYXRQb2ludCgwLCAwKSwg
cGFnZVNpemVJblBpeGVscyk7CiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7
CiAgICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCkpOwotICAgIHByaW50Q29u
dGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHBhZ2VTaXplSW5QaXhlbHMsIDEpOwor
ICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKHBhZ2VTaXplSW5Q
aXhlbHMsIGZhbHNlKTsKICAgICBwcmludENvbnRleHQuZW5kKCk7CiAgICAgcmV0dXJuIHByaW50
Q29udGV4dC5wYWdlQ291bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuaCBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAppbmRleCBlYzE1Yjg0Li5jODUw
MzExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKKysrIGIvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJlY3Rz
OyB9CiAKICAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBwcmludFJl
Y3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1c2VyU2Nh
bGVGYWN0b3IsIGZsb2F0JiBvdXRQYWdlSGVpZ2h0KTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlUmVj
dHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzLCBib29sIGFs
bG93SG9yaXpvbnRhbE11bHRpUGFnZXMpOwogCiAgICAgLy8gVE9ETzogZWxpbWluYXRlIHdpZHRo
IHBhcmFtCiAgICAgdm9pZCBiZWdpbihmbG9hdCB3aWR0aCk7CkBAIC01NSw4ICs1Niw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25z
dCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwogICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQ
YWdlcyhGcmFtZSosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAKLXByb3Rl
Y3RlZDoKLSAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRT
aXplJiBwYWdlU2l6ZUluUGl4ZWxzLCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IpOworcHJpdmF0ZToK
KyAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChjb25zdCBGbG9h
dFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dIb3Jpem9udGFsTXVsdGlQYWdlcyk7
CiAKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBWZWN0b3I8SW50UmVjdD4gbV9wYWdlUmVjdHM7
CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDhkZWNjNTguLjBmMzIxZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTYg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGNvbXB1dGVQYWdlUmVjdHMgc28g
dGhhdCBNYWMgY2FuIG1ha2UgdXNlIG9mIGl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxNTkKKworICAgICAgICBSZWZhY3RvcmluZyBvbmx5LCBz
byBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFdpZHRoU2NhbGVGYWN0b3I6
cHJpbnRIZWlnaHQ6XSk6CisKIDIwMTAtMDMtMTYgIFl1cnkgU2VtaWtoYXRza3kgPHl1cnlzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IGYyOTRmMDUuLjM2NjFjNjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTc0LDYgKzc0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlckxheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclBhcnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtNTgyLDIyICs1ODMsMTkgQEAgc3RhdGljIGlubGluZSBX
ZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYg
KCFkb2N1bWVudFZpZXcpCiAgICAgICAgIHJldHVybiBwYWdlczsKIAotICAgIGZsb2F0IGN1cnJQ
YWdlSGVpZ2h0ID0gcHJpbnRIZWlnaHQ7Ci0gICAgZmxvYXQgZG9jSGVpZ2h0ID0gcm9vdC0+bGF5
ZXIoKS0+aGVpZ2h0KCk7CiAgICAgZmxvYXQgZG9jV2lkdGggPSByb290LT5sYXllcigpLT53aWR0
aCgpOwotICAgIGZsb2F0IHByaW50V2lkdGggPSBkb2NXaWR0aC9wcmludFdpZHRoU2NhbGVGYWN0
b3I7Ci0gICAgCi0gICAgLy8gV2UgbmVlZCB0byBnaXZlIHRoZSBwYXJ0IHRoZSBvcHBvcnR1bml0
eSB0byBhZGp1c3QgdGhlIHBhZ2UgaGVpZ2h0IGF0IGVhY2ggc3RlcC4KLSAgICBmb3IgKGZsb2F0
IGkgPSAwOyBpIDwgZG9jSGVpZ2h0OyBpICs9IGN1cnJQYWdlSGVpZ2h0KSB7Ci0gICAgICAgIGZs
b2F0IHByb3Bvc2VkQm90dG9tID0gbWluKGRvY0hlaWdodCwgaSArIHByaW50SGVpZ2h0KTsKLSAg
ICAgICAgdmlldy0+YWRqdXN0UGFnZUhlaWdodCgmcHJvcG9zZWRCb3R0b20sIGksIHByb3Bvc2Vk
Qm90dG9tLCBpKTsKLSAgICAgICAgY3VyclBhZ2VIZWlnaHQgPSBtYXgoMS4wZiwgcHJvcG9zZWRC
b3R0b20gLSBpKTsKLSAgICAgICAgZm9yIChmbG9hdCBqID0gMDsgaiA8IGRvY1dpZHRoOyBqICs9
IHByaW50V2lkdGgpIHsKLSAgICAgICAgICAgIE5TVmFsdWUqIHZhbCA9IFtOU1ZhbHVlIHZhbHVl
V2l0aFJlY3Q6IE5TTWFrZVJlY3QoaiwgaSwgcHJpbnRXaWR0aCwgY3VyclBhZ2VIZWlnaHQpXTsK
LSAgICAgICAgICAgIFtwYWdlcyBhZGRPYmplY3Q6IHZhbF07Ci0gICAgICAgIH0KKyAgICBmbG9h
dCBwcmludFdpZHRoID0gZG9jV2lkdGggLyBwcmludFdpZHRoU2NhbGVGYWN0b3I7CisKKyAgICBQ
cmludENvbnRleHQgcHJpbnRDb250ZXh0KF9wcml2YXRlLT5jb3JlRnJhbWUpOworICAgIHByaW50
Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKEZsb2F0U2l6ZShwcmludFdpZHRo
LCBwcmludEhlaWdodCksIHRydWUpOworCisgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdl
UmVjdHMgPSBwcmludENvbnRleHQucGFnZVJlY3RzKCk7CisgICAgY29uc3Qgc2l6ZV90IHBhZ2VD
b3VudCA9IHBhZ2VSZWN0cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgcGFnZU51bWJlciA9IDA7
IHBhZ2VOdW1iZXIgPCBwYWdlQ291bnQ7ICsrcGFnZU51bWJlcikgeworICAgICAgY29uc3QgSW50
UmVjdCYgcGFnZVJlY3QgPSBwYWdlUmVjdHNbcGFnZU51bWJlcl07CisgICAgICBOU1ZhbHVlKiB2
YWwgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OiBOU01ha2VSZWN0KHBhZ2VSZWN0LngoKSwgcGFn
ZVJlY3QueSgpLCBwYWdlUmVjdC53aWR0aCgpLCBwYWdlUmVjdC5oZWlnaHQoKSldOworICAgICAg
W3BhZ2VzIGFkZE9iamVjdDogdmFsXTsKICAgICB9Ci0gICAgCiAgICAgcmV0dXJuIHBhZ2VzOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50880</attachid>
            <date>2010-03-17 01:03:56 -0700</date>
            <delta_ts>2010-03-17 02:46:22 -0700</delta_ts>
            <desc>refactor-computePageRects-fix-chromium-build</desc>
            <filename>bug-36159-20100317170354.patch</filename>
            <type>text/plain</type>
            <size>10080</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDc5Y2MzNC4uNmIwMTc5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0xNiAgSGF5YXRvIEl0byAg
PGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChOZWVk
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29tcHV0ZVBhZ2VSZWN0cyBzbyB0aGF0IE1hYyBjYW4g
bWFrZSB1c2Ugb2YgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjE1OQorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIHNvIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFnZS9QcmludENv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dp
dGhQYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRl
eHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4
dDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuaDoKKwogMjAx
MC0wMy0xNiAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCA5YmFmYWQ3Li40OWMzNTQw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwCkBAIC0yNTAsNiArMjUwLDkgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJh
c2U5c2V0Q2xpZW50RVBOU18xOEljb25EYXRhYmFzZUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUGx1
Z2luV2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTJQ
cmludENvbnRleHQxM251bWJlck9mUGFnZXNFUE5TXzVGcmFtZUVSS05TXzlGbG9hdFNpemVFCiBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJlckZvckVsZW1lbnRFUE5TXzdFbGVt
ZW50RVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRl
UGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfOUZsb2F0U2l6ZUViCitfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dEMxRVBOU181RnJhbWVFCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYK
IF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJl
Y3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQxOXNob3dTdWJzdGl0dXRlSW1hZ2VFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfNUltYWdlRUVFCiBfX1pON1dlYkNvcmUxMlNjaGVkdWxlUGFpckMx
RVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggYjY4MDZl
Yi4uODhmYmZhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTU4LDE4ICs1OCwxOCBAQCB2b2lk
IFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBGbG9hdFJlY3QmIHByaW50UmVj
dCwgZmxvYXQgaGVhZGVySGVpZwogICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9m
cmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZW5kZXJWaWV3KiByb290ID0gdG9SZW5kZXJWaWV3KG1fZnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOwotCi0gICAgaWYgKCFyb290KSB7Ci0gICAgICAgIExP
R19FUlJPUigiZG9jdW1lbnQgdG8gYmUgcHJpbnRlZCBoYXMgbm8gcmVuZGVyZXIiKTsKKyAgICBp
ZiAodXNlclNjYWxlRmFjdG9yIDw9IDApIHsKKyAgICAgICAgTE9HX0VSUk9SKCJ1c2VyU2NhbGVG
YWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJmIiwgdXNlclNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIFJlbmRlclZpZXcqIHJvb3QgPSB0b1JlbmRlclZpZXcobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CisKICAgICBmbG9hdCByYXRpbyA9IHByaW50UmVj
dC5oZWlnaHQoKSAvIHByaW50UmVjdC53aWR0aCgpOwogCiAgICAgZmxvYXQgcGFnZVdpZHRoICA9
IChmbG9hdClyb290LT5yaWdodExheW91dE92ZXJmbG93KCk7CiAgICAgZmxvYXQgcGFnZUhlaWdo
dCA9IHBhZ2VXaWR0aCAqIHJhdGlvOwotICAgIG91dFBhZ2VIZWlnaHQgPSBwYWdlSGVpZ2h0OyAg
IC8vIHRoaXMgaXMgdGhlIGhlaWdodCBvZiB0aGUgcGFnZSBhZGp1c3RlZCBieSBtYXJnaW5zCisg
ICAgb3V0UGFnZUhlaWdodCA9IHBhZ2VIZWlnaHQ7IC8vIHRoaXMgaXMgdGhlIGhlaWdodCBvZiB0
aGUgcGFnZSBhZGp1c3RlZCBieSBtYXJnaW5zCiAgICAgcGFnZUhlaWdodCAtPSBoZWFkZXJIZWln
aHQgKyBmb290ZXJIZWlnaHQ7CiAKICAgICBpZiAocGFnZUhlaWdodCA8PSAwKSB7CkBAIC03Nywy
NiArNzcsMjcgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxv
YXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoRmxvYXRTaXplKHBhZ2VXaWR0
aCwgcGFnZUhlaWdodCksIHVzZXJTY2FsZUZhY3Rvcik7CisgICAgY29tcHV0ZVBhZ2VSZWN0c1dp
dGhQYWdlU2l6ZUludGVybmFsKEZsb2F0U2l6ZShwYWdlV2lkdGggLyB1c2VyU2NhbGVGYWN0b3Is
IHBhZ2VIZWlnaHQgLyB1c2VyU2NhbGVGYWN0b3IpLCBmYWxzZSk7CiB9CiAKLXZvaWQgUHJpbnRD
b250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemVJblBpeGVscywgZmxvYXQgdXNlclNjYWxlRmFjdG9yKQordm9pZCBQcmludENvbnRleHQ6
OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUlu
UGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbE11bHRpUGFnZXMpCiB7Ci0gICAgUmVuZGVyVmll
dyogcm9vdCA9IHRvUmVuZGVyVmlldyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJlcigpKTsK
KyAgICBtX3BhZ2VSZWN0cy5jbGVhcigpOwogCi0gICAgaWYgKCFyb290KSB7Ci0gICAgICAgIExP
R19FUlJPUigiZG9jdW1lbnQgdG8gYmUgcHJpbnRlZCBoYXMgbm8gcmVuZGVyZXIiKTsKKyAgICBp
ZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkgfHwgIW1fZnJhbWUtPnZpZXcoKSB8fCAhbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGlm
ICh1c2VyU2NhbGVGYWN0b3IgPD0gMCkgewotICAgICAgICBMT0dfRVJST1IoInVzZXJTY2FsZUZh
Y3RvciBoYXMgYmFkIHZhbHVlICUuMmYiLCB1c2VyU2NhbGVGYWN0b3IpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChwYWdl
U2l6ZUluUGl4ZWxzLCBhbGxvd0hvcml6b250YWxNdWx0aVBhZ2VzKTsKK30KIAotICAgIGZsb2F0
IGN1cnJQYWdlSGVpZ2h0ID0gcGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSAvIHVzZXJTY2FsZUZh
Y3RvcjsKLSAgICBmbG9hdCBkb2NIZWlnaHQgPSByb290LT5sYXllcigpLT5oZWlnaHQoKTsKLSAg
ICBmbG9hdCBjdXJyUGFnZVdpZHRoID0gcGFnZVNpemVJblBpeGVscy53aWR0aCgpIC8gdXNlclNj
YWxlRmFjdG9yOwordm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNp
emVJbnRlcm5hbChjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dI
b3Jpem9udGFsTXVsdGlQYWdlcykKK3sKKyAgICBSZW5kZXJWaWV3KiByb290ID0gdG9SZW5kZXJW
aWV3KG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOworCisgICAgY29uc3QgZmxvYXQg
cGFnZVdpZHRoID0gcGFnZVNpemVJblBpeGVscy53aWR0aCgpOworICAgIGNvbnN0IGZsb2F0IGRv
Y1dpZHRoID0gcm9vdC0+bGF5ZXIoKS0+d2lkdGgoKTsKKyAgICBjb25zdCBmbG9hdCBkb2NIZWln
aHQgPSByb290LT5sYXllcigpLT5oZWlnaHQoKTsKKyAgICBmbG9hdCBjdXJyUGFnZUhlaWdodCA9
IHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0KCk7CiAKICAgICAvLyBhbHdheXMgcmV0dXJuIGF0IGxl
YXN0IG9uZSBwYWdlLCBzaW5jZSBlbXB0eSBmaWxlcyBzaG91bGQgcHJpbnQgYSBibGFuayBwYWdl
CiAgICAgZmxvYXQgcHJpbnRlZFBhZ2VzSGVpZ2h0ID0gMDsKQEAgLTEwNCw4ICsxMDUsMTEgQEAg
dm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxv
YXRTaXplJiBwYWdlU2l6ZUluUGl4ZWwKICAgICAgICAgZmxvYXQgcHJvcG9zZWRCb3R0b20gPSBz
dGQ6Om1pbihkb2NIZWlnaHQsIHByaW50ZWRQYWdlc0hlaWdodCArIHBhZ2VTaXplSW5QaXhlbHMu
aGVpZ2h0KCkpOwogICAgICAgICBtX2ZyYW1lLT52aWV3KCktPmFkanVzdFBhZ2VIZWlnaHQoJnBy
b3Bvc2VkQm90dG9tLCBwcmludGVkUGFnZXNIZWlnaHQsIHByb3Bvc2VkQm90dG9tLCBwcmludGVk
UGFnZXNIZWlnaHQpOwogICAgICAgICBjdXJyUGFnZUhlaWdodCA9IG1heCgxLjBmLCBwcm9wb3Nl
ZEJvdHRvbSAtIHByaW50ZWRQYWdlc0hlaWdodCk7Ci0KLSAgICAgICAgbV9wYWdlUmVjdHMuYXBw
ZW5kKEludFJlY3QoMCwgKGludClwcmludGVkUGFnZXNIZWlnaHQsIChpbnQpY3VyclBhZ2VXaWR0
aCwgKGludCljdXJyUGFnZUhlaWdodCkpOworICAgICAgICBpZiAoYWxsb3dIb3Jpem9udGFsTXVs
dGlQYWdlcykgeworICAgICAgICAgICAgZm9yIChmbG9hdCBjdXJXaWR0aCA9IDA7IGN1cldpZHRo
IDwgZG9jV2lkdGg7IGN1cldpZHRoICs9IHBhZ2VXaWR0aCkKKyAgICAgICAgICAgICAgICBtX3Bh
Z2VSZWN0cy5hcHBlbmQoSW50UmVjdChjdXJXaWR0aCwgKGludClwcmludGVkUGFnZXNIZWlnaHQs
IChpbnQpcGFnZVdpZHRoLCAoaW50KWN1cnJQYWdlSGVpZ2h0KSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9wYWdlUmVjdHMuYXBwZW5kKEludFJlY3QoMCwgKGludClwcmludGVkUGFn
ZXNIZWlnaHQsIChpbnQpcGFnZVdpZHRoLCAoaW50KWN1cnJQYWdlSGVpZ2h0KSk7CiAgICAgICAg
IHByaW50ZWRQYWdlc0hlaWdodCArPSBjdXJyUGFnZUhlaWdodDsKICAgICB9IHdoaWxlIChwcmlu
dGVkUGFnZXNIZWlnaHQgPCBkb2NIZWlnaHQpOwogfQpAQCAtMTc1LDcgKzE3OSw3IEBAIGludCBQ
cmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IEZsb2F0U2l6ZSYgcGFnZVNpCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KEZsb2F0UG9pbnQoMCwg
MCksIHBhZ2VTaXplSW5QaXhlbHMpOwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJh
bWUpOwogICAgIHByaW50Q29udGV4dC5iZWdpbihwYWdlUmVjdC53aWR0aCgpKTsKLSAgICBwcmlu
dENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShwYWdlU2l6ZUluUGl4ZWxzLCAx
KTsKKyAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShwYWdlU2l6
ZUluUGl4ZWxzLCBmYWxzZSk7CiAKICAgICBpbnQgdG9wID0gYm94LT5vZmZzZXRUb3AoKTsKICAg
ICBpbnQgbGVmdCA9IGJveC0+b2Zmc2V0TGVmdCgpOwpAQCAtMTk2LDcgKzIwMCw3IEBAIGludCBQ
cmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBGbG9hdFNpemUm
IHBhZ2VTaXplSW5QaXhlbHMpCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KEZsb2F0UG9pbnQoMCwg
MCksIHBhZ2VTaXplSW5QaXhlbHMpOwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJh
bWUpOwogICAgIHByaW50Q29udGV4dC5iZWdpbihwYWdlUmVjdC53aWR0aCgpKTsKLSAgICBwcmlu
dENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShwYWdlU2l6ZUluUGl4ZWxzLCAx
KTsKKyAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShwYWdlU2l6
ZUluUGl4ZWxzLCBmYWxzZSk7CiAgICAgcHJpbnRDb250ZXh0LmVuZCgpOwogICAgIHJldHVybiBw
cmludENvbnRleHQucGFnZUNvdW50KCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJp
bnRDb250ZXh0LmggYi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggZWMxNWI4NC4u
OGExYTc3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBiL1dl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VS
ZWN0czsgfQogCiAgICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgcHJp
bnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNl
clNjYWxlRmFjdG9yLCBmbG9hdCYgb3V0UGFnZUhlaWdodCk7CisgICAgdm9pZCBjb21wdXRlUGFn
ZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9v
bCBhbGxvd0hvcml6b250YWxNdWx0aVBhZ2VzKTsKIAogICAgIC8vIFRPRE86IGVsaW1pbmF0ZSB3
aWR0aCBwYXJhbQogICAgIHZvaWQgYmVnaW4oZmxvYXQgd2lkdGgpOwpAQCAtNTYsMTAgKzU3LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW50IG51bWJlck9mUGFnZXMoRnJhbWUqLCBjb25zdCBG
bG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBjb21w
dXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVs
cywgZmxvYXQgdXNlclNjYWxlRmFjdG9yKTsKLQogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIFZl
Y3RvcjxJbnRSZWN0PiBtX3BhZ2VSZWN0czsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbXB1dGVQ
YWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5Q
aXhlbHMsIGJvb2wgYWxsb3dIb3Jpem9udGFsTXVsdGlQYWdlcyk7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGQx
MGUwODMuLjVlYWI1M2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMtMTYgIEhheWF0byBJ
dG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGNvbXB1dGVQYWdlUmVjdHMgc28gdGhhdCBNYWMg
Y2FuIG1ha2UgdXNlIG9mIGl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzYxNTkKKworICAgICAgICBSZWZhY3RvcmluZyBvbmx5LCBzbyBubyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFdpZHRoU2NhbGVGYWN0b3I6cHJpbnRIZWln
aHQ6XSk6CisKIDIwMTAtMDMtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggZjI5NGYwNS4uMzY2MWM2MCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzQsNiAr
NzQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyUGFydC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJW
aWV3Lmg+CkBAIC01ODIsMjIgKzU4MywxOSBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2Ug
KmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoIWRvY3VtZW50Vmll
dykKICAgICAgICAgcmV0dXJuIHBhZ2VzOwogCi0gICAgZmxvYXQgY3VyclBhZ2VIZWlnaHQgPSBw
cmludEhlaWdodDsKLSAgICBmbG9hdCBkb2NIZWlnaHQgPSByb290LT5sYXllcigpLT5oZWlnaHQo
KTsKICAgICBmbG9hdCBkb2NXaWR0aCA9IHJvb3QtPmxheWVyKCktPndpZHRoKCk7Ci0gICAgZmxv
YXQgcHJpbnRXaWR0aCA9IGRvY1dpZHRoL3ByaW50V2lkdGhTY2FsZUZhY3RvcjsKLSAgICAKLSAg
ICAvLyBXZSBuZWVkIHRvIGdpdmUgdGhlIHBhcnQgdGhlIG9wcG9ydHVuaXR5IHRvIGFkanVzdCB0
aGUgcGFnZSBoZWlnaHQgYXQgZWFjaCBzdGVwLgotICAgIGZvciAoZmxvYXQgaSA9IDA7IGkgPCBk
b2NIZWlnaHQ7IGkgKz0gY3VyclBhZ2VIZWlnaHQpIHsKLSAgICAgICAgZmxvYXQgcHJvcG9zZWRC
b3R0b20gPSBtaW4oZG9jSGVpZ2h0LCBpICsgcHJpbnRIZWlnaHQpOwotICAgICAgICB2aWV3LT5h
ZGp1c3RQYWdlSGVpZ2h0KCZwcm9wb3NlZEJvdHRvbSwgaSwgcHJvcG9zZWRCb3R0b20sIGkpOwot
ICAgICAgICBjdXJyUGFnZUhlaWdodCA9IG1heCgxLjBmLCBwcm9wb3NlZEJvdHRvbSAtIGkpOwot
ICAgICAgICBmb3IgKGZsb2F0IGogPSAwOyBqIDwgZG9jV2lkdGg7IGogKz0gcHJpbnRXaWR0aCkg
ewotICAgICAgICAgICAgTlNWYWx1ZSogdmFsID0gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDogTlNN
YWtlUmVjdChqLCBpLCBwcmludFdpZHRoLCBjdXJyUGFnZUhlaWdodCldOwotICAgICAgICAgICAg
W3BhZ2VzIGFkZE9iamVjdDogdmFsXTsKLSAgICAgICAgfQorICAgIGZsb2F0IHByaW50V2lkdGgg
PSBkb2NXaWR0aCAvIHByaW50V2lkdGhTY2FsZUZhY3RvcjsKKworICAgIFByaW50Q29udGV4dCBw
cmludENvbnRleHQoX3ByaXZhdGUtPmNvcmVGcmFtZSk7CisgICAgcHJpbnRDb250ZXh0LmNvbXB1
dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoRmxvYXRTaXplKHByaW50V2lkdGgsIHByaW50SGVpZ2h0
KSwgdHJ1ZSk7CisKKyAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cyA9IHByaW50
Q29udGV4dC5wYWdlUmVjdHMoKTsKKyAgICBjb25zdCBzaXplX3QgcGFnZUNvdW50ID0gcGFnZVJl
Y3RzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBwYWdlTnVtYmVyID0gMDsgcGFnZU51bWJlciA8
IHBhZ2VDb3VudDsgKytwYWdlTnVtYmVyKSB7CisgICAgICBjb25zdCBJbnRSZWN0JiBwYWdlUmVj
dCA9IHBhZ2VSZWN0c1twYWdlTnVtYmVyXTsKKyAgICAgIE5TVmFsdWUqIHZhbCA9IFtOU1ZhbHVl
IHZhbHVlV2l0aFJlY3Q6IE5TTWFrZVJlY3QocGFnZVJlY3QueCgpLCBwYWdlUmVjdC55KCksIHBh
Z2VSZWN0LndpZHRoKCksIHBhZ2VSZWN0LmhlaWdodCgpKV07CisgICAgICBbcGFnZXMgYWRkT2Jq
ZWN0OiB2YWxdOwogICAgIH0KLSAgICAKICAgICByZXR1cm4gcGFnZXM7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50883</attachid>
            <date>2010-03-17 02:46:28 -0700</date>
            <delta_ts>2010-03-24 13:38:12 -0700</delta_ts>
            <desc>refactor-computePageRects</desc>
            <filename>bug-36159-20100317184626.patch</filename>
            <type>text/plain</type>
            <size>9949</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDc5Y2MzNC4uNmIwMTc5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0xNiAgSGF5YXRvIEl0byAg
PGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChOZWVk
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29tcHV0ZVBhZ2VSZWN0cyBzbyB0aGF0IE1hYyBjYW4g
bWFrZSB1c2Ugb2YgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjE1OQorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIHNvIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogcGFnZS9QcmludENv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dp
dGhQYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRl
eHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4
dDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuaDoKKwogMjAx
MC0wMy0xNiAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAppbmRleCA5YmFmYWQ3Li40OWMzNTQw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwCkBAIC0yNTAsNiArMjUwLDkgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJh
c2U5c2V0Q2xpZW50RVBOU18xOEljb25EYXRhYmFzZUNsaWVudEUKIF9fWk43V2ViQ29yZTEyUGx1
Z2luV2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTJQ
cmludENvbnRleHQxM251bWJlck9mUGFnZXNFUE5TXzVGcmFtZUVSS05TXzlGbG9hdFNpemVFCiBf
X1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJlckZvckVsZW1lbnRFUE5TXzdFbGVt
ZW50RVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRl
UGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfOUZsb2F0U2l6ZUViCitfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dEMxRVBOU181RnJhbWVFCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYK
IF9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTZyZXBhaW50UmVjdGFuZ2xlRVJLTlNfN0ludFJl
Y3RFYgogX19aTjdXZWJDb3JlMTJSZW5kZXJXaWRnZXQxOXNob3dTdWJzdGl0dXRlSW1hZ2VFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfNUltYWdlRUVFCiBfX1pON1dlYkNvcmUxMlNjaGVkdWxlUGFpckMx
RVA5TlNSdW5Mb29wUEsxMF9fQ0ZTdHJpbmcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggYjY4MDZl
Yi4uMGQ5YzQ1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTU4LDE4ICs1OCwxOCBAQCB2b2lk
IFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBGbG9hdFJlY3QmIHByaW50UmVj
dCwgZmxvYXQgaGVhZGVySGVpZwogICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSB8fCAhbV9m
cmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZW5kZXJWaWV3KiByb290ID0gdG9SZW5kZXJWaWV3KG1fZnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOwotCi0gICAgaWYgKCFyb290KSB7Ci0gICAgICAgIExP
R19FUlJPUigiZG9jdW1lbnQgdG8gYmUgcHJpbnRlZCBoYXMgbm8gcmVuZGVyZXIiKTsKKyAgICBp
ZiAodXNlclNjYWxlRmFjdG9yIDw9IDApIHsKKyAgICAgICAgTE9HX0VSUk9SKCJ1c2VyU2NhbGVG
YWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJmIiwgdXNlclNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIFJlbmRlclZpZXcqIHJvb3QgPSB0b1JlbmRlclZpZXcobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CisKICAgICBmbG9hdCByYXRpbyA9IHByaW50UmVj
dC5oZWlnaHQoKSAvIHByaW50UmVjdC53aWR0aCgpOwogCiAgICAgZmxvYXQgcGFnZVdpZHRoICA9
IChmbG9hdClyb290LT5yaWdodExheW91dE92ZXJmbG93KCk7CiAgICAgZmxvYXQgcGFnZUhlaWdo
dCA9IHBhZ2VXaWR0aCAqIHJhdGlvOwotICAgIG91dFBhZ2VIZWlnaHQgPSBwYWdlSGVpZ2h0OyAg
IC8vIHRoaXMgaXMgdGhlIGhlaWdodCBvZiB0aGUgcGFnZSBhZGp1c3RlZCBieSBtYXJnaW5zCisg
ICAgb3V0UGFnZUhlaWdodCA9IHBhZ2VIZWlnaHQ7IC8vIHRoaXMgaXMgdGhlIGhlaWdodCBvZiB0
aGUgcGFnZSBhZGp1c3RlZCBieSBtYXJnaW5zCiAgICAgcGFnZUhlaWdodCAtPSBoZWFkZXJIZWln
aHQgKyBmb290ZXJIZWlnaHQ7CiAKICAgICBpZiAocGFnZUhlaWdodCA8PSAwKSB7CkBAIC03Nywy
NiArNzcsMjUgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxv
YXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoRmxvYXRTaXplKHBhZ2VXaWR0
aCwgcGFnZUhlaWdodCksIHVzZXJTY2FsZUZhY3Rvcik7CisgICAgY29tcHV0ZVBhZ2VSZWN0c1dp
dGhQYWdlU2l6ZUludGVybmFsKEZsb2F0U2l6ZShwYWdlV2lkdGggLyB1c2VyU2NhbGVGYWN0b3Is
IHBhZ2VIZWlnaHQgLyB1c2VyU2NhbGVGYWN0b3IpLCBmYWxzZSk7CiB9CiAKLXZvaWQgUHJpbnRD
b250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemVJblBpeGVscywgZmxvYXQgdXNlclNjYWxlRmFjdG9yKQordm9pZCBQcmludENvbnRleHQ6
OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUlu
UGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbE11bHRpUGFnZXMpCiB7Ci0gICAgUmVuZGVyVmll
dyogcm9vdCA9IHRvUmVuZGVyVmlldyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJlcigpKTsK
LQotICAgIGlmICghcm9vdCkgewotICAgICAgICBMT0dfRVJST1IoImRvY3VtZW50IHRvIGJlIHBy
aW50ZWQgaGFzIG5vIHJlbmRlcmVyIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9w
YWdlUmVjdHMuY2xlYXIoKTsKKyAgICBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJu
YWwocGFnZVNpemVJblBpeGVscywgYWxsb3dIb3Jpem9udGFsTXVsdGlQYWdlcyk7Cit9CiAKLSAg
ICBpZiAodXNlclNjYWxlRmFjdG9yIDw9IDApIHsKLSAgICAgICAgTE9HX0VSUk9SKCJ1c2VyU2Nh
bGVGYWN0b3IgaGFzIGJhZCB2YWx1ZSAlLjJmIiwgdXNlclNjYWxlRmFjdG9yKTsKK3ZvaWQgUHJp
bnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWwoY29uc3QgRmxv
YXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbE11bHRpUGFnZXMp
Cit7CisgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT52aWV3KCkgfHwg
IW1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyhtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJlcigpKTsKIAotICAgIGZsb2F0IGN1cnJQYWdlSGVpZ2h0ID0gcGFnZVNpemVJblBp
eGVscy5oZWlnaHQoKSAvIHVzZXJTY2FsZUZhY3RvcjsKLSAgICBmbG9hdCBkb2NIZWlnaHQgPSBy
b290LT5sYXllcigpLT5oZWlnaHQoKTsKLSAgICBmbG9hdCBjdXJyUGFnZVdpZHRoID0gcGFnZVNp
emVJblBpeGVscy53aWR0aCgpIC8gdXNlclNjYWxlRmFjdG9yOworICAgIGNvbnN0IGZsb2F0IHBh
Z2VXaWR0aCA9IHBhZ2VTaXplSW5QaXhlbHMud2lkdGgoKTsKKyAgICBjb25zdCBmbG9hdCBkb2NX
aWR0aCA9IHJvb3QtPmxheWVyKCktPndpZHRoKCk7CisgICAgY29uc3QgZmxvYXQgZG9jSGVpZ2h0
ID0gcm9vdC0+bGF5ZXIoKS0+aGVpZ2h0KCk7CisgICAgZmxvYXQgY3VyclBhZ2VIZWlnaHQgPSBw
YWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpOwogCiAgICAgLy8gYWx3YXlzIHJldHVybiBhdCBsZWFz
dCBvbmUgcGFnZSwgc2luY2UgZW1wdHkgZmlsZXMgc2hvdWxkIHByaW50IGEgYmxhbmsgcGFnZQog
ICAgIGZsb2F0IHByaW50ZWRQYWdlc0hlaWdodCA9IDA7CkBAIC0xMDQsOCArMTAzLDExIEBAIHZv
aWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEZsb2F0
U2l6ZSYgcGFnZVNpemVJblBpeGVsCiAgICAgICAgIGZsb2F0IHByb3Bvc2VkQm90dG9tID0gc3Rk
OjptaW4oZG9jSGVpZ2h0LCBwcmludGVkUGFnZXNIZWlnaHQgKyBwYWdlU2l6ZUluUGl4ZWxzLmhl
aWdodCgpKTsKICAgICAgICAgbV9mcmFtZS0+dmlldygpLT5hZGp1c3RQYWdlSGVpZ2h0KCZwcm9w
b3NlZEJvdHRvbSwgcHJpbnRlZFBhZ2VzSGVpZ2h0LCBwcm9wb3NlZEJvdHRvbSwgcHJpbnRlZFBh
Z2VzSGVpZ2h0KTsKICAgICAgICAgY3VyclBhZ2VIZWlnaHQgPSBtYXgoMS4wZiwgcHJvcG9zZWRC
b3R0b20gLSBwcmludGVkUGFnZXNIZWlnaHQpOwotCi0gICAgICAgIG1fcGFnZVJlY3RzLmFwcGVu
ZChJbnRSZWN0KDAsIChpbnQpcHJpbnRlZFBhZ2VzSGVpZ2h0LCAoaW50KWN1cnJQYWdlV2lkdGgs
IChpbnQpY3VyclBhZ2VIZWlnaHQpKTsKKyAgICAgICAgaWYgKGFsbG93SG9yaXpvbnRhbE11bHRp
UGFnZXMpIHsKKyAgICAgICAgICAgIGZvciAoZmxvYXQgY3VyV2lkdGggPSAwOyBjdXJXaWR0aCA8
IGRvY1dpZHRoOyBjdXJXaWR0aCArPSBwYWdlV2lkdGgpCisgICAgICAgICAgICAgICAgbV9wYWdl
UmVjdHMuYXBwZW5kKEludFJlY3QoY3VyV2lkdGgsIChpbnQpcHJpbnRlZFBhZ2VzSGVpZ2h0LCAo
aW50KXBhZ2VXaWR0aCwgKGludCljdXJyUGFnZUhlaWdodCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIG1fcGFnZVJlY3RzLmFwcGVuZChJbnRSZWN0KDAsIChpbnQpcHJpbnRlZFBhZ2Vz
SGVpZ2h0LCAoaW50KXBhZ2VXaWR0aCwgKGludCljdXJyUGFnZUhlaWdodCkpOwogICAgICAgICBw
cmludGVkUGFnZXNIZWlnaHQgKz0gY3VyclBhZ2VIZWlnaHQ7CiAgICAgfSB3aGlsZSAocHJpbnRl
ZFBhZ2VzSGVpZ2h0IDwgZG9jSGVpZ2h0KTsKIH0KQEAgLTE3NSw3ICsxNzcsNyBAQCBpbnQgUHJp
bnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBG
bG9hdFNpemUmIHBhZ2VTaQogICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9hdFBvaW50KDAsIDAp
LCBwYWdlU2l6ZUluUGl4ZWxzKTsKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1l
KTsKICAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSk7Ci0gICAgcHJpbnRD
b250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUocGFnZVNpemVJblBpeGVscywgMSk7
CisgICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUocGFnZVNpemVJ
blBpeGVscywgZmFsc2UpOwogCiAgICAgaW50IHRvcCA9IGJveC0+b2Zmc2V0VG9wKCk7CiAgICAg
aW50IGxlZnQgPSBib3gtPm9mZnNldExlZnQoKTsKQEAgLTE5Niw3ICsxOTgsNyBAQCBpbnQgUHJp
bnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKEZyYW1lKiBmcmFtZSwgY29uc3QgRmxvYXRTaXplJiBw
YWdlU2l6ZUluUGl4ZWxzKQogICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9hdFBvaW50KDAsIDAp
LCBwYWdlU2l6ZUluUGl4ZWxzKTsKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1l
KTsKICAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSk7Ci0gICAgcHJpbnRD
b250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUocGFnZVNpemVJblBpeGVscywgMSk7
CisgICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUocGFnZVNpemVJ
blBpeGVscywgZmFsc2UpOwogICAgIHByaW50Q29udGV4dC5lbmQoKTsKICAgICByZXR1cm4gcHJp
bnRDb250ZXh0LnBhZ2VDb3VudCgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5oIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCmluZGV4IGVjMTViODQuLjhh
MWE3N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAorKysgYi9XZWJD
b3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlUmVj
dHM7IH0KIAogICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBGbG9hdFJlY3QmIHByaW50
UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWlnaHQsIGZsb2F0IHVzZXJT
Y2FsZUZhY3RvciwgZmxvYXQmIG91dFBhZ2VIZWlnaHQpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VS
ZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wg
YWxsb3dIb3Jpem9udGFsTXVsdGlQYWdlcyk7CiAKICAgICAvLyBUT0RPOiBlbGltaW5hdGUgd2lk
dGggcGFyYW0KICAgICB2b2lkIGJlZ2luKGZsb2F0IHdpZHRoKTsKQEAgLTU2LDEwICs1NywxMSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzKEZyYW1lKiwgY29uc3QgRmxv
YXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgY29tcHV0
ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMs
IGZsb2F0IHVzZXJTY2FsZUZhY3Rvcik7Ci0KICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBWZWN0
b3I8SW50UmVjdD4gbV9wYWdlUmVjdHM7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb21wdXRlUGFn
ZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWwoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4
ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbE11bHRpUGFnZXMpOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkMTBl
MDgzLi41ZWFiNTNiIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAzLTE2ICBIYXlhdG8gSXRv
ICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWZhY3RvciBjb21wdXRlUGFnZVJlY3RzIHNvIHRoYXQgTWFjIGNh
biBtYWtlIHVzZSBvZiBpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2MTU5CisKKyAgICAgICAgUmVmYWN0b3Jpbmcgb25seSwgc28gbm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWUgX2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRXaWR0aFNjYWxlRmFjdG9yOnByaW50SGVpZ2h0
Ol0pOgorCiAyMDEwLTAzLTE2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IGYyOTRmMDUuLjZiZWI0NmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTc0LDYgKzc0
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1JlbmRlclBhcnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmll
dy5oPgpAQCAtNTgyLDIyICs1ODMsMTYgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpk
YXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKCFkb2N1bWVudFZpZXcp
CiAgICAgICAgIHJldHVybiBwYWdlczsKIAotICAgIGZsb2F0IGN1cnJQYWdlSGVpZ2h0ID0gcHJp
bnRIZWlnaHQ7Ci0gICAgZmxvYXQgZG9jSGVpZ2h0ID0gcm9vdC0+bGF5ZXIoKS0+aGVpZ2h0KCk7
CiAgICAgZmxvYXQgZG9jV2lkdGggPSByb290LT5sYXllcigpLT53aWR0aCgpOwotICAgIGZsb2F0
IHByaW50V2lkdGggPSBkb2NXaWR0aC9wcmludFdpZHRoU2NhbGVGYWN0b3I7Ci0gICAgCi0gICAg
Ly8gV2UgbmVlZCB0byBnaXZlIHRoZSBwYXJ0IHRoZSBvcHBvcnR1bml0eSB0byBhZGp1c3QgdGhl
IHBhZ2UgaGVpZ2h0IGF0IGVhY2ggc3RlcC4KLSAgICBmb3IgKGZsb2F0IGkgPSAwOyBpIDwgZG9j
SGVpZ2h0OyBpICs9IGN1cnJQYWdlSGVpZ2h0KSB7Ci0gICAgICAgIGZsb2F0IHByb3Bvc2VkQm90
dG9tID0gbWluKGRvY0hlaWdodCwgaSArIHByaW50SGVpZ2h0KTsKLSAgICAgICAgdmlldy0+YWRq
dXN0UGFnZUhlaWdodCgmcHJvcG9zZWRCb3R0b20sIGksIHByb3Bvc2VkQm90dG9tLCBpKTsKLSAg
ICAgICAgY3VyclBhZ2VIZWlnaHQgPSBtYXgoMS4wZiwgcHJvcG9zZWRCb3R0b20gLSBpKTsKLSAg
ICAgICAgZm9yIChmbG9hdCBqID0gMDsgaiA8IGRvY1dpZHRoOyBqICs9IHByaW50V2lkdGgpIHsK
LSAgICAgICAgICAgIE5TVmFsdWUqIHZhbCA9IFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6IE5TTWFr
ZVJlY3QoaiwgaSwgcHJpbnRXaWR0aCwgY3VyclBhZ2VIZWlnaHQpXTsKLSAgICAgICAgICAgIFtw
YWdlcyBhZGRPYmplY3Q6IHZhbF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCisgICAgZmxvYXQg
cHJpbnRXaWR0aCA9IGRvY1dpZHRoIC8gcHJpbnRXaWR0aFNjYWxlRmFjdG9yOworCisgICAgUHJp
bnRDb250ZXh0IHByaW50Q29udGV4dChfcHJpdmF0ZS0+Y29yZUZyYW1lKTsKKyAgICBwcmludENv
bnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShGbG9hdFNpemUocHJpbnRXaWR0aCwg
cHJpbnRIZWlnaHQpLCB0cnVlKTsKKworICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJl
Y3RzID0gcHJpbnRDb250ZXh0LnBhZ2VSZWN0cygpOworICAgIGNvbnN0IHNpemVfdCBwYWdlQ291
bnQgPSBwYWdlUmVjdHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IHBhZ2VOdW1iZXIgPSAwOyBw
YWdlTnVtYmVyIDwgcGFnZUNvdW50OyArK3BhZ2VOdW1iZXIpCisgICAgICAgIFtwYWdlcyBhZGRP
YmplY3Q6IFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6IE5TUmVjdChwYWdlUmVjdHNbcGFnZU51bWJl
cl0pXV07CiAgICAgcmV0dXJuIHBhZ2VzOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>