<?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>172300</bug_id>
          
          <creation_ts>2017-05-18 12:04:44 -0700</creation_ts>
          <short_desc>Transform misplaces element 50% of the time</short_desc>
          <delta_ts>2017-05-19 16:01:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=172397</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>dstockwell</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1310185</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-18 12:04:44 -0700</bug_when>
    <thetext>Transform misplaces element 50% of the time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310193</commentid>
    <comment_count>1</comment_count>
      <attachid>310529</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-18 12:22:57 -0700</bug_when>
    <thetext>Created attachment 310529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310201</commentid>
    <comment_count>2</comment_count>
      <attachid>310529</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-05-18 12:33:49 -0700</bug_when>
    <thetext>Comment on attachment 310529
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        animation. The &quot;50% of the time&quot; comes in to play because

I wonder if this fixes any existing flaky tests!

&gt; LayoutTests/animations/needs-layout.html:50
&gt; +    setTimeout(test, 100);

Why is the 100 ms timeout needed? Such short timeouts tend to make flaky tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310225</commentid>
    <comment_count>3</comment_count>
      <attachid>310529</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-18 13:18:56 -0700</bug_when>
    <thetext>Comment on attachment 310529
Patch

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

&gt; Source/WebCore/page/animation/CSSAnimationController.cpp:662
&gt; +            frameView.setNeedsLayout();

Why isn&apos;t this renderer.setNeedsLayout()?

&gt; Source/WebCore/page/animation/CSSAnimationController.cpp:663
&gt; +            frameView.scheduleRelayout();

Is this needed as well as setNeedsLayout()?

&gt; Source/WebCore/page/animation/KeyframeAnimation.cpp:84
&gt; +    if (!m_keyframes.containsProperty(CSSPropertyTransform))

Is this a linear walk just like your loop below?

