<?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>81546</bug_id>
          
          <creation_ts>2012-03-19 13:11:12 -0700</creation_ts>
          <short_desc>[chromium] Use floating point scroll deltas for layers</short_desc>
          <delta_ts>2012-03-21 09:52:59 -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>73350</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sami Kyostila">skyostil</reporter>
          <assigned_to name="Sami Kyostila">skyostil</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582104</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-03-19 13:11:12 -0700</bug_when>
    <thetext>The Chromium compositor should use floating point scroll deltas to keep track of layer scroll offsets relative the main thread. This is because due to page scaling it may be necessary to scroll layers in sub-CSS-pixel steps to avoid visible jumps. When the floating point scroll offset is committed to the main thread, it is truncated to integer, but the fractional part is kept on the CC side to make sure fractional scroll offsets are accumulated correctly over multiple commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582132</commentid>
    <comment_count>1</comment_count>
      <attachid>132645</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-03-19 13:22:14 -0700</bug_when>
    <thetext>Created attachment 132645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582174</commentid>
    <comment_count>2</comment_count>
      <attachid>132645</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-19 13:44:33 -0700</bug_when>
    <thetext>Comment on attachment 132645
Patch

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

Looks good, just one quibble about size/point distinction

&gt; Source/WebCore/platform/graphics/FloatPoint.h:244
&gt; +inline FloatSize toSize(const FloatPoint&amp; a)

i don&apos;t think you need this - looks like flooredIntSize() will give you what you want

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:156
&gt; +    IntSize scrollTotal = toSize(flooredIntPoint(m_scrollLayerImpl-&gt;scrollPosition() + m_scrollLayerImpl-&gt;scrollDelta()));

flooredIntSize() ?

Alternately, should scrollTotal be an IntPoint ?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:735
&gt; +    scroll.scrollDelta = toSize(flooredIntPoint(m_scrollLayerImpl-&gt;scrollDelta()));

There&apos;s also a flooredIntSize(), should we just be using that instead?

I think that scrollDelta should be a IntSize, since it&apos;s representing an offset and not an absolute coordinate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582961</commentid>
    <comment_count>3</comment_count>
      <attachid>132645</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-03-20 05:01:18 -0700</bug_when>
    <thetext>Comment on attachment 132645
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:156
&gt;&gt; +    IntSize scrollTotal = toSize(flooredIntPoint(m_scrollLayerImpl-&gt;scrollPosition() + m_scrollLayerImpl-&gt;scrollDelta()));
&gt; 
&gt; flooredIntSize() ?
&gt; 
&gt; Alternately, should scrollTotal be an IntPoint ?

Thanks, I managed to miss flooredIntSize(). It was missing the obvious FloatSize -&gt; IntSize overload so I also added that.

I think it would make more sense for scrollTotal to be an IntPoint, but that makes interfacing with CCPageScaleAnimation a bit awkward since the latter uses IntSizes for its coordinates. I&apos;m not very familiar with that code so I won&apos;t go and change it now.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:735
&gt;&gt; +    scroll.scrollDelta = toSize(flooredIntPoint(m_scrollLayerImpl-&gt;scrollDelta()));
&gt; 
&gt; There&apos;s also a flooredIntSize(), should we just be using that instead?
&gt; 
&gt; I think that scrollDelta should be a IntSize, since it&apos;s representing an offset and not an absolute coordinate

Ditto with flooredIntSize().

scroll.scrollDelta is already an IntSize, and with flooredIntSize() there&apos;s no intermediate IntPoint any longer so this should be fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582968</commentid>
    <comment_count>4</comment_count>
      <attachid>132805</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-03-20 05:16:08 -0700</bug_when>
    <thetext>Created attachment 132805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584185</commentid>
    <comment_count>5</comment_count>
      <attachid>132805</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-21 09:00:29 -0700</bug_when>
    <thetext>Comment on attachment 132805
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584243</commentid>
    <comment_count>6</comment_count>
      <attachid>132805</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 09:52:54 -0700</bug_when>
    <thetext>Comment on attachment 132805
Patch

Clearing flags on attachment: 132805

Committed r111555: &lt;http://trac.webkit.org/changeset/111555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584244</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 09:52:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132645</attachid>
            <date>2012-03-19 13:22:14 -0700</date>
            <delta_ts>2012-03-20 05:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81546-20120319202212.patch</filename>
            <type>text/plain</type>
            <size>11186</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc5YjNkNDQ3NWI4YzFm
