<?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>83726</bug_id>
          
          <creation_ts>2012-04-11 16:00:41 -0700</creation_ts>
          <short_desc>Prepare functions in LengthFunctions.h for LayoutUnits</short_desc>
          <delta_ts>2012-04-12 21:20:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600663</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-11 16:00:41 -0700</bug_when>
    <thetext>This also entails some static_casts in the few integer-based rendering types. Details in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600690</commentid>
    <comment_count>1</comment_count>
      <attachid>136781</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-11 16:24:43 -0700</bug_when>
    <thetext>Created attachment 136781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600695</commentid>
    <comment_count>2</comment_count>
      <attachid>136781</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-11 16:28:03 -0700</bug_when>
    <thetext>Comment on attachment 136781
Patch

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

&gt; Source/WebCore/rendering/RenderFrameSet.cpp:280
&gt;                  remainingLen -= gridLayout[i];

is this a length?  Should this use .intValue() instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600701</commentid>
    <comment_count>3</comment_count>
      <attachid>136781</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-11 16:30:22 -0700</bug_when>
    <thetext>Comment on attachment 136781
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderFrameSet.cpp:280
&gt;&gt;                  remainingLen -= gridLayout[i];
&gt; 
&gt; is this a length?  Should this use .intValue() instead?

You are so right :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600741</commentid>
    <comment_count>4</comment_count>
      <attachid>136793</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-11 17:16:23 -0700</bug_when>
    <thetext>Created attachment 136793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601321</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-12 10:19:04 -0700</bug_when>
    <thetext>Ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601331</commentid>
    <comment_count>6</comment_count>
      <attachid>136793</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-12 10:33:05 -0700</bug_when>
    <thetext>Comment on attachment 136793
Patch

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

The change is fine, one question.

&gt; Source/WebCore/css/LengthFunctions.h:36
&gt; +LayoutUnit minimumValueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0, bool roundPercentages = false);
&gt; +LayoutUnit valueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0, bool roundPercentages = false);
&gt; +float floatValueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0);

Why don&apos;t you also update the implementation of those functions as part of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601350</commentid>
    <comment_count>7</comment_count>
      <attachid>136932</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-12 10:52:20 -0700</bug_when>
    <thetext>Created attachment 136932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601357</commentid>
    <comment_count>8</comment_count>
      <attachid>136932</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-12 11:01:09 -0700</bug_when>
    <thetext>Comment on attachment 136932
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1855
&gt; +    marginTop = style-&gt;marginTop().isAuto() ? marginTop : static_cast&lt;int&gt;(valueForLength(style-&gt;marginTop(), width, view));
&gt; +    marginRight = style-&gt;marginRight().isAuto() ? marginRight : static_cast&lt;int&gt;(valueForLength(style-&gt;marginRight(), width, view));
&gt; +    marginBottom = style-&gt;marginBottom().isAuto() ? marginBottom : static_cast&lt;int&gt;(valueForLength(style-&gt;marginBottom(), width, view));
&gt; +    marginLeft = style-&gt;marginLeft().isAuto() ? marginLeft : static_cast&lt;int&gt;(valueForLength(style-&gt;marginLeft(), width, view));

Seems like you want intValidForLength now?  Which at least does this wrapping/casting for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601360</commentid>
    <comment_count>9</comment_count>
      <attachid>136932</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-12 11:03:57 -0700</bug_when>
    <thetext>Comment on attachment 136932
Patch

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

&gt; Source/WebCore/css/LengthFunctions.cpp:47
&gt;          return 0;

There should be no 0 but ZERO_LAYOUT_UNIT for all the functions touched and that now returns a LayoutUnit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601364</commentid>
    <comment_count>10</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-12 11:07:08 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 136932 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136932&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1855
&gt; &gt; +    marginTop = style-&gt;marginTop().isAuto() ? marginTop : static_cast&lt;int&gt;(valueForLength(style-&gt;marginTop(), width, view));
&gt; &gt; +    marginRight = style-&gt;marginRight().isAuto() ? marginRight : static_cast&lt;int&gt;(valueForLength(style-&gt;marginRight(), width, view));
&gt; &gt; +    marginBottom = style-&gt;marginBottom().isAuto() ? marginBottom : static_cast&lt;int&gt;(valueForLength(style-&gt;marginBottom(), width, view));
&gt; &gt; +    marginLeft = style-&gt;marginLeft().isAuto() ? marginLeft : static_cast&lt;int&gt;(valueForLength(style-&gt;marginLeft(), width, view));
&gt; 
&gt; Seems like you want intValidForLength now?  Which at least does this wrapping/casting for you?

I like that suggestion. I&apos;ll get on that momentarily</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601394</commentid>
    <comment_count>11</comment_count>
      <attachid>136944</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-12 11:42:12 -0700</bug_when>
    <thetext>Created attachment 136944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601499</commentid>
    <comment_count>12</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-12 13:47:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=136944) [details]
&gt; Patch

I think I finally got this covered :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601795</commentid>
    <comment_count>13</comment_count>
      <attachid>136944</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-12 20:33:47 -0700</bug_when>
    <thetext>Comment on attachment 136944
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601808</commentid>
    <comment_count>14</comment_count>
      <attachid>136944</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 21:19:58 -0700</bug_when>
    <thetext>Comment on attachment 136944
Patch

Clearing flags on attachment: 136944

Committed r114079: &lt;http://trac.webkit.org/changeset/114079&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601809</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 21:20:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136781</attachid>
            <date>2012-04-11 16:24:43 -0700</date>
            <delta_ts>2012-04-11 17:16:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83726-20120411162442.patch</filename>
            <type>text/plain</type>
            <size>8068</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA0LTExICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcmVwYXJlIGZ1bmN0aW9u