&gt; Source/WebCore/page/animation/KeyframeAnimation.cpp:99
&gt; +                    if (translation-&gt;x().isPercent() || translation-&gt;y().isPercent() || translation-&gt;z().isPercent()) {

translation-&gt;z() cannot be a percentage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310228</commentid>
    <comment_count>4</comment_count>
      <attachid>310529</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-18 13:29:00 -0700</bug_when>
    <thetext>Comment on attachment 310529
Patch

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

&gt;&gt; Source/WebCore/page/animation/CSSAnimationController.cpp:662
&gt;&gt; +            frameView.setNeedsLayout();
&gt; 
&gt; Why isn&apos;t this renderer.setNeedsLayout()?

Fixed.

&gt;&gt; Source/WebCore/page/animation/KeyframeAnimation.cpp:84
&gt;&gt; +    if (!m_keyframes.containsProperty(CSSPropertyTransform))
&gt; 
&gt; Is this a linear walk just like your loop below?

Nope. This is a hash set lookup.

&gt;&gt; Source/WebCore/page/animation/KeyframeAnimation.cpp:99
&gt;&gt; +                    if (translation-&gt;x().isPercent() || translation-&gt;y().isPercent() || translation-&gt;z().isPercent()) {
&gt; 
&gt; translation-&gt;z() cannot be a percentage.

Ah, I forgot. It&apos;s still a length, but not percentage.

&gt;&gt; LayoutTests/animations/needs-layout.html:50
&gt;&gt; +    setTimeout(test, 100);
&gt; 
&gt; Why is the 100 ms timeout needed? Such short timeouts tend to make flaky tests.

It&apos;s not. I&apos;ve reduced it to nothing. I just need a timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310232</commentid>
    <comment_count>5</comment_count>
      <attachid>310529</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-18 13:36:38 -0700</bug_when>
    <thetext>Comment on attachment 310529
Patch

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

&gt;&gt;&gt; Source/WebCore/page/animation/CSSAnimationController.cpp:662
&gt;&gt;&gt; +            frameView.setNeedsLayout();
&gt;&gt; 
&gt;&gt; Why isn&apos;t this renderer.setNeedsLayout()?
&gt; 
&gt; Fixed.

Actually, it has to be the frameView, otherwise the scheduleLayout() on the frameView returns early without actually scheduling a layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310242</commentid>
    <comment_count>6</comment_count>
      <attachid>310529</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-18 13:52:40 -0700</bug_when>
    <thetext>Comment on attachment 310529
Patch

smfr_: it’s just about the order of the 2 timers
smfr_: i think there’s another fix
smfr_: if the animation timer fires and there’s a layout pending, do a forced layout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310323</commentid>
    <comment_count>7</comment_count>
      <attachid>310569</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-18 16:07:54 -0700</bug_when>
    <thetext>Created attachment 310569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310332</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-05-18 16:22:44 -0700</bug_when>
    <thetext>Committed r217075: &lt;http://trac.webkit.org/changeset/217075&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310529</attachid>
            <date>2017-05-18 12:22:57 -0700</date>
            <delta_ts>2017-05-18 16:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172300-20170519052247.patch</filename>
            <type>text/plain</type>
            <size>11039</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ5NjBhMTk4Y2RiODAy
N2Y0ODgzNjI0MWVkOWM5MzQ5NWNmYmE0OS4uNzM3NDExYWY0YzdiZTFhMjQzYWYwOWVlZDk5Mjc4
ZDU4OTMwZTllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA1LTE4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFuc2Zvcm0gbWlzcGxhY2Vz
IGVsZW1lbnQgNTAlIG9mIHRoZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIzMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBIGhhcmR3YXJlLWFjY2VsZXJhdGVkIGFuaW1hdGlvbiBvZiB0aGUg
dHJhbnNmb3JtIHByb3BlcnR5CisgICAgICAgIHJlcXVpcmVzIGxheW91dCB0byBoYXBwZW4gaWYg
aXQgY29udGFpbnMgYSB0cmFuc2xhdGUgb3BlcmF0aW9uCisgICAgICAgIHVzaW5nIHBlcmNlbnRh
Z2VzLCBvdGhlcndpc2UgaXQgbWF5IGNyZWF0ZSBhbiBpbmNvcnJlY3QKKyAgICAgICAgYW5pbWF0
aW9uLiBUaGUgIjUwJSBvZiB0aGUgdGltZSIgY29tZXMgaW4gdG8gcGxheSBiZWNhdXNlCisgICAg
ICAgIHRoZSBsYXlvdXQgdGltZXIgbWF5IHNvbWV0aW1lcyBmaXJlIGJlZm9yZSB0aGUgYW5pbWF0
aW9uCisgICAgICAgIHRpbWVyLiBUaGUgdGVzdCBjYXNlIGNvbnRhaW5zIGEgZXhhbXBsZSB0aGF0
IGlzIG11Y2ggbW9yZQorICAgICAgICBsaWtlbHkgdG8gZmFpbCB3aXRob3V0IHRoaXMgZml4Lgor
CisgICAgICAgIFRlc3Q6IGFuaW1hdGlvbnMvbmVlZHMtbGF5b3V0Lmh0bWwKKworICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6IENoZWNrIGlm
IHRoZQorICAgICAgICBDb21wb3NpdGVBbmltYXRpb24gZGVwZW5kcyBvbiBsYXlvdXQsIGFuZCBz
Y2hlZHVsZSBhIGxheW91dCBpZiBzby4KKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246
OmFuaW1hdGUpOiBBc2sgdGhlIGtleWZyYW1lcyBpZiB0aGlzCisgICAgICAgIGFuaW1hdGlvbiBk
ZXBlbmRzIG9uIGxheW91dC4KKworICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpoYXNBbmlt
YXRpb25UaGF0RGVwZW5kc09uTGF5b3V0KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6
S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246
OmNvbXB1dGVMYXlvdXREZXBlbmRlbmN5KTogTG9vayBhdCBhbGwKKyAgICAgICAgdGhlIGtleWZy
YW1lIHByb3BlcnRpZXMgZm9yIHNvbWV0aGluZyB0aGF0IGlzIGEgdHJhbnNsYXRpb24gdXNpbmcK
KyAgICAgICAgcGVyY2VudGFnZXMuCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5oOgorCiAyMDE3LTA1LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBVbnNldCBhY3RpdmUgbWVkaWEgY2FwdHVyZSBzb3VyY2Ug
d2hlbiBzdG9wcGVkIGNhcHR1cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAwMGM3M2UxNmJjMzFh
YTc1OGM5Mzg0ZDU0ZDQ3MDhjMjgyYTgxNDYxLi5jNWRmMzRhMDBmNmQ3MWZjOGZlNDYzMDc5NzE1
NjU5Njk2YTZkMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNjU3LDggKzY1NywxMyBAQCBib29s
IENTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbgogICAgIGJvb2wgYW5pbWF0aW9uU3RhdGVDaGFuZ2VkID0gcmVu
ZGVyZXJBbmltYXRpb25zLmFuaW1hdGUocmVuZGVyZXIsIG9sZFN0eWxlLCBuZXdTdHlsZSwgYW5p
bWF0ZWRTdHlsZSk7CiAKICAgICBpZiAocmVuZGVyZXIucGFyZW50KCkgfHwgbmV3U3R5bGUuYW5p
bWF0aW9ucygpIHx8IChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+YW5pbWF0aW9ucygpKSkgeworICAg
ICAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCk7CisgICAg
ICAgIGlmIChyZW5kZXJlckFuaW1hdGlvbnMuaGFzQW5pbWF0aW9uVGhhdERlcGVuZHNPbkxheW91
dCgpKSB7CisgICAgICAgICAgICBmcmFtZVZpZXcuc2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAg
ICAgIGZyYW1lVmlldy5zY2hlZHVsZVJlbGF5b3V0KCk7CisgICAgICAgIH0KICAgICAgICAgbV9k
YXRhLT51cGRhdGVBbmltYXRpb25UaW1lckZvclJlbmRlcmVyKHJlbmRlcmVyKTsKLSAgICAgICAg
cmVuZGVyZXIudmlldygpLmZyYW1lVmlldygpLnNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgICAg
IGZyYW1lVmlldy5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIH0KIAogICAgIHJldHVybiBhbmlt
YXRpb25TdGF0ZUNoYW5nZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCA3N2QxODIwNWQxMTI2ZDRmZDgzYzdiOWZj
ZDk4NGFjOTQ1OWNkZDNmLi4zMGI3YjNiOGIyY2NkYzMxNDg2ODYzMGMyZTQ2ZGY5YTVjZTY0ZDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmlt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5jcHAKQEAgLTMzNCw2ICszMzQsNyBAQCBib29sIENvbXBvc2l0ZUFuaW1hdGlvbjo6
YW5pbWF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cgog
ICAgICAgICAgICAgICAgIGFuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAg
ICAgIGZvcmNlU3RhY2tpbmdDb250ZXh0IHw9IGRpZEJsZW5kU3R5bGUgJiYga2V5ZnJhbWVBbmlt
LT50cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCgpOworICAgICAgICAgICAgbV9oYXNBbmltYXRpb25U
aGF0RGVwZW5kc09uTGF5b3V0IHw9IGtleWZyYW1lQW5pbS0+ZGVwZW5kc09uTGF5b3V0KCk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q29tcG9zaXRlQW5pbWF0aW9uLmgKaW5kZXggNTM0MmM3ZGUwMGY2YmJhOWMxMDk1NDhjYjc1NWNm
ZTI5MzE1NDVmMy4uYjIxMzhjZDVmYjg0ZjFlNjIwMWQ1NTBlZjgxN2Y4NDQyYjM5MDYxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9u
LmgKQEAgLTg0LDYgKzg0LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2Nyb2xsVHJpZ2dlcmVk
QW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTY3JvbGxUcmlnZ2VyZWRBbmltYXRpb247
IH0KICNlbmRpZgogCisgICAgYm9vbCBoYXNBbmltYXRpb25UaGF0RGVwZW5kc09uTGF5b3V0KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNBbmltYXRpb25UaGF0RGVwZW5kc09uTGF5b3V0OyB9CisKIHBy
aXZhdGU6CiAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlJik7CiAKQEAgLTk4LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgQW5pbWF0aW9uTmFtZU1h
cCBtX2tleWZyYW1lQW5pbWF0aW9uczsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nSW1wbCo+IG1f
a2V5ZnJhbWVBbmltYXRpb25PcmRlck1hcDsKICAgICBib29sIG1fc3VzcGVuZGVkOworICAgIGJv
b2wgbV9oYXNBbmltYXRpb25UaGF0RGVwZW5kc09uTGF5b3V0IHsgZmFsc2UgfTsKICNpZiBFTkFC
TEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKICAgICBib29sIG1faGFzU2Nyb2xsVHJpZ2dlcmVk
QW5pbWF0aW9uIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCmluZGV4IDRmZmYxMWNmNzczNzIzOTU2
NjVhMjFhNzliYjcxMjc3YzgxNDA0MGYuLjZiNjdlNWI3ZmVhMzg2YjRjNTc0MzY0MjI3MzQzNmUx
M2M4MTc2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZy
YW1lQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJTdHlsZVBlbmRp
bmdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5
bGVTY29wZS5oIgorI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIldpbGxDaGFuZ2VEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDYg
KzU5LDcgQEAgS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1h
dGlvbiYgYW5pbWF0aW9uLCBSZW5kZXJFbGVtZW50KgogICAgIGNoZWNrRm9yTWF0Y2hpbmdCYWNr
ZHJvcEZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKICNlbmRpZgogICAgIGNvbXB1dGVTdGFja2luZ0Nv
bnRleHRJbXBhY3QoKTsKKyAgICBjb21wdXRlTGF5b3V0RGVwZW5kZW5jeSgpOwogfQogCiBLZXlm
cmFtZUFuaW1hdGlvbjo6fktleWZyYW1lQW5pbWF0aW9uKCkKQEAgLTc3LDYgKzc5LDMzIEBAIHZv
aWQgS2V5ZnJhbWVBbmltYXRpb246OmNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKQogICAg
IH0KIH0KIAordm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6Y29tcHV0ZUxheW91dERlcGVuZGVuY3ko
KQoreworICAgIGlmICghbV9rZXlmcmFtZXMuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRy
YW5zZm9ybSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBudW1LZXlmcmFtZXMgPSBt
X2tleWZyYW1lcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1LZXlmcmFt
ZXM7IGkrKykgeworICAgICAgICBhdXRvKiBrZXlmcmFtZVN0eWxlID0gbV9rZXlmcmFtZXNbaV0u
c3R5bGUoKTsKKyAgICAgICAgaWYgKCFrZXlmcmFtZVN0eWxlKSB7CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmIChrZXlmcmFtZVN0eWxlLT5oYXNUcmFuc2Zvcm0oKSkgeworICAgICAgICAgICAgYXV0
byYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9IGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpOworICAg
ICAgICAgICAgZm9yIChhdXRvIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0
aW9ucygpKSB7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi0+aXNUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB0cmFuc2xh
dGlvbiA9IGRvd25jYXN0PFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4ob3BlcmF0aW9uLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uLT54KCkuaXNQZXJjZW50
KCkgfHwgdHJhbnNsYXRpb24tPnkoKS5pc1BlcmNlbnQoKSB8fCB0cmFuc2xhdGlvbi0+eigpLmlz
UGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2RlcGVuZHNPbkxheW91dCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmZldGNoSW50ZXJ2YWxFbmRwb2ludHNGb3JQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSomIGZyb21T
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqJiB0b1N0eWxlLCBkb3VibGUmIHByb2cpIGNvbnN0CiB7
CiAgICAgc2l6ZV90IG51bUtleWZyYW1lcyA9IG1fa2V5ZnJhbWVzLnNpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oCmluZGV4IDRl
MDAwYTEzOTgyNjA4MGZkOWFlNmVhZDVlM2E0NGMyODZkY2NkMTMuLmQyMjBlZGY0ZTI5MjNlYzQx
NjIyYzI4YjIwNTE5ZjI1OTIwNjA0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaApAQCAtNTYsNyArNTYsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNBbmltYXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKIAog
ICAgIGJvb2wgdHJpZ2dlcnNTdGFja2luZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3RyaWdn
ZXJzU3RhY2tpbmdDb250ZXh0OyB9Ci0gICAgCisgICAgYm9vbCBkZXBlbmRzT25MYXlvdXQoKSBj
b25zdCB7IHJldHVybiBtX2RlcGVuZHNPbkxheW91dDsgfQorCiAgICAgdm9pZCBzZXRVbmFuaW1h
dGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkgeyBtX3VuYW5pbWF0
ZWRTdHlsZSA9IFdURk1vdmUoc3R5bGUpOyB9CiAgICAgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hbmltYXRlZFN0eWxlLmdldCgpOyB9CiAKQEAgLTgz
LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgY29tcHV0ZUV4dGVudE9mQW5pbWF0aW9u
Rm9yTWF0Y2hpbmdUcmFuc2Zvcm1MaXN0cyhjb25zdCBGbG9hdFJlY3QmIHJlbmRlcmVyQm94LCBM
YXlvdXRSZWN0JikgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBh
Y3QoKTsKKyAgICB2b2lkIGNvbXB1dGVMYXlvdXREZXBlbmRlbmN5KCk7CiAgICAgdm9pZCByZXNv
bHZlS2V5ZnJhbWVTdHlsZXMoKTsKICAgICB2b2lkIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25M
aXN0KCk7CiAgICAgdm9pZCBjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0cygpOwpA
QCAtMTAyLDYgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc3RhcnRFdmVudERpc3Bh
dGNoZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV90cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2RlcGVuZHNPbkxheW91dCB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDNiYjg4Y2ViYmM4MTExYjdjYjdlNTI1ZjFmZDdh
Y2U3ZDEzYzJlOC4uZDdhY2FiNTA0NDcxNzc1MjljODEyZGU5NWQ0ZjRjYzcyN2I4MmE5NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA1LTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBUcmFuc2Zvcm0gbWlzcGxhY2VzIGVsZW1lbnQgNTAlIG9mIHRoZSB0
aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIz
MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODM1NjY4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgdGVzdCBjYXNlIHdoaWNoIGhhcyBhbiBh
bmltYXRpb24gdGhhdCByZWxpZXMgb24KKyAgICAgICAgdHJhbnNsYXRpb24gcGVyY2VudGFnZXMu
IElmIGFsbCBnb2VzIHdlbGwsIHRoZQorICAgICAgICBhbmltYXRpbmcgZWxlbWVudCB3aWxsIGJl
IGNvbXBsZXRlbHkgb2JzY3VyZWQuCisKKyAgICAgICAgKiBhbmltYXRpb25zL25lZWRzLWxheW91
dC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL25lZWRzLWxheW91
dC5odG1sOiBBZGRlZC4KKwogMjAxNy0wNS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gVW5zZXQgYWN0aXZlIG1lZGlhIGNhcHR1cmUgc291cmNl
IHdoZW4gc3RvcHBlZCBjYXB0dXJpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvbmVlZHMtbGF5b3V0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL25l
ZWRzLWxheW91dC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0ZGI3NjhjNTkyYjJhNzcxNzUw
YTRiNmFhYjIzZTU0NTI3NjRiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL25lZWRzLWxheW91dC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxzdHls
ZT4KKyAgICAjb3ZlcmxheSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
bGVmdDogMTAwcHg7CisgICAgICAgIHRvcDogMTAwcHg7CisgICAgICAgIHdpZHRoOiAyMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAw
cHgpOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgor
PGJvZHk+CisgICAgPGRpdiBpZD0ib3ZlcmxheSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9uZWVkcy1sYXlvdXQuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbmVlZHMtbGF5
b3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkMWZjZDc3MzI1NmYyYjM1MzY2OWNjNzVhYWM1ZjFmYTEw
YzY5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbmVlZHMtbGF5
b3V0Lmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPHN0eWxlPgorICAgICNvdmVybGF5IHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgICAgdG9w
OiAxMDBweDsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDBweCk7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOworICAgIH0KKworICAgICNjb250YWluZXIgLmNoaWxkIHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxNTBweDsKKyAgICAgICAgdG9wOiAx
NTBweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgICAgIGFuaW1hdGlvbjogNXMgYW5pbTsK
KyAgICB9CisKKyAgICBAa2V5ZnJhbWVzIGFuaW0geworICAgICAgICAwJSB7CisgICAgICAgICAg
ICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg4MCUsIDApOworICAgICAgICB9CisgICAgICAgIDEwMCUg
eworICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoODAlLCAxMDBweCk7CisgICAgICAg
IH0KKyAgICB9CisKKzwvc3R5bGU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAg
IHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKKyAgICB2YXIg
Y2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKworICAgIGNoaWxkLmNsYXNz
TGlzdC5hZGQoImNoaWxkIik7CisgICAgZWwuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBjaGlsZC5zdHlsZS53ZWJraXRBbmltYXRpb25Q
bGF5U3RhdGUgPSAicGF1c2VkIjsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgMTApOworfQorCit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBzZXRUaW1lb3V0
KHRlc3QsIDEwMCk7Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzxib2R5PgorICAgIDxkaXYgaWQ9
ImNvbnRhaW5lciI+PC9kaXY+CisgICAgPGRpdiBpZD0ib3ZlcmxheSI+PC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310569</attachid>
            <date>2017-05-18 16:07:54 -0700</date>
            <delta_ts>2017-05-18 16:13:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172300-20170519090752.patch</filename>
            <type>text/plain</type>
            <size>13131</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ5NjBhMTk4Y2RiODAy
N2Y0ODgzNjI0MWVkOWM5MzQ5NWNmYmE0OS4uMGRkZGJmNGZlYWJiOGNlMzY5MWNjNjhiZGQ5MWE0
OWIwZDExYjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTA1LTE4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFuc2Zvcm0gbWlzcGxhY2Vz
IGVsZW1lbnQgNTAlIG9mIHRoZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIzMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBIGhhcmR3YXJlLWFjY2VsZXJhdGVkIGFuaW1hdGlvbiBvZiB0aGUg
dHJhbnNmb3JtIHByb3BlcnR5CisgICAgICAgIHJlcXVpcmVzIGxheW91dCB0byBoYXBwZW4gaWYg
aXQgY29udGFpbnMgYSB0cmFuc2xhdGUgb3BlcmF0aW9uCisgICAgICAgIHVzaW5nIHBlcmNlbnRh
Z2VzLCBvdGhlcndpc2UgaXQgbWF5IGNyZWF0ZSBhbiBpbmNvcnJlY3QKKyAgICAgICAgYW5pbWF0
aW9uLiBUaGUgIjUwJSBvZiB0aGUgdGltZSIgY29tZXMgaW4gdG8gcGxheSBiZWNhdXNlCisgICAg
ICAgIHRoZSBsYXlvdXQgdGltZXIgbWF5IHNvbWV0aW1lcyBmaXJlIGJlZm9yZSB0aGUgYW5pbWF0
aW9uCisgICAgICAgIHRpbWVyLiBUaGUgdGVzdCBjYXNlIGNvbnRhaW5zIGEgZXhhbXBsZSB0aGF0
IGlzIG11Y2ggbW9yZQorICAgICAgICBsaWtlbHkgdG8gZmFpbCB3aXRob3V0IHRoaXMgZml4Lgor
CisgICAgICAgIFRlc3Q6IGFuaW1hdGlvbnMvbmVlZHMtbGF5b3V0Lmh0bWwKKworICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQp
OiBJZgorICAgICAgICB3ZSd2ZSBiZWVuIHRvbGQgdGhhdCB3ZSBuZWVkIGEgbGF5b3V0LCBhbmQg
d2UgaGF2ZSBvbmUgcGVuZGluZywgdGhlbgorICAgICAgICBmb3JjZSBpdCBiZWZvcmUgZG9pbmcg
dGhlIHJlc3Qgb2YgdGhlIGFuaW1hdGlvbiBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Fu
aW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOiBDaGVjayBpZiB0aGUKKyAgICAg
ICAgQ29tcG9zaXRlQW5pbWF0aW9uIGRlcGVuZHMgb24gbGF5b3V0LCBhbmQgdGVsbCB0aGUgcHJp
dmF0ZSBjb250cm9sbGVyCisgICAgICAgIHRoYXQgaXQgc2hvdWxkIGNoZWNrIGZvciB0aGUgbmVj
ZXNzaXR5IG9mIGEgbGF5b3V0IGFzIHRoZSBhbmltYXRpb24KKyAgICAgICAgdGltZXIgZmlyZXMu
CisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKTogQXNrIHRoZSBrZXlm
cmFtZXMgaWYgdGhpcworICAgICAgICBhbmltYXRpb24gZGVwZW5kcyBvbiBsYXlvdXQuCisKKyAg
ICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6aGFzQW5pbWF0aW9uVGhhdERlcGVuZHNPbkxheW91
dCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpjb21wdXRlTGF5b3V0RGVwZW5kZW5j
eSk6IExvb2sgYXQgYWxsCisgICAgICAgIHRoZSBrZXlmcmFtZSBwcm9wZXJ0aWVzIGZvciBzb21l
dGhpbmcgdGhhdCBpcyBhIHRyYW5zbGF0aW9uIHVzaW5nCisgICAgICAgIHBlcmNlbnRhZ2VzLgor
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaDoKKwogMjAxNy0w
NS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
VW5zZXQgYWN0aXZlIG1lZGlhIGNhcHR1cmUgc291cmNlIHdoZW4gc3RvcHBlZCBjYXB0dXJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAKaW5kZXggMDBjNzNlMTZiYzMxYWE3NThjOTM4NGQ1NGQ0NzA4YzI4MmE4
MTQ2MS4uYjExZGE1YzMwYjUxMDI5NjdlOTFkOTY2OTYzMWQwZmZmZmZhZTNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKQEAgLTI2MSw2ICsyNjEsMTcgQEAgdm9pZCBDU1NBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIHRo
ZSBmcmFtZSBhbGl2ZSwgc2luY2UgaXQgb3ducyB1cy4KICAgICBSZWY8RnJhbWU+IHByb3RlY3Rv
cihtX2ZyYW1lKTsKIAorICAgIC8vIFRoZSBhbmltYXRpb24gdGltZXIgbWlnaHQgZmlyZSBiZWZv
cmUgdGhlIGxheW91dCB0aW1lciwgaW4KKyAgICAvLyB3aGljaCBjYXNlIHdlIG1pZ2h0IGNyZWF0
ZSBzb21lIGFuaW1hdGlvbnMgd2l0aCBpbmNvcnJlY3QKKyAgICAvLyB2YWx1ZXMgaWYgd2UgZG9u
J3QgbGF5b3V0IGZpcnN0LgorICAgIGlmIChtX3JlcXVpcmVzTGF5b3V0KSB7CisgICAgICAgIGlm
IChhdXRvKiBmcmFtZVZpZXcgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnZpZXcoKSkgeworICAgICAg
ICAgICAgaWYgKGZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkKKyAgICAgICAgICAgICAgICBmcmFt
ZVZpZXctPmZvcmNlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICAgICAgbV9yZXF1aXJlc0xheW91
dCA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIE1ha2Ugc3VyZSBhbmltYXRpb25VcGRhdGVUaW1l
IGlzIHVwZGF0ZWQsIHNvIHRoYXQgaXQgaXMgY3VycmVudCBldmVuIGlmIG5vCiAgICAgLy8gc3R5
bGVDaGFuZ2UgaGFzIGhhcHBlbmVkIChlLmcuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbnMpCiAgICAg
QW5pbWF0aW9uUHJpdmF0ZVVwZGF0ZUJsb2NrIHVwZGF0ZUJsb2NrKCp0aGlzKTsKQEAgLTY1Nyw4
ICs2NjgsMTEgQEAgYm9vbCBDU1NBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25z
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KICAgICBib29sIGFuaW1hdGlvblN0
YXRlQ2hhbmdlZCA9IHJlbmRlcmVyQW5pbWF0aW9ucy5hbmltYXRlKHJlbmRlcmVyLCBvbGRTdHls
ZSwgbmV3U3R5bGUsIGFuaW1hdGVkU3R5bGUpOwogCiAgICAgaWYgKHJlbmRlcmVyLnBhcmVudCgp
IHx8IG5ld1N0eWxlLmFuaW1hdGlvbnMoKSB8fCAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmFuaW1h
dGlvbnMoKSkpIHsKKyAgICAgICAgYXV0byYgZnJhbWVWaWV3ID0gcmVuZGVyZXIudmlldygpLmZy
YW1lVmlldygpOworICAgICAgICBpZiAocmVuZGVyZXJBbmltYXRpb25zLmhhc0FuaW1hdGlvblRo
YXREZXBlbmRzT25MYXlvdXQoKSkKKyAgICAgICAgICAgIG1fZGF0YS0+c2V0UmVxdWlyZXNMYXlv
dXQoKTsKICAgICAgICAgbV9kYXRhLT51cGRhdGVBbmltYXRpb25UaW1lckZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKLSAgICAgICAgcmVuZGVyZXIudmlldygpLmZyYW1lVmlldygpLnNjaGVkdWxlQW5p
bWF0aW9uKCk7CisgICAgICAgIGZyYW1lVmlldy5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgIH0K
IAogICAgIHJldHVybiBhbmltYXRpb25TdGF0ZUNoYW5nZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGUuaAppbmRleCA5NTVhODg3YzcxYjAxYWQzN2MzODRlNDBkN2MwMzc4NjMyYjFlODQ0Li4xNWE0
ZjcyYzFlNmQ0NzY0MTRjNDg5ODQ0NTI3M2FjZTM1ODk2M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlLmgKQEAgLTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd3NOZXdB
bmltYXRpb25zV2hpbGVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c05ld0FuaW1h
dGlvbnNXaGlsZVN1c3BlbmRlZDsgfQogICAgIHZvaWQgc2V0QWxsb3dzTmV3QW5pbWF0aW9uc1do
aWxlU3VzcGVuZGVkKGJvb2wpOwogCisgICAgdm9pZCBzZXRSZXF1aXJlc0xheW91dCgpIHsgbV9y
ZXF1aXJlc0xheW91dCA9IHRydWU7IH0KKwogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZF
TF8yKQogICAgIGJvb2wgd2FudHNTY3JvbGxVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fYW5p
bWF0aW9uc0RlcGVuZGVudE9uU2Nyb2xsLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgYWRkVG9Bbmlt
YXRpb25zRGVwZW5kZW50T25TY3JvbGwoQW5pbWF0aW9uQmFzZSopOwpAQCAtMTQ3LDYgKzE0OSw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fd2FpdGluZ0ZvckFzeW5jU3RhcnROb3RpZmljYXRp
b247CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVxdWly
ZXNMYXlvdXQgeyBmYWxzZSB9OwogCiAgICAgLy8gVXNlZCB0byBmbGFnIHdoZXRoZXIgd2Ugc2hv
dWxkIHJldmVydCB0byBwcmV2aW91cyBidWdneQogICAgIC8vIGJlaGF2aW9yIG9mIGFsbG93aW5n
IG5ldyB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucyB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggNzdkMTgyMDVk
MTEyNmQ0ZmQ4M2M3YjlmY2Q5ODRhYzk0NTljZGQzZi4uMzBiN2IzYjhiMmNjZGMzMTQ4Njg2MzBj
MmU0NmRmOWE1Y2U2NGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zMzQsNiArMzM0LDcgQEAgYm9vbCBDb21w
b3NpdGVBbmltYXRpb246OmFuaW1hdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlclN0eWxlKiBjdXIKICAgICAgICAgICAgICAgICBhbmltYXRpb25TdGF0ZUNoYW5nZWQgPSB0
cnVlOwogCiAgICAgICAgICAgICBmb3JjZVN0YWNraW5nQ29udGV4dCB8PSBkaWRCbGVuZFN0eWxl
ICYmIGtleWZyYW1lQW5pbS0+dHJpZ2dlcnNTdGFja2luZ0NvbnRleHQoKTsKKyAgICAgICAgICAg
IG1faGFzQW5pbWF0aW9uVGhhdERlcGVuZHNPbkxheW91dCB8PSBrZXlmcmFtZUFuaW0tPmRlcGVu
ZHNPbkxheW91dCgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oCmluZGV4IDUzNDJjN2RlMDBmNmJi
YTljMTA5NTQ4Y2I3NTVjZmUyOTMxNTQ1ZjMuLmIyMTM4Y2Q1ZmI4NGYxZTYyMDFkNTUwZWY4MTdm
ODQ0MmIzOTA2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c1Njcm9sbFRyaWdnZXJlZEFuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2Nyb2xsVHJp
Z2dlcmVkQW5pbWF0aW9uOyB9CiAjZW5kaWYKIAorICAgIGJvb2wgaGFzQW5pbWF0aW9uVGhhdERl
cGVuZHNPbkxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQW5pbWF0aW9uVGhhdERlcGVuZHNP
bkxheW91dDsgfQorCiBwcml2YXRlOgogICAgIENvbXBvc2l0ZUFuaW1hdGlvbihDU1NBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZSYpOwogCkBAIC05OCw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IEFuaW1hdGlvbk5hbWVNYXAgbV9rZXlmcmFtZUFuaW1hdGlvbnM7CiAgICAgVmVjdG9yPEF0b21p
Y1N0cmluZ0ltcGwqPiBtX2tleWZyYW1lQW5pbWF0aW9uT3JkZXJNYXA7CiAgICAgYm9vbCBtX3N1
c3BlbmRlZDsKKyAgICBib29sIG1faGFzQW5pbWF0aW9uVGhhdERlcGVuZHNPbkxheW91dCB7IGZh
bHNlIH07CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCiAgICAgYm9vbCBtX2hh
c1Njcm9sbFRyaWdnZXJlZEFuaW1hdGlvbiB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRleCA0
ZmZmMTFjZjc3MzcyMzk1NjY1YTIxYTc5YmI3MTI3N2M4MTQwNDBmLi4wMGY3MmE5ZWZmZjlhNjI5
ZmVkNDUwMzBmNDVhYTg1MjE1NTZjMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJXaWxsQ2hhbmdlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01OCw2ICs1OSw3IEBAIEtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgUmVuZGVyRWxlbWVudCoKICAgICBjaGVj
a0Zvck1hdGNoaW5nQmFja2Ryb3BGaWx0ZXJGdW5jdGlvbkxpc3RzKCk7CiAjZW5kaWYKICAgICBj
b21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CisgICAgY29tcHV0ZUxheW91dERlcGVuZGVu
Y3koKTsKIH0KIAogS2V5ZnJhbWVBbmltYXRpb246On5LZXlmcmFtZUFuaW1hdGlvbigpCkBAIC03
Nyw2ICs3OSwzMyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpjb21wdXRlU3RhY2tpbmdDb250
ZXh0SW1wYWN0KCkKICAgICB9CiB9CiAKK3ZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmNvbXB1dGVM
YXlvdXREZXBlbmRlbmN5KCkKK3sKKyAgICBpZiAoIW1fa2V5ZnJhbWVzLmNvbnRhaW5zUHJvcGVy
dHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3Qg
bnVtS2V5ZnJhbWVzID0gbV9rZXlmcmFtZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtS2V5ZnJhbWVzOyBpKyspIHsKKyAgICAgICAgYXV0byoga2V5ZnJhbWVTdHlsZSA9
IG1fa2V5ZnJhbWVzW2ldLnN0eWxlKCk7CisgICAgICAgIGlmICgha2V5ZnJhbWVTdHlsZSkgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoa2V5ZnJhbWVTdHlsZS0+aGFzVHJhbnNmb3JtKCkpIHsK
KyAgICAgICAgICAgIGF1dG8mIHRyYW5zZm9ybU9wZXJhdGlvbnMgPSBrZXlmcmFtZVN0eWxlLT50
cmFuc2Zvcm0oKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBvcGVyYXRpb24gOiB0cmFuc2Zvcm1P
cGVyYXRpb25zLm9wZXJhdGlvbnMoKSkgeworICAgICAgICAgICAgICAgIGlmIChvcGVyYXRpb24t
PmlzVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gdHJhbnNsYXRpb24gPSBkb3duY2FzdDxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b24+KG9wZXJhdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlv
bi0+eCgpLmlzUGVyY2VudCgpIHx8IHRyYW5zbGF0aW9uLT55KCkuaXNQZXJjZW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZGVwZW5kc09uTGF5b3V0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBLZXlm
cmFtZUFuaW1hdGlvbjo6ZmV0Y2hJbnRlcnZhbEVuZHBvaW50c0ZvclByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlKiYgZnJvbVN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSomIHRvU3R5bGUsIGRvdWJsZSYgcHJvZykgY29uc3QKIHsKICAgICBzaXplX3QgbnVt
S2V5ZnJhbWVzID0gbV9rZXlmcmFtZXMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKaW5kZXggNGUwMDBhMTM5ODI2MDgwZmQ5
YWU2ZWFkNWUzYTQ0YzI4NmRjY2QxMy4uZDIyMGVkZjRlMjkyM2VjNDE2MjJjMjhiMjA1MTlmMjU5
MjA2MDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJh
bWVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5oCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0FuaW1h
dGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCiAgICAgYm9vbCB0cmlnZ2Vy
c1N0YWNraW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcnNTdGFja2luZ0NvbnRl
eHQ7IH0KLSAgICAKKyAgICBib29sIGRlcGVuZHNPbkxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVwZW5kc09uTGF5b3V0OyB9CisKICAgICB2b2lkIHNldFVuYW5pbWF0ZWRTdHlsZShzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKSB7IG1fdW5hbmltYXRlZFN0eWxlID0gV1RGTW92
ZShzdHlsZSk7IH0KICAgICBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmFuaW1hdGVkU3R5bGUuZ2V0KCk7IH0KIApAQCAtODMsNiArODQsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBjb21wdXRlRXh0ZW50T2ZBbmltYXRpb25Gb3JNYXRjaGluZ1RyYW5z
Zm9ybUxpc3RzKGNvbnN0IEZsb2F0UmVjdCYgcmVuZGVyZXJCb3gsIExheW91dFJlY3QmKSBjb25z
dDsKIAogICAgIHZvaWQgY29tcHV0ZVN0YWNraW5nQ29udGV4dEltcGFjdCgpOworICAgIHZvaWQg
Y29tcHV0ZUxheW91dERlcGVuZGVuY3koKTsKICAgICB2b2lkIHJlc29sdmVLZXlmcmFtZVN0eWxl
cygpOwogICAgIHZvaWQgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKICAgICB2b2lk
IGNoZWNrRm9yTWF0Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKCk7CkBAIC0xMDIsNiArMTA0LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9zdGFydEV2ZW50RGlzcGF0Y2hlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0IHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZGVwZW5kc09uTGF5b3V0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA0M2JiODhjZWJiYzgxMTFiN2NiN2U1MjVmMWZkN2FjZTdkMTNjMmU4Li5kN2Fj
YWI1MDQ0NzE3NzUyOWM4MTJkZTk1ZDRmNGNjNzI3YjgyYTk3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTctMDUtMTggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAg
IFRyYW5zZm9ybSBtaXNwbGFjZXMgZWxlbWVudCA1MCUgb2YgdGhlIHRpbWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjMwMAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjk4MzU2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQSB0ZXN0IGNhc2Ugd2hpY2ggaGFzIGFuIGFuaW1hdGlvbiB0aGF0IHJl
bGllcyBvbgorICAgICAgICB0cmFuc2xhdGlvbiBwZXJjZW50YWdlcy4gSWYgYWxsIGdvZXMgd2Vs
bCwgdGhlCisgICAgICAgIGFuaW1hdGluZyBlbGVtZW50IHdpbGwgYmUgY29tcGxldGVseSBvYnNj
dXJlZC4KKworICAgICAgICAqIGFuaW1hdGlvbnMvbmVlZHMtbGF5b3V0LWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvbmVlZHMtbGF5b3V0Lmh0bWw6IEFkZGVkLgor
CiAyMDE3LTA1LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBVbnNldCBhY3RpdmUgbWVkaWEgY2FwdHVyZSBzb3VyY2Ugd2hlbiBzdG9wcGVkIGNh
cHR1cmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9uZWVkcy1sYXlvdXQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbmVlZHMtbGF5b3V0LWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRkYjc2OGM1OTJiMmE3NzE3NTBhNGI2YWFiMjNlNTQ1Mjc2
NGJmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbmVlZHMtbGF5
b3V0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPHN0eWxlPgorICAgICNvdmVybGF5
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxMDBweDsKKyAg
ICAgICAgdG9wOiAxMDBweDsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDBweCk7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2
IGlkPSJvdmVybGF5Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL25lZWRzLWxheW91
dC5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9uZWVkcy1sYXlvdXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kN2I5MzBkZmYzYzM2MzRkN2I5YWZjMGJjMmRhZjI3MDAyMjc4MTMyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9uZWVkcy1sYXlvdXQuaHRtbApAQCAtMCww
ICsxLDU3IEBACis8c3R5bGU+CisgICAgI292ZXJsYXkgeworICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICB0b3A6IDEwMHB4OworICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHRyYW5zZm9y
bTogdHJhbnNsYXRlKDEwMHB4KTsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cisg
ICAgfQorCisgICAgI2NvbnRhaW5lciAuY2hpbGQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgIGxlZnQ6IDE1MHB4OworICAgICAgICB0b3A6IDE1MHB4OworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IHJlZDsKKyAgICAgICAgYW5pbWF0aW9uOiA1cyBhbmltOworICAgIH0KKworICAgIEBr
ZXlmcmFtZXMgYW5pbSB7CisgICAgICAgIDAlIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybTogdHJh
bnNsYXRlKDgwJSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgMTAwJSB7CisgICAgICAgICAgICB0
cmFuc2Zvcm06IHRyYW5zbGF0ZSg4MCUsIDEwMHB4KTsKKyAgICAgICAgfQorICAgIH0KKworPC9z
dHlsZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIGVsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOworICAgIHZhciBjaGlsZCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworCisgICAgY2hpbGQuY2xhc3NMaXN0LmFkZCgiY2hpbGQi
KTsKKyAgICBlbC5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgIGNoaWxkLnN0eWxlLndlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSA9ICJwYXVz
ZWQiOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgeworICAgIHNldFRpbWVvdXQodGVzdCwgMTApOworfSwg
ZmFsc2UpOworPC9zY3JpcHQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2
PgorICAgIDxkaXYgaWQ9Im92ZXJsYXkiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="331634"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>