NjUwZjRhMDhmNTkzYTBmNjU0NDdhMTQ5Yy4uZjQxY2VmNWRhYTc0M2RmMzBmZmZjNzRlOWY0Y2Q2
NTEyY2QyZTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTE5ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
VXNlIGZsb2F0aW5nIHBvaW50IHNjcm9sbCBkZWx0YXMgZm9yIGxheWVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1NDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZmxvYXRpbmcgcG9pbnQgc2Ny
b2xsIGRlbHRhcyBmb3IgbGF5ZXJzIGluc3RlYWQgb2YgaW50ZWdyYWwgc2Nyb2xsCisgICAgICAg
IGRlbHRhcy4gVGhpcyBpcyBiZWNhdXNlIGR1ZSB0byBwYWdlIHNjYWxpbmcgaXQgbWF5IGJlIG5l
Y2Vzc2FyeSB0bworICAgICAgICBzY3JvbGwgbGF5ZXJzIGluIHN1Yi1DU1MtcGl4ZWwgc3RlcHMg
dG8gYXZvaWQgdmlzaWJsZSBqdW1wcy4gV2hlbiB0aGUKKyAgICAgICAgZmxvYXRpbmcgcG9pbnQg
c2Nyb2xsIG9mZnNldCBpcyBjb21taXR0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLCBpdCBpcworICAg
ICAgICB0cnVuY2F0ZWQgdG8gaW50ZWdlciwgYnV0IHRoZSBmcmFjdGlvbmFsIHBhcnQgaXMga2Vw
dCBvbiB0aGUgQ0Mgc2lkZSB0bworICAgICAgICBtYWtlIHN1cmUgZnJhY3Rpb25hbCBzY3JvbGwg
b2Zmc2V0cyBhcmUgYWNjdW11bGF0ZWQgY29ycmVjdGx5IG92ZXIKKyAgICAgICAgbXVsdGlwbGUg
Y29tbWl0cy4KKworICAgICAgICBUZXN0OiBDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNj
cm9sbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAg
ICAoV2ViQ29yZTo6dG9TaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1w
bDo6c2V0U2Nyb2xsRGVsdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2Nyb2xs
RGVsdGEpOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2Fs
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9jZXNz
U2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFu
aW1hdGVQYWdlU2NhbGUpOgorCiAyMDEyLTAzLTE4ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2Vu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGYWxsYmFjayB0byBjb21tb24gc2NyaXB0IHdoZW4g
cGVyLXNjcmlwdCBmb250IHNldHRpbmcgaXMgdGhlIGVtcHR5IHN0cmluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBjOGQ3OGZmYWMyNGI2NDIwNmFjZTY3NWJiMDY5NTQ4NjJjYjRlYjVh
Li4wMGNkOTBmOTExN2EyMjM5NTQwOGQwM2JkNmUyYTAwZDQ1MWI4YmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTE5ICBTYW1pIEt5b3N0aWxh
ICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIGZsb2F0
aW5nIHBvaW50IHNjcm9sbCBkZWx0YXMgZm9yIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdW5pdCB0ZXN0IGZvciBhY2N1bXVsYXRpbmcg
ZnJhY3Rpb25hbCBzY3JvbGwgZGVsdGFzIGFjcm9zcyBtdWx0aXBsZSBjb21taXRzLgorCisgICAg
ICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9sbCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3RGcmFjdGlvbmFsU2Nyb2xsOjpDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9s
bCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RGcmFjdGlvbmFsU2Nyb2xsOjpi
ZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNj
cm9sbDo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0RnJhY3Rpb25hbFNjcm9sbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RGcmFjdGlvbmFsU2Nyb2xsOjphZnRlclRlc3QpOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKwogMjAxMi0wMy0xOSAgS2Vpc2hp
IEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCBi
dWlsZCB0aGF0IHdhcyBicm9rZW4gYnkgcjExMTEzNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4IGE2MDFhOWRmZmFhMTg4OWNmMzQzOWIyZDhm
ZjRiNWUwNjQ3NWVmN2EuLjAyNjE2ZmI4NTNhOWE5MWZlNDcxZjdlMDEzNGI0NDg2OTNlYWRkNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAg
LTI0MSw2ICsyNDEsMTEgQEAgaW5saW5lIGZsb2F0IG9wZXJhdG9yKihjb25zdCBGbG9hdFBvaW50
JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQogICAgIHJldHVybiBhLmRvdChiKTsKIH0KIAoraW5s
aW5lIEZsb2F0U2l6ZSB0b1NpemUoY29uc3QgRmxvYXRQb2ludCYgYSkKK3sKKyAgICByZXR1cm4g
RmxvYXRTaXplKGEueCgpLCBhLnkoKSk7Cit9CisKIGlubGluZSBJbnRQb2ludCByb3VuZGVkSW50
UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkKIHsKICAgICByZXR1cm4gSW50UG9pbnQoc3RhdGlj
X2Nhc3Q8aW50Pihyb3VuZGYocC54KCkpKSwgc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYocC55KCkp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMzRkNjAwODAyYWU1ZmIxMDQxYzAzMmVl
MTIyNjA4ODEyYzEwNmU0NC4uZjA0MTc5NGNhNTI5NDQ1ZDZkMzU3YjM1OTQyMDM5OTA1NzU3NDU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTg4LDkgKzE4OCw5IEBAIHZvaWQgQ0NM
YXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKikKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2Nyb2xsQnko
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsKQordm9pZCBDQ0xheWVySW1wbDo6c2Nyb2xsQnkoY29uc3Qg
RmxvYXRTaXplJiBzY3JvbGwpCiB7Ci0gICAgSW50U2l6ZSBuZXdEZWx0YSA9IG1fc2Nyb2xsRGVs
dGEgKyBzY3JvbGw7CisgICAgRmxvYXRTaXplIG5ld0RlbHRhID0gbV9zY3JvbGxEZWx0YSArIHNj
cm9sbDsKICAgICBJbnRTaXplIG1pbkRlbHRhID0gLXRvU2l6ZShtX3Njcm9sbFBvc2l0aW9uKTsK
ICAgICBJbnRTaXplIG1heERlbHRhID0gbV9tYXhTY3JvbGxQb3NpdGlvbiAtIHRvU2l6ZShtX3Nj
cm9sbFBvc2l0aW9uKTsKICAgICAvLyBDbGFtcCBuZXdEZWx0YSBzbyB0aGF0IHBvc2l0aW9uICsg
ZGVsdGEgc3RheXMgd2l0aGluIHNjcm9sbCBib3VuZHMuCkBAIC01MTYsNyArNTE2LDcgQEAgdm9p
ZCBDQ0xheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
c2l0aW9uKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAot
dm9pZCBDQ0xheWVySW1wbDo6c2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEpCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YShjb25zdCBGbG9hdFNpemUmIHNj
cm9sbERlbHRhKQogewogICAgIGlmIChtX3Njcm9sbERlbHRhID09IHNjcm9sbERlbHRhKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA4MTk3NThmNjIwNDM5Y2Y5ZmI2
YWMwOWViYjUwNjYyNDQ3MzI2NmExLi5jNDBiNGMwMTNiNmE0YTdkMjRiYzJjYTQ1OGU2NTIyYjBi
Zjk1MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTE3Niw4ICsxNzYsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgSW50U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7cmV0dXJuIG1f
bWF4U2Nyb2xsUG9zaXRpb247IH0KICAgICB2b2lkIHNldE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEludFNpemUmIG1heFNjcm9sbFBvc2l0aW9uKSB7IG1fbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhT
Y3JvbGxQb3NpdGlvbjsgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbERlbHRhOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25z
dCBJbnRTaXplJik7CisgICAgY29uc3QgRmxvYXRTaXplJiBzY3JvbGxEZWx0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsRGVsdGE7IH0KKyAgICB2b2lkIHNldFNjcm9sbERlbHRhKGNvbnN0IEZs
b2F0U2l6ZSYpOwogCiAgICAgZmxvYXQgcGFnZVNjYWxlRGVsdGEoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VTY2FsZURlbHRhOyB9CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVEZWx0YShmbG9hdCk7CkBA
IC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEludFNpemUmIHNlbnRTY3JvbGxE
ZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VudFNjcm9sbERlbHRhOyB9CiAgICAgdm9pZCBzZXRT
ZW50U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2VudFNjcm9sbERlbHRhKSB7IG1fc2VudFNj
cm9sbERlbHRhID0gc2VudFNjcm9sbERlbHRhOyB9CiAKLSAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0
IEludFNpemUmIHNjcm9sbCk7CisgICAgdm9pZCBzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIHNj
cm9sbCk7CiAKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFi
bGU7IH0KICAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1fc2Nyb2xs
YWJsZSA9IHNjcm9sbGFibGU7IH0KQEAgLTMwNCw3ICszMDQsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX2RyYXdzQ29udGVudDsKIAotICAgIEludFNpemUgbV9zY3JvbGxEZWx0YTsKKyAgICBG
bG9hdFNpemUgbV9zY3JvbGxEZWx0YTsKICAgICBJbnRTaXplIG1fc2VudFNjcm9sbERlbHRhOwog
ICAgIEludFNpemUgbV9tYXhTY3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBtX3BhZ2VTY2FsZURl
bHRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBlYmUwNmY1
MTBlOTZkNWQwN2Q3ZDcwZjdlNjNjNTkzNjQ1YTY0ZDQ0Li4yOTQ1MDRlNDM4ZDMwMGJlOWI3ODll
NDg5Yzg5ZDZjYjI5NGI3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCiAgICAgaWYg
KCFtX3Njcm9sbExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBzY3Jv
bGxUb3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1f
c2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFs
ID0gdG9TaXplKGZsb29yZWRJbnRQb2ludChtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRp
b24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKSk7CiAgICAgc2Nyb2xsVG90
YWwuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CiAgICAgZmxvYXQgc2NhbGVUb3RhbCA9IG1fcGFn
ZVNjYWxlICogbV9wYWdlU2NhbGVEZWx0YTsKICAgICBJbnRTaXplIHNjYWxlZENvbnRlbnRTaXpl
ID0gY29udGVudFNpemUoKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQgcGFnZVNjYWxlQ2hh
bmdlKQogCiAgICAgLy8gV2UgYWxzbyBuZWVkIHRvIGNvbnZlcnQgaW1wbC1zaWRlIHNjcm9sbCBk
ZWx0YXMgdG8gcGFnZVNjYWxlIHNwYWNlLgogICAgIGlmIChtX3Njcm9sbExheWVySW1wbCkgewot
ICAgICAgICBJbnRTaXplIHNjcm9sbERlbHRhID0gbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERl
bHRhKCk7CisgICAgICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IG1fc2Nyb2xsTGF5ZXJJbXBs
LT5zY3JvbGxEZWx0YSgpOwogICAgICAgICBzY3JvbGxEZWx0YS5zY2FsZShwYWdlU2NhbGVDaGFu
Z2UpOwogICAgICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Nyb2xsRGVsdGEoc2Nyb2xsRGVs
dGEpOwogICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2Nh
bGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMoKQogICAgIC8v
IEZJWE1FOiB0cmFjayBzY3JvbGxzIGZyb20gbGF5ZXJzIG90aGVyIHRoYW4gdGhlIHJvb3QKICAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OlNjcm9sbFVwZGF0ZUluZm8gc2Nyb2xsOwogICAgIHNj
cm9sbC5sYXllcklkID0gbV9zY3JvbGxMYXllckltcGwtPmlkKCk7Ci0gICAgc2Nyb2xsLnNjcm9s
bERlbHRhID0gbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCk7CisgICAgc2Nyb2xsLnNj
cm9sbERlbHRhID0gdG9TaXplKGZsb29yZWRJbnRQb2ludChtX3Njcm9sbExheWVySW1wbC0+c2Ny
b2xsRGVsdGEoKSkpOwogICAgIHNjcm9sbEluZm8tPnNjcm9sbHMuYXBwZW5kKHNjcm9sbCk7CiAK
ICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2VudFNjcm9sbERlbHRhKHNjcm9sbC5zY3JvbGxE
ZWx0YSk7CkBAIC03NTQsNyArNzU0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmlt
YXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogICAgIGlmICghbV9wYWdlU2NhbGVB
bmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFNpemUgc2Nyb2xsVG90YWwgPSB0
b1NpemUobV9zY3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVy
SW1wbC0+c2Nyb2xsRGVsdGEoKSk7CisgICAgRmxvYXRTaXplIHNjcm9sbFRvdGFsID0gdG9TaXpl
KG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwt
PnNjcm9sbERlbHRhKCkpOwogCiAgICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVBbmlt
YXRpb24tPnBhZ2VTY2FsZUF0VGltZShtb25vdG9uaWNUaW1lKSAvIG1fcGFnZVNjYWxlKTsKICAg
ICBJbnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Nyb2xsT2Zmc2V0
QXRUaW1lKG1vbm90b25pY1RpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNzAyYmJmMTYzOWI0M2IxNmFlZjNh
YmI2NjA2MjkwNDk4YzBkNjYxNS4uMDc3Mzk4ZWJlOGNkZThhODJjYzUzYjkwMzVjZDBhOWY1MjU4
OTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC0yMTA5LDQgKzIxMDksNTcgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdFRlc3RTZXRSZXBlYXRlZExvc3RDb250ZXh0LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5U
ZXN0VGhyZWFkZWQoKTsKIH0KIAorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdEZyYWN0aW9uYWxT
Y3JvbGwgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGljOgor
ICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RGcmFjdGlvbmFsU2Nyb2xsKCkKKyAgICAgICAgOiBtX3Nj
cm9sbEFtb3VudCgxLjc1LCAwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNl
dFNjcm9sbGFibGUodHJ1ZSk7CisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVh
ZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgQ0NMYXllckltcGwqIHJvb3Qg
PSBpbXBsLT5yb290TGF5ZXIoKTsKKyAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24o
SW50U2l6ZSgxMDAsIDEwMCkpOworCisgICAgICAgIC8vIENoZWNrIHRoYXQgYSBmcmFjdGlvbmFs
IHNjcm9sbCBkZWx0YSBpcyBjb3JyZWN0bHkgYWNjdW11bGF0ZWQgb3ZlciBtdWx0aXBsZSBjb21t
aXRzLgorICAgICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAxKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgSW50UG9pbnQoMCwgMCkpOworICAg
ICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIEZsb2F0U2l6ZSgwLCAwKSk7
CisgICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICAgICAg
fSBlbHNlIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDIpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBmbG9vcmVkSW50UG9pbnQobV9zY3JvbGxBbW91
bnQpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBGbG9hdFNp
emUoZm1vZChtX3Njcm9sbEFtb3VudC53aWR0aCgpLCAxKSwgMCkpOworICAgICAgICAgICAgcG9z
dFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+
ZnJhbWVOdW1iZXIoKSA9PSAzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xs
UG9zaXRpb24oKSwgZmxvb3JlZEludFBvaW50KG1fc2Nyb2xsQW1vdW50ICsgbV9zY3JvbGxBbW91
bnQpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBGbG9hdFNp
emUoZm1vZCgyICogbV9zY3JvbGxBbW91bnQud2lkdGgoKSwgMSksIDApKTsKKyAgICAgICAgICAg
IGVuZFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICByb290LT5zY3JvbGxCeShtX3Njcm9sbEFt
b3VudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlKQorICAgIHsKKyAgICAgICAgSW50
UG9pbnQgcG9zaXRpb24gPSBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zY3JvbGxQb3Np
dGlvbigpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5zZXRTY3JvbGxQ
b3NpdGlvbihwb3NpdGlvbiArIHNjcm9sbERlbHRhKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorcHJpdmF0ZToKKyAgICBGbG9hdFNpemUgbV9z
Y3JvbGxBbW91bnQ7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEZyYWN0aW9uYWxT
Y3JvbGwsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132805</attachid>
            <date>2012-03-20 05:16:08 -0700</date>
            <delta_ts>2012-03-21 09:52:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81546-20120320121607.patch</filename>
            <type>text/plain</type>
            <size>11905</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg5ODRjOGFlY2I3ODMy