cyBpbiBMZW5ndGhGdW5jdGlvbnMuaCBmb3IgTGF5b3V0VW5pdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyaW5nIHRoZSBmdW5jdGlvbnMgdGhh
dCBsaXZlIGluIExlbmd0aEZ1bmN0aW9ucyBmb3Igc3ViLXBpeGVsIGxheW91dCwgd2hpY2ggZW50
YWlscworICAgICAgICB1c2luZyBhbmQgcmV0dXJuaW5nIExheW91dFVuaXRzIGluc3RlYWQgb2Yg
aW50ZWdlcnMuIEFzaWRlIGZyb20gY2hhbmdpbmcgdGhlIGRhdGEgdHlwZXMKKyAgICAgICAgb2Yg
dGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCB0aGlzIHJlcXVpcmVzIGEgbnVtYmVyIG9mIGV4cGxp
Y2l0IHN0YXRpY19jYXN0cyB0aGF0IHRydW5jYXRlCisgICAgICAgIGNzcyB2YWx1ZXMgZm9yIGEg
ZmV3IHJlbmRlcmluZyBjbGFzc2VzIHRoYXQgYXJlIGxhaWQgb3V0IHVzaW5nIGludGVnZXJzIGlu
c3RlYWQgb2YKKyAgICAgICAgTGF5b3V0VW5pdHMuIFNlZSBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy93aWtpL0xheW91dFVuaXQgZm9yIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlKTogVXNpbmcgTGF5b3V0VW5pdHMgZm9yIHN1Yi1waXhlbCBwcmVj
aXNpb24uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6IERvY3VtZW50IHNpemVzIGFyZSBp
bnRlZ3JhbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOiBUaGUgZnJhbWUgdHJlZSBj
b250aW51ZXMgdG8gYmUgaW50ZWdyYWwuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZCk6IFJl
bmRlck1hcnF1ZWUgc2Nyb2xsaW5nIHVzZXMgaW50ZWdyYWwgdmFsdWVzLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6IFRhYmxlIGxheW91dCBpcyBpbnRl
Z3JhbC4KKwogMjAxMi0wNC0xMSAgQWxleCBOaWNvbGFvdSAgPGFuaWNvbGFvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIFdoZW4gcmVuZGVyaW5nIGdvZXMgaWRsZSwgZG8gbm90
IGNvdW50IHRoYXQgdGltZSBhZ2FpbnN0IGZyYW1lIHJhdGUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
TGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDExMzg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTQgKzI0LDE2IEBACiAj
aWZuZGVmIExlbmd0aEZ1bmN0aW9uc19oCiAjZGVmaW5lIExlbmd0aEZ1bmN0aW9uc19oCiAKKyNp
bmNsdWRlICJMYXlvdXRUeXBlcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlclZpZXc7CiBzdHJ1Y3QgTGVuZ3RoOwogCi1pbnQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYsIGludCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzID0gZmFsc2UpOwotaW50IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYs
IGludCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2Vz
ID0gZmFsc2UpOwotZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBpbnQg
bWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDApOworTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZp
ZXcqID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworTGF5b3V0VW5pdCB2YWx1
ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVy
VmlldyogPSAwLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9hdFZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5k
ZXJWaWV3KiA9IDApOwogZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBm
bG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTEzODc0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1MSwx
MCArMTg1MSwxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsCiAK
ICAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBjYWxjdWxhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUg
d2lkdGggZXZlbiBmb3IgbWFyZ2luIHRvcCBhbmQgYm90dG9tLgogICAgIC8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2luLXByb3BlcnRpZXMKLSAgICBtYXJnaW5Ub3Ag
PSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiB2YWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5SaWdodCA9IHN0
eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiB2YWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpOwotICAgIG1hcmdpbkJvdHRvbSA9
IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXcpOwotICAgIG1hcmdpbkxl
ZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKKyAgICBtYXJnaW5Ub3Ag
PSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Ub3AoKSwgd2lkdGgsIHZpZXcpKTsKKyAg
ICBtYXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmln
aHQgOiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5SaWdodCgp
LCB3aWR0aCwgdmlldykpOworICAgIG1hcmdpbkJvdHRvbSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20o
KS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IHN0YXRpY19jYXN0PGludD4odmFsdWVGb3JMZW5n
dGgoc3R5bGUtPm1hcmdpbkJvdHRvbSgpLCB3aWR0aCwgdmlldykpOworICAgIG1hcmdpbkxlZnQg
PSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHN0YXRpY19jYXN0
PGludD4odmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgsIHZpZXcpKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6c2V0SXNWaWV3U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShyZXZp
c2lvbiAxMTM4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNl
dDo6bGF5T3V0QXhpcyhHcmlkQXhpcwogICAgICAgICAvLyBDb3VudCB0aGUgdG90YWwgbGVuZ3Ro
IG9mIGFsbCBvZiB0aGUgZml4ZWQgY29sdW1ucy9yb3dzIC0+IHRvdGFsRml4ZWQKICAgICAgICAg
Ly8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIGZpeGVkIC0+IGNv
dW50Rml4ZWQKICAgICAgICAgaWYgKGdyaWRbaV0uaXNGaXhlZCgpKSB7Ci0gICAgICAgICAgICBn
cmlkTGF5b3V0W2ldID0gbWF4KGdyaWRbaV0udmFsdWUoKSwgMCk7CisgICAgICAgICAgICBncmlk
TGF5b3V0W2ldID0gbWF4PGludD4oZ3JpZFtpXS52YWx1ZSgpLCAwKTsKICAgICAgICAgICAgIHRv
dGFsRml4ZWQgKz0gZ3JpZExheW91dFtpXTsKICAgICAgICAgICAgIGNvdW50Rml4ZWQrKzsKICAg
ICAgICAgfQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4
aXMoR3JpZEF4aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIHBlcmNlbnRhZ2Ugb2YgYWxs
IG9mIHRoZSBwZXJjZW50YWdlIGNvbHVtbnMvcm93cyAtPiB0b3RhbFBlcmNlbnQKICAgICAgICAg
Ly8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIHBlcmNlbnRhZ2Vz
IC0+IGNvdW50UGVyY2VudAogICAgICAgICBpZiAoZ3JpZFtpXS5pc1BlcmNlbnQoKSkgewotICAg
ICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heCh2YWx1ZUZvckxlbmd0aChncmlkW2ldLCBhdmFp
bGFibGVMZW4pLCAwKTsKKyAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBtYXg8aW50Pih2YWx1
ZUZvckxlbmd0aChncmlkW2ldLCBhdmFpbGFibGVMZW4pLCAwKTsKICAgICAgICAgICAgIHRvdGFs
UGVyY2VudCArPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgY291bnRQZXJjZW50Kys7CiAg
ICAgICAgIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRB
eGlzKEdyaWRBeGlzCiAgICAgICAgIC8vIENvdW50IHRoZSB0b3RhbCByZWxhdGl2ZSBvZiBhbGwg
dGhlIHJlbGF0aXZlIGNvbHVtbnMvcm93cyAtPiB0b3RhbFJlbGF0aXZlCiAgICAgICAgIC8vIENv
dW50IHRoZSBudW1iZXIgb2YgY29sdW1ucy9yb3dzIHdoaWNoIGFyZSByZWxhdGl2ZSAtPiBjb3Vu
dFJlbGF0aXZlCiAgICAgICAgIGlmIChncmlkW2ldLmlzUmVsYXRpdmUoKSkgewotICAgICAgICAg
ICAgdG90YWxSZWxhdGl2ZSArPSBtYXgoZ3JpZFtpXS52YWx1ZSgpLCAxKTsKKyAgICAgICAgICAg
IHRvdGFsUmVsYXRpdmUgKz0gbWF4PGludD4oZ3JpZFtpXS52YWx1ZSgpLCAxKTsKICAgICAgICAg
ICAgIGNvdW50UmVsYXRpdmUrKzsKICAgICAgICAgfSAgICAgICAgICAgIAogICAgIH0KQEAgLTI3
Niw3ICsyNzYsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzCiAK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncmlkTGVuOyArK2kpIHsKICAgICAgICAgICAg
IGlmIChncmlkW2ldLmlzUmVsYXRpdmUoKSkgewotICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRb
aV0gPSAobWF4KGdyaWRbaV0udmFsdWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2ZSkgLyB0b3Rh
bFJlbGF0aXZlOworICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAobWF4PGludD4oZ3Jp
ZFtpXS52YWx1ZSgpLCAxKSAqIHJlbWFpbmluZ1JlbGF0aXZlKSAvIHRvdGFsUmVsYXRpdmU7CiAg
ICAgICAgICAgICAgICAgcmVtYWluaW5nTGVuIC09IGdyaWRMYXlvdXRbaV07CiAgICAgICAgICAg
ICAgICAgbGFzdFJlbGF0aXZlID0gaTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHJldmlzaW9uIDExMzg3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgUmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZChUaW1lcjxS
ZW4KICAgICAgICAgfQogICAgICAgICBib29sIHBvc2l0aXZlID0gcmFuZ2UgPiAwOwogICAgICAg
ICBpbnQgY2xpZW50U2l6ZSA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXItPnJlbmRlckJveCgp
LT5jbGllbnRXaWR0aCgpIDogbV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKTsK
LSAgICAgICAgaW50IGluY3JlbWVudCA9IGFicyh2YWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNsaWVudFNpemUpKTsKKyAgICAg
ICAgaW50IGluY3JlbWVudCA9IGFicyhzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKG1f
bGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVJbmNyZW1lbnQoKSwgY2xpZW50U2l6
ZSkpKTsKICAgICAgICAgaW50IGN1cnJlbnRQb3MgPSAoaXNIb3Jpem9udGFsKCkgPyBtX2xheWVy
LT5zY3JvbGxYT2Zmc2V0KCkgOiBtX2xheWVyLT5zY3JvbGxZT2Zmc2V0KCkpOwogICAgICAgICBu
ZXdQb3MgPSAgY3VycmVudFBvcyArIChhZGRJbmNyZW1lbnQgPyBpbmNyZW1lbnQgOiAtaW5jcmVt
ZW50KTsKICAgICAgICAgaWYgKHBvc2l0aXZlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDExMzg3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzQsNyArMzM0LDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xv
Z2ljYWxIZQogICAgICAgICBMYXlvdXRVbml0IGJhc2VsaW5lRGVzY2VudCA9IDA7CiAKICAgICAg
ICAgLy8gT3VyIGJhc2Ugc2l6ZSBpcyB0aGUgYmlnZ2VzdCBsb2dpY2FsIGhlaWdodCBmcm9tIG91
ciBjZWxscycgc3R5bGVzIChleGNsdWRpbmcgcm93IHNwYW5uaW5nIGNlbGxzKS4KLSAgICAgICAg
bV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3JdICsgbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LCAwLCB2aWV3UmVuZGVyZXIpLCAwKTsKKyAgICAgICAg
bV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3JdICsgc3RhdGljX2Nhc3Q8aW50PihtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQsIDAsIHZpZXdSZW5kZXJl
cikpLCAwKTsKIAogICAgICAgICBSb3cmIHJvdyA9IG1fZ3JpZFtyXS5yb3c7CiAgICAgICAgIHVu
c2lnbmVkIHRvdGFsQ29scyA9IHJvdy5zaXplKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136793</attachid>
            <date>2012-04-11 17:16:23 -0700</date>
            <delta_ts>2012-04-12 10:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83726-20120411171622.patch</filename>
            <type>text/plain</type>
            <size>8015</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzkyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA0LTExICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcmVwYXJlIGZ1bmN0aW9u
cyBpbiBMZW5ndGhGdW5jdGlvbnMuaCBmb3IgTGF5b3V0VW5pdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyaW5nIHRoZSBmdW5jdGlvbnMgdGhh
dCBsaXZlIGluIExlbmd0aEZ1bmN0aW9ucyBmb3Igc3ViLXBpeGVsIGxheW91dCwgd2hpY2ggZW50
YWlscworICAgICAgICB1c2luZyBhbmQgcmV0dXJuaW5nIExheW91dFVuaXRzIGluc3RlYWQgb2Yg
aW50ZWdlcnMuIEFzaWRlIGZyb20gY2hhbmdpbmcgdGhlIGRhdGEgdHlwZXMKKyAgICAgICAgb2Yg
dGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCB0aGlzIHJlcXVpcmVzIGEgbnVtYmVyIG9mIGV4cGxp
Y2l0IHN0YXRpY19jYXN0cyB0aGF0IHRydW5jYXRlCisgICAgICAgIGNzcyB2YWx1ZXMgZm9yIGEg
ZmV3IHJlbmRlcmluZyBjbGFzc2VzIHRoYXQgYXJlIGxhaWQgb3V0IHVzaW5nIGludGVnZXJzIGlu
c3RlYWQgb2YKKyAgICAgICAgTGF5b3V0VW5pdHMuIFNlZSBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy93aWtpL0xheW91dFVuaXQgZm9yIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlKTogVXNpbmcgTGF5b3V0VW5pdHMgZm9yIHN1Yi1waXhlbCBwcmVj
aXNpb24uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6IERvY3VtZW50IHNpemVzIGFyZSBp
bnRlZ3JhbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOiBUaGUgZnJhbWUgdHJlZSBj
b250aW51ZXMgdG8gYmUgaW50ZWdyYWwuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZCk6IFJl
bmRlck1hcnF1ZWUgc2Nyb2xsaW5nIHVzZXMgaW50ZWdyYWwgdmFsdWVzLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6IFRhYmxlIGxheW91dCBpcyBpbnRl
Z3JhbC4KKwogMjAxMi0wNC0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgVHJ5IHRvIGZpeCBidWlsZCB3aXRoIFhTTFQgZGlzYWJsZWQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxMTM5MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE0ICsy
NCwxNiBAQAogI2lmbmRlZiBMZW5ndGhGdW5jdGlvbnNfaAogI2RlZmluZSBMZW5ndGhGdW5jdGlv
bnNfaAogCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJWaWV3Owogc3RydWN0IExlbmd0aDsKIAotaW50IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChjb25zdCBMZW5ndGgmLCBpbnQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAs
IGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKLWludCB2YWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmLCBpbnQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcyA9IGZhbHNlKTsKLWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVu
Z3RoJiwgaW50IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwKTsKK0xheW91dFVuaXQgbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKK0xheW91
dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFs
dWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworZmxv
YXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1W
YWx1ZSwgUmVuZGVyVmlldyogPSAwKTsKIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiwgZmxvYXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDApOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEx
MzkyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4NTEsMTAgKzE4NTEsMTAgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5z
SW5QaXhlbAogCiAgICAgLy8gVGhlIHBlcmNlbnRhZ2UgaXMgY2FsY3VsYXRlZCB3aXRoIHJlc3Bl
Y3QgdG8gdGhlIHdpZHRoIGV2ZW4gZm9yIG1hcmdpbiB0b3AgYW5kIGJvdHRvbS4KICAgICAvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyL2JveC5odG1sI21hcmdpbi1wcm9wZXJ0aWVzCi0gICAg
bWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRvcCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogdmFs
dWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblRvcCgpLCB3aWR0aCwgdmlldyk7Ci0gICAgbWFyZ2lu
UmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogdmFs
dWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblJpZ2h0KCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJn
aW5Cb3R0b20gPSBzdHlsZS0+bWFyZ2luQm90dG9tKCkuaXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20g
OiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luQm90dG9tKCksIHdpZHRoLCB2aWV3KTsKLSAg
ICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQg
OiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CisgICAg
bWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRvcCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2
aWV3KSk7CisgICAgbWFyZ2luUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSA/
IG1hcmdpblJpZ2h0IDogc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFy
Z2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpKTsKKyAgICBtYXJnaW5Cb3R0b20gPSBzdHlsZS0+bWFy
Z2luQm90dG9tKCkuaXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20gOiBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXcpKTsKKyAgICBt
YXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBz
dGF0aWNfY2FzdDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRo
LCB2aWV3KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJjZShib29sIGlzVmll
d1NvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmNwcAkocmV2aXNpb24gMTEzOTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRv
dGFsIGxlbmd0aCBvZiBhbGwgb2YgdGhlIGZpeGVkIGNvbHVtbnMvcm93cyAtPiB0b3RhbEZpeGVk
CiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29sdW1ucy9yb3dzIHdoaWNoIGFyZSBm
aXhlZCAtPiBjb3VudEZpeGVkCiAgICAgICAgIGlmIChncmlkW2ldLmlzRml4ZWQoKSkgewotICAg
ICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heChncmlkW2ldLnZhbHVlKCksIDApOworICAgICAg
ICAgICAgZ3JpZExheW91dFtpXSA9IG1heChncmlkW2ldLmludFZhbHVlKCksIDApOwogICAgICAg
ICAgICAgdG90YWxGaXhlZCArPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgY291bnRGaXhl
ZCsrOwogICAgICAgICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6
bGF5T3V0QXhpcyhHcmlkQXhpcwogICAgICAgICAvLyBDb3VudCB0aGUgdG90YWwgcGVyY2VudGFn
ZSBvZiBhbGwgb2YgdGhlIHBlcmNlbnRhZ2UgY29sdW1ucy9yb3dzIC0+IHRvdGFsUGVyY2VudAog
ICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMvcm93cyB3aGljaCBhcmUgcGVy
Y2VudGFnZXMgLT4gY291bnRQZXJjZW50CiAgICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgp
KSB7Ci0gICAgICAgICAgICBncmlkTGF5b3V0W2ldID0gbWF4KHZhbHVlRm9yTGVuZ3RoKGdyaWRb
aV0sIGF2YWlsYWJsZUxlbiksIDApOworICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heDxp
bnQ+KHZhbHVlRm9yTGVuZ3RoKGdyaWRbaV0sIGF2YWlsYWJsZUxlbiksIDApOwogICAgICAgICAg
ICAgdG90YWxQZXJjZW50ICs9IGdyaWRMYXlvdXRbaV07CiAgICAgICAgICAgICBjb3VudFBlcmNl
bnQrKzsKICAgICAgICAgfQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6
OmxheU91dEF4aXMoR3JpZEF4aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIHJlbGF0aXZl
IG9mIGFsbCB0aGUgcmVsYXRpdmUgY29sdW1ucy9yb3dzIC0+IHRvdGFsUmVsYXRpdmUKICAgICAg
ICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIHJlbGF0aXZl
IC0+IGNvdW50UmVsYXRpdmUKICAgICAgICAgaWYgKGdyaWRbaV0uaXNSZWxhdGl2ZSgpKSB7Ci0g
ICAgICAgICAgICB0b3RhbFJlbGF0aXZlICs9IG1heChncmlkW2ldLnZhbHVlKCksIDEpOworICAg
ICAgICAgICAgdG90YWxSZWxhdGl2ZSArPSBtYXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKTsKICAg
ICAgICAgICAgIGNvdW50UmVsYXRpdmUrKzsKICAgICAgICAgfSAgICAgICAgICAgIAogICAgIH0K
QEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRB
eGlzCiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncmlkTGVuOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChncmlkW2ldLmlzUmVsYXRpdmUoKSkgewotICAgICAgICAgICAgICAgIGdyaWRM
YXlvdXRbaV0gPSAobWF4KGdyaWRbaV0udmFsdWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2ZSkg
LyB0b3RhbFJlbGF0aXZlOworICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAobWF4KGdy
aWRbaV0uaW50VmFsdWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2ZSkgLyB0b3RhbFJlbGF0aXZl
OwogICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xlbiAtPSBncmlkTGF5b3V0W2ldOwogICAgICAg
ICAgICAgICAgIGxhc3RSZWxhdGl2ZSA9IGk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAxMTM5MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoVGlt
ZXI8UmVuCiAgICAgICAgIH0KICAgICAgICAgYm9vbCBwb3NpdGl2ZSA9IHJhbmdlID4gMDsKICAg
ICAgICAgaW50IGNsaWVudFNpemUgPSAoaXNIb3Jpem9udGFsKCkgPyBtX2xheWVyLT5yZW5kZXJC
b3goKS0+Y2xpZW50V2lkdGgoKSA6IG1fbGF5ZXItPnJlbmRlckJveCgpLT5jbGllbnRIZWlnaHQo
KSk7Ci0gICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnModmFsdWVGb3JMZW5ndGgobV9sYXllci0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRTaXplKSk7Cisg
ICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnMoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0
aChtX2xheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNsaWVu
dFNpemUpKSk7CiAgICAgICAgIGludCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9s
YXllci0+c2Nyb2xsWE9mZnNldCgpIDogbV9sYXllci0+c2Nyb2xsWU9mZnNldCgpKTsKICAgICAg
ICAgbmV3UG9zID0gIGN1cnJlbnRQb3MgKyAoYWRkSW5jcmVtZW50ID8gaW5jcmVtZW50IDogLWlu
Y3JlbWVudCk7CiAgICAgICAgIGlmIChwb3NpdGl2ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxMTM5MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNS
b3dMb2dpY2FsSGUKICAgICAgICAgTGF5b3V0VW5pdCBiYXNlbGluZURlc2NlbnQgPSAwOwogCiAg
ICAgICAgIC8vIE91ciBiYXNlIHNpemUgaXMgdGhlIGJpZ2dlc3QgbG9naWNhbCBoZWlnaHQgZnJv
bSBvdXIgY2VsbHMnIHN0eWxlcyAoZXhjbHVkaW5nIHJvdyBzcGFubmluZyBjZWxscykuCi0gICAg
ICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyXSArIG1pbmltdW1WYWx1ZUZvckxl
bmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdodCwgMCwgdmlld1JlbmRlcmVyKSwgMCk7CisgICAg
ICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyXSArIHN0YXRpY19jYXN0PGludD4o
bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LCAwLCB2aWV3UmVu
ZGVyZXIpKSwgMCk7CiAKICAgICAgICAgUm93JiByb3cgPSBtX2dyaWRbcl0ucm93OwogICAgICAg
ICB1bnNpZ25lZCB0b3RhbENvbHMgPSByb3cuc2l6ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136932</attachid>
            <date>2012-04-12 10:52:20 -0700</date>
            <delta_ts>2012-04-12 11:42:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83726-20120412105218.patch</filename>
            <type>text/plain</type>
            <size>11180</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDAwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTExICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcmVwYXJlIGZ1bmN0aW9u