MjcwZDI4N2Q4OTIyYTg2YTk0YjQ0OGQ2YS4uZjY1ZjE5Y2M0ZDFkNjFjNWE3MjdlZTdmNzY4MmM2
NTBhZDA4ZTAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTE5ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
VXNlIGZsb2F0aW5nIHBvaW50IHNjcm9sbCBkZWx0YXMgZm9yIGxheWVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1NDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZmxvYXRpbmcgcG9pbnQgc2Ny
b2xsIGRlbHRhcyBmb3IgbGF5ZXJzIGluc3RlYWQgb2YgaW50ZWdyYWwgc2Nyb2xsCisgICAgICAg
IGRlbHRhcy4gVGhpcyBpcyBiZWNhdXNlIGR1ZSB0byBwYWdlIHNjYWxpbmcgaXQgbWF5IGJlIG5l
Y2Vzc2FyeSB0bworICAgICAgICBzY3JvbGwgbGF5ZXJzIGluIHN1Yi1DU1MtcGl4ZWwgc3RlcHMg
dG8gYXZvaWQgdmlzaWJsZSBqdW1wcy4gV2hlbiB0aGUKKyAgICAgICAgZmxvYXRpbmcgcG9pbnQg
c2Nyb2xsIG9mZnNldCBpcyBjb21taXR0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLCBpdCBpcworICAg
ICAgICB0cnVuY2F0ZWQgdG8gaW50ZWdlciwgYnV0IHRoZSBmcmFjdGlvbmFsIHBhcnQgaXMga2Vw
dCBvbiB0aGUgQ0Mgc2lkZSB0bworICAgICAgICBtYWtlIHN1cmUgZnJhY3Rpb25hbCBzY3JvbGwg
b2Zmc2V0cyBhcmUgYWNjdW11bGF0ZWQgY29ycmVjdGx5IG92ZXIKKyAgICAgICAgbXVsdGlwbGUg
Y29tbWl0cy4KKworICAgICAgICBUZXN0OiBDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNj
cm9sbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAg
ICAoV2ViQ29yZTo6dG9TaXplKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1w
bDo6c2V0U2Nyb2xsRGVsdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2Nyb2xs
RGVsdGEpOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2Fs
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9jZXNz
U2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFu
aW1hdGVQYWdlU2NhbGUpOgorCiAyMDEyLTAzLTIwICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUgY2xhc3MgbmFt
ZSBmaWx0ZXIgZm9yICJjb21wYXJpc29uIiB2aWV3IGluIGhlYXAgcHJvZmlsZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggOTA1NWRiNWUwODJjZTA4YWMxMTAwN2ExYjdiMGM4MGViNTk2
NzNiOS4uMzNmZTlkOWU4MGZlNDNhNjA5MWIyNDdkMGNlOTQxYjkyZTQ0ZmI2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wMy0xOSAgU2FtaSBLeW9z
dGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBm
bG9hdGluZyBwb2ludCBzY3JvbGwgZGVsdGFzIGZvciBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdCBmb3IgYWNjdW11bGF0
aW5nIGZyYWN0aW9uYWwgc2Nyb2xsIGRlbHRhcyBhY3Jvc3MgbXVsdGlwbGUgY29tbWl0cy4KKwor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXll
clRyZWVIb3N0VGVzdEZyYWN0aW9uYWxTY3JvbGwpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9sbDo6Q0NMYXllclRyZWVIb3N0VGVzdEZyYWN0aW9uYWxT
Y3JvbGwpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9s
bDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEZyYWN0aW9u
YWxTY3JvbGw6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdEZyYWN0aW9uYWxTY3JvbGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUpOgorICAgICAg
ICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9sbDo6YWZ0ZXJUZXN0KToK
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTItMDMtMjAgIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBN
YXJraW5nIFdlYkZyYW1lVGVzdC5EaXZBdXRvWm9vbVBhcmFtc1Rlc3QgYXMgZmFpbGluZy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKaW5kZXggM2IzNTUx
MGJlNGQ4YWEyOWUyYjM5YzUzNDg0ZWZiNTg5MGUyZGZmOS4uMDUwZmJkMGQ5NTkyOTAxNDEyOTFm
NDNiNjlhZmRmZmEyYzgwMWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRTaXplLmgKQEAgLTE3OCw2ICsxNzgsMTEgQEAgaW5saW5lIEludFNpemUgcm91bmRl
ZEludFNpemUoY29uc3QgRmxvYXRTaXplJiBwKQogICAgIHJldHVybiBJbnRTaXplKHN0YXRpY19j
YXN0PGludD4ocm91bmRmKHAud2lkdGgoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihwLmhl
aWdodCgpKSkpOwogfQogCitpbmxpbmUgSW50U2l6ZSBmbG9vcmVkSW50U2l6ZShjb25zdCBGbG9h
dFNpemUmIHApCit7CisgICAgcmV0dXJuIEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihwLndpZHRo
KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHAuaGVpZ2h0KCkpKTsKK30KKwogaW5saW5lIEludFNpemUg
ZXhwYW5kZWRJbnRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcCkKIHsKICAgICByZXR1cm4gSW50U2l6
ZShjbGFtcFRvSW50ZWdlcihjZWlsZihwLndpZHRoKCkpKSwgY2xhbXBUb0ludGVnZXIoY2VpbGYo
cC5oZWlnaHQoKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAzNGQ2MDA4MDJhZTVm
YjEwNDFjMDMyZWUxMjI2MDg4MTJjMTA2ZTQ0Li5mMDQxNzk0Y2E1Mjk0NDVkNmQzNTdiMzU5NDIw
Mzk5MDU3NTc0NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xODgsOSArMTg4LDkg
QEAgdm9pZCBDQ0xheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hy
b21pdW0qKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIENDTGF5ZXJJbXBs
OjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBzY3JvbGwpCit2b2lkIENDTGF5ZXJJbXBsOjpzY3Jv
bGxCeShjb25zdCBGbG9hdFNpemUmIHNjcm9sbCkKIHsKLSAgICBJbnRTaXplIG5ld0RlbHRhID0g
bV9zY3JvbGxEZWx0YSArIHNjcm9sbDsKKyAgICBGbG9hdFNpemUgbmV3RGVsdGEgPSBtX3Njcm9s
bERlbHRhICsgc2Nyb2xsOwogICAgIEludFNpemUgbWluRGVsdGEgPSAtdG9TaXplKG1fc2Nyb2xs
UG9zaXRpb24pOwogICAgIEludFNpemUgbWF4RGVsdGEgPSBtX21heFNjcm9sbFBvc2l0aW9uIC0g
dG9TaXplKG1fc2Nyb2xsUG9zaXRpb24pOwogICAgIC8vIENsYW1wIG5ld0RlbHRhIHNvIHRoYXQg
cG9zaXRpb24gKyBkZWx0YSBzdGF5cyB3aXRoaW4gc2Nyb2xsIGJvdW5kcy4KQEAgLTUxNiw3ICs1
MTYsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2lu
dCYgc2Nyb2xsUG9zaXRpb24pCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJl
ZSgpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSkKK3ZvaWQgQ0NMYXllckltcGw6OnNldFNjcm9sbERlbHRhKGNvbnN0IEZs
b2F0U2l6ZSYgc2Nyb2xsRGVsdGEpCiB7CiAgICAgaWYgKG1fc2Nyb2xsRGVsdGEgPT0gc2Nyb2xs
RGVsdGEpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDgxOTc1OGY2
MjA0MzljZjlmYjZhYzA5ZWJiNTA2NjI0NDczMjY2YTEuLmM0MGI0YzAxM2I2YTRhN2QyNGJjMmNh
NDU4ZTY1MjJiMGJmOTUxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTc2LDggKzE3Niw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBtYXhTY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHtyZXR1cm4gbV9tYXhTY3JvbGxQb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0TWF4U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24pIHsgbV9tYXhTY3JvbGxQb3Np
dGlvbiA9IG1heFNjcm9sbFBvc2l0aW9uOyB9CiAKLSAgICBjb25zdCBJbnRTaXplJiBzY3JvbGxE
ZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRGVsdGE7IH0KLSAgICB2b2lkIHNldFNjcm9s
bERlbHRhKGNvbnN0IEludFNpemUmKTsKKyAgICBjb25zdCBGbG9hdFNpemUmIHNjcm9sbERlbHRh
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxEZWx0YTsgfQorICAgIHZvaWQgc2V0U2Nyb2xsRGVs
dGEoY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBmbG9hdCBwYWdlU2NhbGVEZWx0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZVNjYWxlRGVsdGE7IH0KICAgICB2b2lkIHNldFBhZ2VTY2FsZURlbHRh
KGZsb2F0KTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYg
c2VudFNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9zZW50U2Nyb2xsRGVsdGE7IH0KICAg
ICB2b2lkIHNldFNlbnRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBzZW50U2Nyb2xsRGVsdGEp
IHsgbV9zZW50U2Nyb2xsRGVsdGEgPSBzZW50U2Nyb2xsRGVsdGE7IH0KIAotICAgIHZvaWQgc2Ny
b2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKTsKKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEZs
b2F0U2l6ZSYgc2Nyb2xsKTsKIAogICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYWJsZTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUp
IHsgbV9zY3JvbGxhYmxlID0gc2Nyb2xsYWJsZTsgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fZHJhd3NDb250ZW50OwogCi0gICAgSW50U2l6ZSBtX3Njcm9sbERl
bHRhOworICAgIEZsb2F0U2l6ZSBtX3Njcm9sbERlbHRhOwogICAgIEludFNpemUgbV9zZW50U2Ny
b2xsRGVsdGE7CiAgICAgSW50U2l6ZSBtX21heFNjcm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IG1f
cGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmlu
ZGV4IGRkMmQ0MmE0NzE3YWFhMGVmYTViYWNjOGEzYzI5ZjI2YjAyNGRiODguLmVjNGFlMzI3Zjcw
ZGE2YjZiYTdjY2U3MTU4NmUwMjEwZDMzMmFiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlv
biwKICAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bnRTaXplIHNjcm9sbFRvdGFsID0gdG9TaXplKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3Np
dGlvbigpICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkpOworICAgIEludFNpemUg
c2Nyb2xsVG90YWwgPSBmbG9vcmVkSW50U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9z
aXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKICAgICBzY3JvbGxU
b3RhbC5zY2FsZShtX3BhZ2VTY2FsZURlbHRhKTsKICAgICBmbG9hdCBzY2FsZVRvdGFsID0gbV9w
YWdlU2NhbGUgKiBtX3BhZ2VTY2FsZURlbHRhOwogICAgIEludFNpemUgc2NhbGVkQ29udGVudFNp
emUgPSBjb250ZW50U2l6ZSgpOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6YWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2FsZUNoYW5nZShmbG9hdCBwYWdlU2NhbGVD
aGFuZ2UpCiAKICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gY29udmVydCBpbXBsLXNpZGUgc2Nyb2xs
IGRlbHRhcyB0byBwYWdlU2NhbGUgc3BhY2UuCiAgICAgaWYgKG1fc2Nyb2xsTGF5ZXJJbXBsKSB7
Ci0gICAgICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xs
RGVsdGEoKTsKKyAgICAgICAgRmxvYXRTaXplIHNjcm9sbERlbHRhID0gbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbERlbHRhKCk7CiAgICAgICAgIHNjcm9sbERlbHRhLnNjYWxlKHBhZ2VTY2FsZUNo
YW5nZSk7CiAgICAgICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRTY3JvbGxEZWx0YShzY3JvbGxE
ZWx0YSk7CiAgICAgfQpAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29tcHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZv
CiAKICAgICAvLyBDb21wdXRlIHdoZXJlIHRoZSBzY3JvbGwgb2Zmc2V0L3BhZ2Ugc2NhbGUgd291
bGQgYmUgaWYgZnVsbHkgcGluY2gtem9vbWVkCiAgICAgLy8gb3V0IGZyb20gdGhlIGFuY2hvciBw
b2ludC4KLSAgICBGbG9hdFNpemUgc2Nyb2xsQmVnaW4gPSB0b1NpemUobV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7
CisgICAgSW50U2l6ZSBzY3JvbGxCZWdpbiA9IGZsb29yZWRJbnRTaXplKG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkp
OwogICAgIHNjcm9sbEJlZ2luLnNjYWxlKG1fcGFnZVNjYWxlRGVsdGEpOwogICAgIGZsb2F0IHNj
YWxlQmVnaW4gPSBtX3BhZ2VTY2FsZSAqIG1fcGFnZVNjYWxlRGVsdGE7CiAgICAgZmxvYXQgcGFn
ZVNjYWxlRGVsdGFUb1NlbmQgPSBtX21pblBhZ2VTY2FsZSAvIG1fcGFnZVNjYWxlOwpAQCAtNzM3
LDcgKzczNyw3IEBAIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gQ0NMYXllclRyZWVI
b3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcygpCiAgICAgLy8gRklYTUU6IHRyYWNrIHNjcm9s
bHMgZnJvbSBsYXllcnMgb3RoZXIgdGhhbiB0aGUgcm9vdAogICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6U2Nyb2xsVXBkYXRlSW5mbyBzY3JvbGw7CiAgICAgc2Nyb2xsLmxheWVySWQgPSBtX3Nj
cm9sbExheWVySW1wbC0+aWQoKTsKLSAgICBzY3JvbGwuc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbExh
eWVySW1wbC0+c2Nyb2xsRGVsdGEoKTsKKyAgICBzY3JvbGwuc2Nyb2xsRGVsdGEgPSBmbG9vcmVk
SW50U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CiAgICAgc2Nyb2xsSW5m
by0+c2Nyb2xscy5hcHBlbmQoc2Nyb2xsKTsKIAogICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRT
ZW50U2Nyb2xsRGVsdGEoc2Nyb2xsLnNjcm9sbERlbHRhKTsKQEAgLTc1OSw3ICs3NTksNyBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUoZG91YmxlIG1vbm90b25p
Y1RpbWUpCiAgICAgaWYgKCFtX3BhZ2VTY2FsZUFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Ny
b2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKKyAgICBJ
bnRTaXplIHNjcm9sbFRvdGFsID0gZmxvb3JlZEludFNpemUobV9zY3JvbGxMYXllckltcGwtPnNj
cm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CiAKICAg
ICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+cGFnZVNjYWxlQXRUaW1l
KG1vbm90b25pY1RpbWUpIC8gbV9wYWdlU2NhbGUpOwogICAgIEludFNpemUgbmV4dFNjcm9sbCA9
IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRBdFRpbWUobW9ub3RvbmljVGltZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAppbmRleCA3MDJiYmYxNjM5YjQzYjE2YWVmM2FiYjY2MDYyOTA0OThjMGQ2NjE1Li4w
NzczOThlYmU4Y2RlOGE4MmNjNTNiOTAzNWNkMGE5ZjUyNTg5Njc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTIx
MDksNCArMjEwOSw1NyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFJlcGVhdGVkTG9z
dENvbnRleHQsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9sbCA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVz
dEZyYWN0aW9uYWxTY3JvbGwoKQorICAgICAgICA6IG1fc2Nyb2xsQW1vdW50KDEuNzUsIDApCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAg
ICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGltcGwp
CisgICAgeworICAgICAgICBDQ0xheWVySW1wbCogcm9vdCA9IGltcGwtPnJvb3RMYXllcigpOwor
ICAgICAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisK
KyAgICAgICAgLy8gQ2hlY2sgdGhhdCBhIGZyYWN0aW9uYWwgc2Nyb2xsIGRlbHRhIGlzIGNvcnJl
Y3RseSBhY2N1bXVsYXRlZCBvdmVyIG11bHRpcGxlIGNvbW1pdHMuCisgICAgICAgIGlmIChpbXBs
LT5mcmFtZU51bWJlcigpID09IDEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3Jv
bGxQb3NpdGlvbigpLCBJbnRQb2ludCgwLCAwKSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsRGVsdGEoKSwgRmxvYXRTaXplKDAsIDApKTsKKyAgICAgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgICAgICB9IGVsc2UgaWYgKGltcGwtPmZyYW1l
TnVtYmVyKCkgPT0gMikgeworICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0
aW9uKCksIGZsb29yZWRJbnRQb2ludChtX3Njcm9sbEFtb3VudCkpOworICAgICAgICAgICAgRVhQ
RUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIEZsb2F0U2l6ZShmbW9kKG1fc2Nyb2xsQW1vdW50
LndpZHRoKCksIDEpLCAwKSk7CisgICAgICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5U
aHJlYWQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDMpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBmbG9vcmVkSW50
UG9pbnQobV9zY3JvbGxBbW91bnQgKyBtX3Njcm9sbEFtb3VudCkpOworICAgICAgICAgICAgRVhQ
RUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIEZsb2F0U2l6ZShmbW9kKDIgKiBtX3Njcm9sbEFt
b3VudC53aWR0aCgpLCAxKSwgMCkpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9
CisgICAgICAgIHJvb3QtPnNjcm9sbEJ5KG1fc2Nyb2xsQW1vdW50KTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgZmxvYXQgc2NhbGUpCisgICAgeworICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uICsgc2Ny
b2xsRGVsdGEpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsK
KyAgICB9Citwcml2YXRlOgorICAgIEZsb2F0U2l6ZSBtX3Njcm9sbEFtb3VudDsKK307CisKK1RF
U1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0RnJhY3Rpb25hbFNjcm9sbCwgcnVuTXVsdGlUaHJlYWQp
Cit7CisgICAgcnVuVGVzdFRocmVhZGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>