cyBpbiBMZW5ndGhGdW5jdGlvbnMuaCBmb3IgTGF5b3V0VW5pdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyaW5nIHRoZSBmdW5jdGlvbnMgdGhh
dCBsaXZlIGluIExlbmd0aEZ1bmN0aW9ucyBmb3Igc3ViLXBpeGVsIGxheW91dCwgd2hpY2ggZW50
YWlscworICAgICAgICB1c2luZyBhbmQgcmV0dXJuaW5nIExheW91dFVuaXRzIGluc3RlYWQgb2Yg
aW50ZWdlcnMuIEFzaWRlIGZyb20gY2hhbmdpbmcgdGhlIGRhdGEgdHlwZXMKKyAgICAgICAgb2Yg
dGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLCB0aGlzIHJlcXVpcmVzIGEgbnVtYmVyIG9mIGV4cGxp
Y2l0IHN0YXRpY19jYXN0cyB0aGF0IHRydW5jYXRlCisgICAgICAgIGNzcyB2YWx1ZXMgZm9yIGEg
ZmV3IHJlbmRlcmluZyBjbGFzc2VzIHRoYXQgYXJlIGxhaWQgb3V0IHVzaW5nIGludGVnZXJzIGlu
c3RlYWQgb2YKKyAgICAgICAgTGF5b3V0VW5pdHMuIFNlZSBodHRwczovL3RyYWMud2Via2l0Lm9y
Zy93aWtpL0xheW91dFVuaXQgZm9yIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBO
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rpb25zLmg6
CisgICAgICAgIChXZWJDb3JlKTogVXNpbmcgTGF5b3V0VW5pdHMgZm9yIHN1Yi1waXhlbCBwcmVj
aXNpb24uCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKTogRG9jdW1lbnQgc2l6ZXMgYXJlIGlu
dGVncmFsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyk6IFRoZSBmcmFtZSB0cmVlIGNv
bnRpbnVlcyB0byBiZSBpbnRlZ3JhbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKTogUmVu
ZGVyTWFycXVlZSBzY3JvbGxpbmcgdXNlcyBpbnRlZ3JhbCB2YWx1ZXMuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KTogVGFibGUgbGF5b3V0IGlzIGludGVn
cmFsLgorCiAyMDEyLTA0LTEyICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBsZW1lbnQgRGljdGlvbmFyeS5oIG9uIG1hYyAoODM0NzIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTE0MDAxKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDMwICsy
OSwzMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWludCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKK0xheW91dFVuaXQgbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwg
UmVuZGVyVmlldyogcmVuZGVyVmlldywgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKQogewogICAgIHN3
aXRjaCAobGVuZ3RoLnR5cGUoKSkgewogICAgIGNhc2UgRml4ZWQ6CiAgICAgICAgIHJldHVybiBs
ZW5ndGgudmFsdWUoKTsKICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgIGlmIChyb3VuZFBlcmNl
bnRhZ2VzKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQobWF4aW11
bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZikpOworICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHJvdW5kKG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJj
ZW50KCkgLyAxMDAuMGYpKTsKICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0
IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNo
aW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAv
IDEwMC4wZikpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsK
ICAgICBjYXNlIENhbGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3Vs
YXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0
aDoKICAgICAgICAgaWYgKHJlbmRlclZpZXcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogbGVuZ3RoLnZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxMYXlvdXRVbml0PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS53aWR0aCgpICog
bGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIGlmIChy
ZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmll
dy0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkgLyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFVu
aXQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2Fz
ZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7CiAgICAg
ICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4odmlld3BvcnRT
aXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJj
ZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PExheW91dFVuaXQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUu
aGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIEF1dG86CkBAIC02OCw3ICs2
OCw3IEBAIGludCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiAKICAgICByZXR1
cm4gMDsKIH0KIAotaW50IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBpbnQg
bWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2VudGFn
ZXMpCitMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldywgYm9vbCByb3VuZFBl
cmNlbnRhZ2VzKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewogICAgIGNhc2UgRml4
ZWQ6CkBAIC05OSw3ICs5OSw3IEBAIGludCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwKIH0KIAogLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlzIHN1cHBvcnRlZCB0
aGlzIGNvcHkgb2YgZmxvYXRWYWx1ZUZvckxlbmd0aCgpIGNhbiBiZSByZW1vdmVkLiBTZWUgYnVn
IDcxMTQzLgotZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwg
aW50IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK2Zsb2F0IGZsb2F0VmFs
dWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkg
ewogICAgIGNhc2UgRml4ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5o
CShyZXZpc2lvbiAxMTQwMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE0ICsyNCwxNiBAQAogI2lmbmRlZiBMZW5ndGhGdW5j
dGlvbnNfaAogI2RlZmluZSBMZW5ndGhGdW5jdGlvbnNfaAogCisjaW5jbHVkZSAiTGF5b3V0VHlw
ZXMuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJWaWV3Owogc3RydWN0
IExlbmd0aDsKIAotaW50IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBpbnQg
bWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZh
bHNlKTsKLWludCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBpbnQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKLWZsb2F0
IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgaW50IG1heGltdW1WYWx1ZSwgUmVu
ZGVyVmlldyogPSAwKTsKK0xheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91
bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKK0xheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCBy
b3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwKTsKIGZs
b2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgZmxvYXQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiA9IDApOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDExNDAwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NDksMTAgKzE4NDksMTAgQEAgdm9p
ZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbAogCiAgICAgLy8gVGhlIHBlcmNl
bnRhZ2UgaXMgY2FsY3VsYXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHdpZHRoIGV2ZW4gZm9yIG1h
cmdpbiB0b3AgYW5kIGJvdHRvbS4KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyL2Jv
eC5odG1sI21hcmdpbi1wcm9wZXJ0aWVzCi0gICAgbWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRv
cCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblRv
cCgpLCB3aWR0aCwgdmlldyk7Ci0gICAgbWFyZ2luUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQo
KS5pc0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogdmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblJp
Z2h0KCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5Cb3R0b20gPSBzdHlsZS0+bWFyZ2luQm90
dG9tKCkuaXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20gOiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFy
Z2luQm90dG9tKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdp
bkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFy
Z2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CisgICAgbWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRv
cCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2aWV3KSk7CisgICAgbWFyZ2luUmlnaHQgPSBz
dHlsZS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogc3RhdGljX2Nhc3Q8
aW50Pih2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpKTsK
KyAgICBtYXJnaW5Cb3R0b20gPSBzdHlsZS0+bWFyZ2luQm90dG9tKCkuaXNBdXRvKCkgPyBtYXJn
aW5Cb3R0b20gOiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5C
b3R0b20oKSwgd2lkdGgsIHZpZXcpKTsKKyAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxl
ZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KSk7CiB9CiAKIHZvaWQgRG9jdW1l
bnQ6OnNldElzVmlld1NvdXJjZShib29sIGlzVmlld1NvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkocmV2aXNpb24gMTE0MDAxKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3Jp
ZEF4aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIGxlbmd0aCBvZiBhbGwgb2YgdGhlIGZp
eGVkIGNvbHVtbnMvcm93cyAtPiB0b3RhbEZpeGVkCiAgICAgICAgIC8vIENvdW50IHRoZSBudW1i
ZXIgb2YgY29sdW1ucy9yb3dzIHdoaWNoIGFyZSBmaXhlZCAtPiBjb3VudEZpeGVkCiAgICAgICAg
IGlmIChncmlkW2ldLmlzRml4ZWQoKSkgewotICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1h
eChncmlkW2ldLnZhbHVlKCksIDApOworICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heChn
cmlkW2ldLmludFZhbHVlKCksIDApOwogICAgICAgICAgICAgdG90YWxGaXhlZCArPSBncmlkTGF5
b3V0W2ldOwogICAgICAgICAgICAgY291bnRGaXhlZCsrOwogICAgICAgICB9CkBAIC0yMjMsNyAr
MjIzLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcwogICAgICAg
ICAvLyBDb3VudCB0aGUgdG90YWwgcGVyY2VudGFnZSBvZiBhbGwgb2YgdGhlIHBlcmNlbnRhZ2Ug
Y29sdW1ucy9yb3dzIC0+IHRvdGFsUGVyY2VudAogICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVy
IG9mIGNvbHVtbnMvcm93cyB3aGljaCBhcmUgcGVyY2VudGFnZXMgLT4gY291bnRQZXJjZW50CiAg
ICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICBncmlkTGF5b3V0
W2ldID0gbWF4KHZhbHVlRm9yTGVuZ3RoKGdyaWRbaV0sIGF2YWlsYWJsZUxlbiksIDApOworICAg
ICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKGdyaWRbaV0s
IGF2YWlsYWJsZUxlbiksIDApOwogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9IGdyaWRMYXlv
dXRbaV07CiAgICAgICAgICAgICBjb3VudFBlcmNlbnQrKzsKICAgICAgICAgfQpAQCAtMjMxLDcg
KzIzMSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMKICAgICAg
ICAgLy8gQ291bnQgdGhlIHRvdGFsIHJlbGF0aXZlIG9mIGFsbCB0aGUgcmVsYXRpdmUgY29sdW1u
cy9yb3dzIC0+IHRvdGFsUmVsYXRpdmUKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBj
b2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIHJlbGF0aXZlIC0+IGNvdW50UmVsYXRpdmUKICAgICAgICAg
aWYgKGdyaWRbaV0uaXNSZWxhdGl2ZSgpKSB7Ci0gICAgICAgICAgICB0b3RhbFJlbGF0aXZlICs9
IG1heChncmlkW2ldLnZhbHVlKCksIDEpOworICAgICAgICAgICAgdG90YWxSZWxhdGl2ZSArPSBt
YXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKTsKICAgICAgICAgICAgIGNvdW50UmVsYXRpdmUrKzsK
ICAgICAgICAgfSAgICAgICAgICAgIAogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJl
bmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzCiAKICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBncmlkTGVuOyArK2kpIHsKICAgICAgICAgICAgIGlmIChncmlkW2ldLmlzUmVsYXRp
dmUoKSkgewotICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAobWF4KGdyaWRbaV0udmFs
dWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2ZSkgLyB0b3RhbFJlbGF0aXZlOworICAgICAgICAg
ICAgICAgIGdyaWRMYXlvdXRbaV0gPSAobWF4KGdyaWRbaV0uaW50VmFsdWUoKSwgMSkgKiByZW1h
aW5pbmdSZWxhdGl2ZSkgLyB0b3RhbFJlbGF0aXZlOwogICAgICAgICAgICAgICAgIHJlbWFpbmlu
Z0xlbiAtPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgICAgIGxhc3RSZWxhdGl2ZSA9IGk7
CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1h
cnF1ZWUuY3BwCShyZXZpc2lvbiAxMTQwMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoVGltZXI8UmVuCiAgICAgICAgIH0KICAgICAgICAg
Ym9vbCBwb3NpdGl2ZSA9IHJhbmdlID4gMDsKICAgICAgICAgaW50IGNsaWVudFNpemUgPSAoaXNI
b3Jpem9udGFsKCkgPyBtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgoKSA6IG1fbGF5
ZXItPnJlbmRlckJveCgpLT5jbGllbnRIZWlnaHQoKSk7Ci0gICAgICAgIGludCBpbmNyZW1lbnQg
PSBhYnModmFsdWVGb3JMZW5ndGgobV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVl
ZUluY3JlbWVudCgpLCBjbGllbnRTaXplKSk7CisgICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnMo
c3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5tYXJxdWVlSW5jcmVtZW50KCksIGNsaWVudFNpemUpKSk7CiAgICAgICAgIGludCBjdXJy
ZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+c2Nyb2xsWE9mZnNldCgpIDogbV9s
YXllci0+c2Nyb2xsWU9mZnNldCgpKTsKICAgICAgICAgbmV3UG9zID0gIGN1cnJlbnRQb3MgKyAo
YWRkSW5jcmVtZW50ID8gaW5jcmVtZW50IDogLWluY3JlbWVudCk7CiAgICAgICAgIGlmIChwb3Np
dGl2ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMTQwMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBA
IGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGUKICAgICAgICAgTGF5b3V0
VW5pdCBiYXNlbGluZURlc2NlbnQgPSAwOwogCiAgICAgICAgIC8vIE91ciBiYXNlIHNpemUgaXMg
dGhlIGJpZ2dlc3QgbG9naWNhbCBoZWlnaHQgZnJvbSBvdXIgY2VsbHMnIHN0eWxlcyAoZXhjbHVk
aW5nIHJvdyBzcGFubmluZyBjZWxscykuCi0gICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heCht
X3Jvd1Bvc1tyXSArIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdo
dCwgMCwgdmlld1JlbmRlcmVyKSwgMCk7CisgICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heCht
X3Jvd1Bvc1tyXSArIHN0YXRpY19jYXN0PGludD4obWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fZ3Jp
ZFtyXS5sb2dpY2FsSGVpZ2h0LCAwLCB2aWV3UmVuZGVyZXIpKSwgMCk7CiAKICAgICAgICAgUm93
JiByb3cgPSBtX2dyaWRbcl0ucm93OwogICAgICAgICB1bnNpZ25lZCB0b3RhbENvbHMgPSByb3cu
c2l6ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136944</attachid>
            <date>2012-04-12 11:42:12 -0700</date>
            <delta_ts>2012-04-12 21:19:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83726-20120412114211.patch</filename>
            <type>text/plain</type>
            <size>12755</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDAwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA0LTExICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcmVwYXJlIGZ1bmN0aW9u
cyBpbiBMZW5ndGhGdW5jdGlvbnMuaCBmb3IgTGF5b3V0VW5pdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyaW5nIHRoZSBmdW5jdGlvbnMgdGhh
dCBsaXZlIGluIExlbmd0aEZ1bmN0aW9ucyBmb3Igc3ViLXBpeGVsIGxheW91dCwgd2hpY2ggZW50
YWlscworICAgICAgICB1c2luZyBhbmQgcmV0dXJuaW5nIExheW91dFVuaXRzIGluc3RlYWQgb2Yg
aW50ZWdlcnMuIFRoZXJlIGFyZSBhIG51bWJlciBvZiByZW5kZXJpbmcKKyAgICAgICAgY2xhc3Nl
cyB0aGF0IGFyZSBsYWlkIG91dCB1c2luZyBpbnRlZ2VycyAtLSBzZWUgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvd2lraS9MYXlvdXRVbml0CisgICAgICAgIGZvciBkZXRhaWxzIC0tIHNvIHRoaXMg
YWxzbyBhZGRzIGludGVnZXItc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIGxlbmd0aCBmdW5jdGlv
bnMgZm9yCisgICAgICAgIGV4cGxpY2l0IHVzZSBpbiB0aG9zZSBjbGFzc2VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogY3NzL0xl
bmd0aEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZSk6IFVzaW5nIExheW91dFVuaXRzIGZv
ciBzdWItcGl4ZWwgcHJlY2lzaW9uIGFuZCBhZGRpbmcgaW50ZWdlci1zcGVjaWZpYyB2ZXJzaW9u
cworICAgICAgICBvZiBtaW5pbXVtVmFsdWVGb3JMZW5ndGggYW5kIHZhbHVlRm9yTGVuZ3RoIHRo
YXQgdHJ1bmNhdGUuCisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKTogRG9jdW1lbnQgc2l6ZXMg
YXJlIGludGVncmFsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcyk6IFRoZSBmcmFtZSB0
cmVlIGNvbnRpbnVlcyB0byBiZSBpbnRlZ3JhbC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVk
KTogUmVuZGVyTWFycXVlZSBzY3JvbGxpbmcgdXNlcyBpbnRlZ3JhbCB2YWx1ZXMuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KTogVGFibGUgbGF5b3V0IGlz
IGludGVncmFsLgorCiAyMDEyLTA0LTEyICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbXBsZW1lbnQgRGljdGlvbmFyeS5oIG9uIG1hYyAoODM0NzIpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTE0MDAxKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDQ2ICsyOSw1NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWludCBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKK2ludCBtaW5pbXVtSW50VmFs
dWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2VudGFnZXMpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4obWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4
aW11bVZhbHVlLCByZW5kZXJWaWV3LCByb3VuZFBlcmNlbnRhZ2VzKSk7Cit9CisKK2ludCBpbnRW
YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFs
dWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1W
YWx1ZSwgcmVuZGVyVmlldywgcm91bmRQZXJjZW50YWdlcykpOworfQorCitMYXlvdXRVbml0IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhp
bXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykK
IHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgogICAgICAg
ICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7CiAgICAgY2FzZSBQZXJjZW50OgogICAgICAgICBpZiAo
cm91bmRQZXJjZW50YWdlcykKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJv
dW5kKG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0Pihyb3VuZChtYXhpbXVtVmFsdWUgKiBs
ZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKSk7CiAgICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUg
ZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZvciByb3VuZGluZyBvbiAzMi1iaXQg
SW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFjay4KLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5w
ZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFVu
aXQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8g
MTAwLjBmKSk7CiAgICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gbGVuZ3RoLm5v
bk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwogICAgIGNhc2UgVmlld3BvcnRQZXJj
ZW50YWdlV2lkdGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAqIGxl
bmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHJlbmRlclZp
ZXctPnZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkgLyAxMDAuMGYpOworICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKICAgICBj
YXNlIFZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKICAgICAgICAgaWYgKHJlbmRlclZpZXcpCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9ydFNp
emUoKS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4w
Zik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExh
eW91dFVuaXQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZp
ZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgcmV0dXJuIFpFUk9f
TEFZT1VUX1VOSVQ7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlm
IChyZW5kZXJWaWV3KSB7CiAgICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRl
clZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkg
KiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOworICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFVuaXQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53
aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgY2FzZSBBdXRvOgotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgY2FzZSBSZWxhdGl2
ZToKICAgICBjYXNlIEludHJpbnNpYzoKICAgICBjYXNlIE1pbkludHJpbnNpYzoKICAgICBjYXNl
IFVuZGVmaW5lZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gWkVST19MQVlPVVRfVU5JVDsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VO
SVQ7CiB9CiAKLWludCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgaW50IG1h
eGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldywgYm9vbCByb3VuZFBlcmNlbnRhZ2Vz
KQorTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJj
ZW50YWdlcykKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVk
OgpAQCAtODMsMjMgKzkzLDIzIEBAIGludCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwKICAgICAvLyBtdWx0aXBsZSBhc3NlcnRpb25zIGFyZSB1c2VkIGJlbG93IHRvIHByb3Zp
ZGUgbW9yZSB1c2VmdWwgZGVidWcgb3V0cHV0LgogICAgIGNhc2UgUmVsYXRpdmU6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAgY2FzZSBJbnRyaW5zaWM6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZ
T1VUX1VOSVQ7CiAgICAgY2FzZSBNaW5JbnRyaW5zaWM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VO
SVQ7CiAgICAgY2FzZSBVbmRlZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFpFUk9fTEFZT1VUX1VOSVQ7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBa
RVJPX0xBWU9VVF9VTklUOwogfQogCiAvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMg
c3VwcG9ydGVkIHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVuZ3RoKCkgY2FuIGJlIHJlbW92
ZWQuIFNlZSBidWcgNzExNDMuCi1mbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorZmxv
YXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBt
YXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiB7CiAgICAgc3dpdGNoIChsZW5n
dGgudHlwZSgpKSB7CiAgICAgY2FzZSBGaXhlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3Ro
RnVuY3Rpb25zLmgJKHJldmlzaW9uIDExNDAwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5n
dGhGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTQgKzI0LDE4IEBACiAjaWZuZGVm
IExlbmd0aEZ1bmN0aW9uc19oCiAjZGVmaW5lIExlbmd0aEZ1bmN0aW9uc19oCiAKKyNpbmNsdWRl
ICJMYXlvdXRUeXBlcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclZp
ZXc7CiBzdHJ1Y3QgTGVuZ3RoOwogCi1pbnQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYsIGludCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpOwotaW50IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIGludCBt
YXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFs
c2UpOwotZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBpbnQgbWF4aW11
bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDApOworaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwLCBi
b29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitpbnQgaW50VmFsdWVGb3JMZW5ndGgoY29u
c3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9v
bCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcq
ID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworTGF5b3V0VW5pdCB2YWx1ZUZv
ckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmll
dyogPSAwLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9hdFZhbHVl
Rm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJW
aWV3KiA9IDApOwogZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBmbG9h
dCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTE0MDAxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0OSwxMCAr
MTg0OSwxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsCiAKICAg
ICAvLyBUaGUgcGVyY2VudGFnZSBpcyBjYWxjdWxhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUgd2lk
dGggZXZlbiBmb3IgbWFyZ2luIHRvcCBhbmQgYm90dG9tLgogICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2luLXByb3BlcnRpZXMKLSAgICBtYXJnaW5Ub3AgPSBz
dHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiB2YWx1ZUZvckxlbmd0aChz
dHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5SaWdodCA9IHN0eWxl
LT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiB2YWx1ZUZvckxlbmd0aChz
dHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpOwotICAgIG1hcmdpbkJvdHRvbSA9IHN0
eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXcpOwotICAgIG1hcmdpbkxlZnQg
PSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKKyAgICBtYXJnaW5Ub3AgPSBz
dHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiBpbnRWYWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luVG9wKCksIHdpZHRoLCB2aWV3KTsKKyAgICBtYXJnaW5SaWdodCA9IHN0
eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiBpbnRWYWx1ZUZvckxl
bmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXcpOworICAgIG1hcmdpbkJvdHRv
bSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IGludFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXcpOworICAgIG1h
cmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGlu
dFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6c2V0SXNWaWV3U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShyZXZpc2lvbiAx
MTQwMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5
T3V0QXhpcyhHcmlkQXhpcwogICAgICAgICAvLyBDb3VudCB0aGUgdG90YWwgbGVuZ3RoIG9mIGFs
bCBvZiB0aGUgZml4ZWQgY29sdW1ucy9yb3dzIC0+IHRvdGFsRml4ZWQKICAgICAgICAgLy8gQ291
bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIGZpeGVkIC0+IGNvdW50Rml4
ZWQKICAgICAgICAgaWYgKGdyaWRbaV0uaXNGaXhlZCgpKSB7Ci0gICAgICAgICAgICBncmlkTGF5
b3V0W2ldID0gbWF4KGdyaWRbaV0udmFsdWUoKSwgMCk7CisgICAgICAgICAgICBncmlkTGF5b3V0
W2ldID0gbWF4KGdyaWRbaV0uaW50VmFsdWUoKSwgMCk7CiAgICAgICAgICAgICB0b3RhbEZpeGVk
ICs9IGdyaWRMYXlvdXRbaV07CiAgICAgICAgICAgICBjb3VudEZpeGVkKys7CiAgICAgICAgIH0K
QEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRB
eGlzCiAgICAgICAgIC8vIENvdW50IHRoZSB0b3RhbCBwZXJjZW50YWdlIG9mIGFsbCBvZiB0aGUg
cGVyY2VudGFnZSBjb2x1bW5zL3Jvd3MgLT4gdG90YWxQZXJjZW50CiAgICAgICAgIC8vIENvdW50
IHRoZSBudW1iZXIgb2YgY29sdW1ucy9yb3dzIHdoaWNoIGFyZSBwZXJjZW50YWdlcyAtPiBjb3Vu
dFBlcmNlbnQKICAgICAgICAgaWYgKGdyaWRbaV0uaXNQZXJjZW50KCkpIHsKLSAgICAgICAgICAg
IGdyaWRMYXlvdXRbaV0gPSBtYXgodmFsdWVGb3JMZW5ndGgoZ3JpZFtpXSwgYXZhaWxhYmxlTGVu
KSwgMCk7CisgICAgICAgICAgICBncmlkTGF5b3V0W2ldID0gbWF4KGludFZhbHVlRm9yTGVuZ3Ro
KGdyaWRbaV0sIGF2YWlsYWJsZUxlbiksIDApOwogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9
IGdyaWRMYXlvdXRbaV07CiAgICAgICAgICAgICBjb3VudFBlcmNlbnQrKzsKICAgICAgICAgfQpA
QCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4
aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIHJlbGF0aXZlIG9mIGFsbCB0aGUgcmVsYXRp
dmUgY29sdW1ucy9yb3dzIC0+IHRvdGFsUmVsYXRpdmUKICAgICAgICAgLy8gQ291bnQgdGhlIG51
bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIHJlbGF0aXZlIC0+IGNvdW50UmVsYXRpdmUK
ICAgICAgICAgaWYgKGdyaWRbaV0uaXNSZWxhdGl2ZSgpKSB7Ci0gICAgICAgICAgICB0b3RhbFJl
bGF0aXZlICs9IG1heChncmlkW2ldLnZhbHVlKCksIDEpOworICAgICAgICAgICAgdG90YWxSZWxh
dGl2ZSArPSBtYXgoZ3JpZFtpXS5pbnRWYWx1ZSgpLCAxKTsKICAgICAgICAgICAgIGNvdW50UmVs
YXRpdmUrKzsKICAgICAgICAgfSAgICAgICAgICAgIAogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBA
QCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzCiAKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBncmlkTGVuOyArK2kpIHsKICAgICAgICAgICAgIGlmIChncmlkW2ld
LmlzUmVsYXRpdmUoKSkgewotICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAobWF4KGdy
aWRbaV0udmFsdWUoKSwgMSkgKiByZW1haW5pbmdSZWxhdGl2ZSkgLyB0b3RhbFJlbGF0aXZlOwor
ICAgICAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSAobWF4KGdyaWRbaV0uaW50VmFsdWUoKSwg
MSkgKiByZW1haW5pbmdSZWxhdGl2ZSkgLyB0b3RhbFJlbGF0aXZlOwogICAgICAgICAgICAgICAg
IHJlbWFpbmluZ0xlbiAtPSBncmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgICAgIGxhc3RSZWxh
dGl2ZSA9IGk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAxMTQwMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODks
NyBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoVGltZXI8UmVuCiAgICAgICAgIH0K
ICAgICAgICAgYm9vbCBwb3NpdGl2ZSA9IHJhbmdlID4gMDsKICAgICAgICAgaW50IGNsaWVudFNp
emUgPSAoaXNIb3Jpem9udGFsKCkgPyBtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgo
KSA6IG1fbGF5ZXItPnJlbmRlckJveCgpLT5jbGllbnRIZWlnaHQoKSk7Ci0gICAgICAgIGludCBp
bmNyZW1lbnQgPSBhYnModmFsdWVGb3JMZW5ndGgobV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+bWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRTaXplKSk7CisgICAgICAgIGludCBpbmNyZW1l
bnQgPSBhYnMoaW50VmFsdWVGb3JMZW5ndGgobV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+
bWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRTaXplKSk7CiAgICAgICAgIGludCBjdXJyZW50UG9z
ID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+c2Nyb2xsWE9mZnNldCgpIDogbV9sYXllci0+
c2Nyb2xsWU9mZnNldCgpKTsKICAgICAgICAgbmV3UG9zID0gIGN1cnJlbnRQb3MgKyAoYWRkSW5j
cmVtZW50ID8gaW5jcmVtZW50IDogLWluY3JlbWVudCk7CiAgICAgICAgIGlmIChwb3NpdGl2ZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCShyZXZpc2lvbiAxMTQwMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIGludCBS
ZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGUKICAgICAgICAgTGF5b3V0VW5pdCBi
YXNlbGluZURlc2NlbnQgPSAwOwogCiAgICAgICAgIC8vIE91ciBiYXNlIHNpemUgaXMgdGhlIGJp
Z2dlc3QgbG9naWNhbCBoZWlnaHQgZnJvbSBvdXIgY2VsbHMnIHN0eWxlcyAoZXhjbHVkaW5nIHJv
dyBzcGFubmluZyBjZWxscykuCi0gICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bv
c1tyXSArIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdodCwgMCwg
dmlld1JlbmRlcmVyKSwgMCk7CisgICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bv
c1tyXSArIG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdodCwg
MCwgdmlld1JlbmRlcmVyKSwgMCk7CiAKICAgICAgICAgUm93JiByb3cgPSBtX2dyaWRbcl0ucm93
OwogICAgICAgICB1bnNpZ25lZCB0b3RhbENvbHMgPSByb3cuc2l6ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>