<?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>187839</bug_id>
          
          <creation_ts>2018-07-19 18:38:40 -0700</creation_ts>
          <short_desc>Hardware fill-forwards animation and transitions don&apos;t interact correctly</short_desc>
          <delta_ts>2020-05-26 12:12:30 -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>Animations</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1443641</commentid>
    <comment_count>0</comment_count>
      <attachid>345415</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-07-19 18:38:40 -0700</bug_when>
    <thetext>Created attachment 345415
Testcase.html

If you have a fill-forwards transform animation, and a transform transition on the same element, then we&apos;ll show the transition when we should not. See attached test case.

Does not happen with software animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443642</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-19 18:39:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/42410412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589840</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2019-11-13 06:38:34 -0800</bug_when>
    <thetext>Our behavior with the old engine differs from what Firefox and Chrome do where hovering the moving element does not alter its left-to-right animation. This is not fixed with the new engine either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613890</commentid>
    <comment_count>3</comment_count>
      <attachid>389497</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-03 02:00:43 -0800</bug_when>
    <thetext>Created attachment 389497
Another non-interactive test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654386</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-20 05:29:38 -0700</bug_when>
    <thetext>The issue here is that we apply accelerated effects regardless of whether they are at the top of the effect stack for a given property. I think the easiest way to fix this is to only run an accelerated effect if it is at the top of the effect stack for all of its target properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654392</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-20 05:59:30 -0700</bug_when>
    <thetext>There may however be another orthogonal issue: whether the transition should be started at all. Currently, this test runs differently in Safari, Chrome and Firefox.

In Safari, this starts a transition from `transform: none` to `transform: translate(100px,100px)`. Safari is only considering unanimated style values.

In Firefox, this starts a transition from `transform: none` to `transform: translateX(25px)`. Firefox is considering the animated value.

In Chrome, no transition starts, I’m not sure why because the current style is definitely different from the style during the previous style change, animated or otherwise.

Selectively quoting from the CSS Transitions spec (https://www.w3.org/TR/css-transitions-1/#starting):

&quot;Otherwise, define the before-change style as the computed values of all properties on the element as of the previous style change event, except with any styles derived from declarative animations such as CSS Transitions, CSS Animations, and SMIL Animations updated to the current time.&quot;

My reading of this is that the before-change style at ~500ms should be the value set by the currently-running CSS Animation at ~500ms, so `transform: translateX(25px)`.

&quot;Likewise, define the after-change style as the computed values of all properties on the element based on the information known at the start of that style change event, but using the computed values of the animation-* properties from the before-change style, excluding any styles from CSS Transitions in the computation, and inheriting from the after-change style of the parent.&quot;

This sentence really did my head in :) I think it means that the after-change style is also set by the currently-running CSS Animation at ~500ms, so `transform: translateX(25px)` as well.

This would lead me to believe that Chrome has the correct behavior here and that there is no CSS Transition started since both the before-change and after-change styles have the same value for `transform`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655874</commentid>
    <comment_count>6</comment_count>
      <attachid>400202</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-25 09:04:53 -0700</bug_when>
    <thetext>Created attachment 400202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655877</commentid>
    <comment_count>7</comment_count>
      <attachid>400204</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-25 09:07:17 -0700</bug_when>
    <thetext>Created attachment 400204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655895</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-25 11:26:31 -0700</bug_when>
    <thetext>So it seems only the new test fails with this patch. I’ll find a way to fix this and send a patch for review tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656074</commentid>
    <comment_count>9</comment_count>
      <attachid>400256</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-26 09:56:05 -0700</bug_when>
    <thetext>Created attachment 400256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656095</commentid>
    <comment_count>10</comment_count>
      <attachid>400256</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-26 10:49:45 -0700</bug_when>
    <thetext>Comment on attachment 400256
Patch

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

&gt; Source/WebCore/animation/AnimationTimeline.cpp:389
&gt; +        if (animation &amp;&amp; animation-&gt;isRelevant()) {

isRelevant() is so vague. Relevant to whom?

&gt; Source/WebCore/animation/ElementAnimationRareData.h:55
&gt; +    void setLastStyleChangeEventStyle(std::unique_ptr&lt;const RenderStyle&gt; style) { m_lastStyleChangeEventStyle = WTFMove(style); }

std::unique_ptr&lt;const RenderStyle&gt;&amp;&amp;

&gt; Source/WebCore/dom/Element.h:506
&gt; +    void setLastStyleChangeEventStyle(std::unique_ptr&lt;const RenderStyle&gt;);

std::unique_ptr&lt;const RenderStyle&gt;&amp;&amp;

&gt; LayoutTests/webanimations/updating-property-targeted-by-css-transition-during-css-animation.html:4
&gt; +&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;

Just &lt;style&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656114</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-26 11:52:26 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #10)
&gt; Comment on attachment 400256 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400256&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/AnimationTimeline.cpp:389
&gt; &gt; +        if (animation &amp;&amp; animation-&gt;isRelevant()) {
&gt; 
&gt; isRelevant() is so vague. Relevant to whom?

This is a term defined by the Web Animations spec, see https://drafts.csswg.org/web-animations-1/#relevant-animation.

I&apos;ll fix all of the other comments in the commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656117</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-26 12:12:30 -0700</bug_when>
    <thetext>Committed r262154: &lt;https://trac.webkit.org/changeset/262154&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>345415</attachid>
            <date>2018-07-19 18:38:40 -0700</date>
            <delta_ts>2018-07-19 18:38:40 -0700</delta_ts>
            <desc>Testcase.html</desc>
            <filename>offscreen-fill-forwards-animation.html</filename>
            <type>text/html</type>
            <size>757</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgICA8c3R5bGU+CiAgICAgICAgQGtleWZy
YW1lcyBtb3ZlCiAgICAgICAgewogICAgICAgICAgICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xh
dGUzZCgwLCAwLCAwKTsgfQogICAgICAgICAgICB0byAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUz
ZCgxMDBweCwgMCwgMCk7IH0KICAgICAgICB9CgogICAgICAgIC5ib3gKICAgICAgICB7CiAgICAg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiA1MHB4OwogICAgICAg
ICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4OwogICAg
ICAgICAgICBhbmltYXRpb246bW92ZSBsaW5lYXIgMnM7CiAgICAgICAgICAgIGFuaW1hdGlvbi1m
aWxsLW1vZGU6Zm9yd2FyZHM7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxczsK
ICAgICAgICB9CiAgICAgICAgLmJveDpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwcHgsIDEwMHB4
LCAwKTsKICAgICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNjcmlwdD4KICAgICAgICAKICAgIDwv
c2NyaXB0Pgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSIgYm94Ij4KICAgIGFzZAo8L2Rpdj4K
PC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>389497</attachid>
            <date>2020-02-03 02:00:43 -0800</date>
            <delta_ts>2020-02-03 02:00:43 -0800</delta_ts>
            <desc>Another non-interactive test case</desc>
            <filename>transition-during-animation-fill-remove-accelerated.html</filename>
            <type>text/html</type>
            <size>1005</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHN0eWxlPgogICAgQGtleWZyYW1lcyBtb3Zl
IHsKICAgICAgICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsgfQogICAg
ICAgIHRvICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMHB4LCAwLCAwKTsgfQogICAgfQoK
ICAgIGRpdiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNTBweDsK
ICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibGFjazsKICAgICAgICBhbmltYXRpb246IG1vdmUgbGluZWFyIDJzOwog
ICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxczsKICAgIH0KCiAgICBkaXY6aG92ZXIsIGRp
di50cmFuc2l0aW9ucyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKICAgICAgICB0
cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMHB4LCAxMDBweCwgMCk7CiAgICB9Cgo8L3N0eWxlPgo8
L2hlYWQ+Cjxib2R5Pgo8ZGl2PjwvZGl2Pgo8c2NyaXB0PgoKc2V0VGltZW91dCgoKSA9PiB7CiAg
ICBjb25zb2xlLmxvZygiQXR0ZW1wdGluZyB0byBhcHBseSB0cmFuc2l0aW9uIik7CiAgICBjb25z
dCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKTsKICAgIHRhcmdldC5jbGFz
c0xpc3QuYWRkKCJ0cmFuc2l0aW9ucyIpOwogICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInRy
YW5zaXRpb25zdGFydCIsIGV2ZW50ID0+IGNvbnNvbGUubG9nKGV2ZW50LnR5cGUpLCB7IG9uY2U6
IHRydWUgfSk7CiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIGV2
ZW50ID0+IHsKICAgICAgICBjb25zb2xlLmxvZyhldmVudC50eXBlKTsKICAgICAgICB0YXJnZXQu
Y2xhc3NMaXN0LnJlbW92ZSgidHJhbnNpdGlvbnMiKTsKICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsK
fSwgNTAwKTsKCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400202</attachid>
            <date>2020-05-25 09:04:53 -0700</date>
            <delta_ts>2020-05-25 09:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187839-20200525180451.patch</filename>
            <type>text/plain</type>
            <size>18433</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ0ZDAzMTg4ZTZjMWI5
NzgzMWQ4OGYwZDhhNWRlMjgyYjgwY2NkOC4uNjZhYzBhZTNmYTIyZjVhMTlhMGRmOGM4YmJmNTBh
MWMyOWM3M2UyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTI1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZHdhcmUgZmlsbC1m
b3J3YXJkcyBhbmltYXRpb24gYW5kIHRyYW5zaXRpb25zIGRvbid0IGludGVyYWN0IGNvcnJlY3Rs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
d2ViYW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10YXJnZXRlZC1ieS1jc3MtdHJhbnNpdGlv
bi1kdXJpbmctY3NzLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0
aW9uVGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
blRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JFbGVtZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaDoKKyAg
ICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmlt
YXRlZEVsZW1lbnRVcGRhdGUpOgorCiAyMDIwLTA1LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzb21lIG1pc3NpbmcgaW5jbHVkZXMgZHVl
IHRvIHVuaWZpZWQgc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHAKaW5kZXggNGJiOTM1ZTU2ZThhNmViNDUxNzcwNjJiZWYxODM0OWI4MThj
NDAxMS4uMTQ2ZjEzZmVkMDA2Njc4NTBmYWU0NmUwNDE2N2RmNTM3YTEwYjEwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCkBAIC0yMjcsMjEg
KzIyNywyMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRDb25zaWRlckFuaW1hdGlvbihFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiB7CiAg
ICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZl
Y3RTdGFjaygpOwogCiAgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGlu
ZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlv
bnMgYW5kIGRpc3JlZ2FyZCBuZXcgb25lcy4KLSAgICBpZiAoY3VycmVudFN0eWxlICYmIGN1cnJl
bnRTdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIGFmdGVyQ2hhbmdlU3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7CisgICAgaWYgKGN1cnJlbnRTdHls
ZSAmJiBjdXJyZW50U3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBuZXdT
dHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChhdXRv
JiBjc3NBbmltYXRpb24gOiBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKSkKICAg
ICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIGtleWZy
YW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0aW9uTGlzdChudWxscHRyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGN1cnJlbnRBbmltYXRpb25MaXN0ID0gYWZ0ZXJDaGFu
Z2VTdHlsZS5hbmltYXRpb25zKCk7CisgICAgYXV0byogY3VycmVudEFuaW1hdGlvbkxpc3QgPSBu
ZXdTdHlsZS5hbmltYXRpb25zKCk7CiAgICAgYXV0byogcHJldmlvdXNBbmltYXRpb25MaXN0ID0g
a2V5ZnJhbWVFZmZlY3RTdGFjay5jc3NBbmltYXRpb25MaXN0KCk7Ci0gICAgaWYgKHByZXZpb3Vz
QW5pbWF0aW9uTGlzdCAmJiAhcHJldmlvdXNBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkgJiYgYWZ0
ZXJDaGFuZ2VTdHlsZS5oYXNBbmltYXRpb25zKCkgJiYgKihwcmV2aW91c0FuaW1hdGlvbkxpc3Qp
ID09ICooYWZ0ZXJDaGFuZ2VTdHlsZS5hbmltYXRpb25zKCkpKQorICAgIGlmIChwcmV2aW91c0Fu
aW1hdGlvbkxpc3QgJiYgIXByZXZpb3VzQW5pbWF0aW9uTGlzdC0+aXNFbXB0eSgpICYmIG5ld1N0
eWxlLmhhc0FuaW1hdGlvbnMoKSAmJiAqKHByZXZpb3VzQW5pbWF0aW9uTGlzdCkgPT0gKihuZXdT
dHlsZS5hbmltYXRpb25zKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBDU1NBbmltYXRpb25D
b2xsZWN0aW9uIG5ld0FuaW1hdGlvbnM7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBBbmltYXRp
b25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgUmUKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFmb3VuZE1hdGNo
aW5nQW5pbWF0aW9uKQotICAgICAgICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1h
dGlvbjo6Y3JlYXRlKGVsZW1lbnQsIGN1cnJlbnRBbmltYXRpb24sIGN1cnJlbnRTdHlsZSwgYWZ0
ZXJDaGFuZ2VTdHlsZSkpOworICAgICAgICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0Fu
aW1hdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIGN1cnJlbnRBbmltYXRpb24sIGN1cnJlbnRTdHlsZSwg
bmV3U3R5bGUpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzY1LDEwICszNjUsMTAgQEAgc3Rh
dGljIHZvaWQgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEhhc2hTZXQKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1l
bnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBjb25zdCBNb25vdG9uaWNU
aW1lIGdlbmVyYXRpb25UaW1lKQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJh
bnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lKQog
ewogICAgIGNvbnN0IEFuaW1hdGlvbiogbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uID0gbnVsbHB0
cjsKLSAgICBpZiAoYXV0byogdHJhbnNpdGlvbnMgPSBhZnRlckNoYW5nZVN0eWxlLnRyYW5zaXRp
b25zKCkpIHsKKyAgICBpZiAoYXV0byogdHJhbnNpdGlvbnMgPSBuZXdTdHlsZS50cmFuc2l0aW9u
cygpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNpdGlvbnMtPnNpemUo
KTsgKytpKSB7CiAgICAgICAgICAgICBhdXRvJiBiYWNraW5nQW5pbWF0aW9uID0gdHJhbnNpdGlv
bnMtPmFuaW1hdGlvbihpKTsKICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uTWF0Y2hlc1Byb3Bl
cnR5KGJhY2tpbmdBbmltYXRpb24sIHByb3BlcnR5KSkKQEAgLTM3NiwyNiArMzc2LDIxIEBAIHZv
aWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFBy
b3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBhdXRvKiBrZXlm
cmFtZUVmZmVjdCA9IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQs
IHByb3BlcnR5KTsKKwogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNp
dGlvbnMtMS8jYmVmb3JlLWNoYW5nZS1zdHlsZQogICAgIC8vIERlZmluZSB0aGUgYmVmb3JlLWNo
YW5nZSBzdHlsZSBhcyB0aGUgY29tcHV0ZWQgdmFsdWVzIG9mIGFsbCBwcm9wZXJ0aWVzIG9uIHRo
ZSBlbGVtZW50IGFzIG9mIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQsIGV4Y2VwdCB3
aXRoCiAgICAgLy8gYW55IHN0eWxlcyBkZXJpdmVkIGZyb20gZGVjbGFyYXRpdmUgYW5pbWF0aW9u
cyBzdWNoIGFzIENTUyBUcmFuc2l0aW9ucywgQ1NTIEFuaW1hdGlvbnMsIGFuZCBTTUlMIEFuaW1h
dGlvbnMgdXBkYXRlZCB0byB0aGUgY3VycmVudCB0aW1lLgotICAgIGJvb2wgaGFzUnVubmluZ1Ry
YW5zaXRpb24gPSBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3Bl
cnR5KTsKLSAgICBhdXRvIGJlZm9yZUNoYW5nZVN0eWxlID0gWyZdKCkgewotICAgICAgICBpZiAo
aGFzUnVubmluZ1RyYW5zaXRpb24gJiYgQ1NTUHJvcGVydHlBbmltYXRpb246OmFuaW1hdGlvbk9m
UHJvcGVydHlJc0FjY2VsZXJhdGVkKHByb3BlcnR5KSkgewotICAgICAgICAgICAgLy8gSW4gY2Fz
ZSB3ZSBoYXZlIGFuIGFjY2VsZXJhdGVkIHRyYW5zaXRpb24gcnVubmluZyBmb3IgdGhpcyBlbGVt
ZW50LCB3ZSBuZWVkIHRvIGdldCBpdHMgY29tcHV0ZWQgc3R5bGUgYXMgdGhlIGJlZm9yZS1jaGFu
Z2Ugc3R5bGUKLSAgICAgICAgICAgIC8vIHNpbmNlIG90aGVyd2lzZSB0aGUgYW5pbWF0ZWQgdmFs
dWUgZm9yIHRoYXQgcHJvcGVydHkgd29uJ3QgYmUgdmlzaWJsZS4KLSAgICAgICAgICAgIGF1dG8q
IHJ1bm5pbmdUcmFuc2l0aW9uID0gZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KCkuZ2V0KHByb3BlcnR5KTsKLSAgICAgICAgICAgIGlmIChpczxLZXlmcmFtZUVmZmVj
dD4ocnVubmluZ1RyYW5zaXRpb24tPmVmZmVjdCgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8m
IGtleWZyYW1lRWZmZWN0ID0gKmRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihydW5uaW5nVHJhbnNp
dGlvbi0+ZWZmZWN0KCkpOwotICAgICAgICAgICAgICAgIGlmIChrZXlmcmFtZUVmZmVjdC5pc1J1
bm5pbmdBY2NlbGVyYXRlZCgpKSB7CisgICAgYXV0byBiZWZvcmVDaGFuZ2VTdHlsZSA9IFsmXSgp
IC0+IGNvbnN0IFJlbmRlclN0eWxlIHsKKyAgICAgICAgaWYgKGtleWZyYW1lRWZmZWN0KSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogYW5pbWF0aW9uID0ga2V5ZnJhbWVFZmZlY3QtPmFuaW1hdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi0+aXNSZWxldmFudCgpICYmIGlz
PERlY2xhcmF0aXZlQW5pbWF0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PERlY2xhcmF0aXZl
QW5pbWF0aW9uPigqYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50KCkgPT0gJmVsZW1lbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25l
KGN1cnJlbnRTdHlsZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmdUcmFuc2l0aW9uLT5y
ZXNvbHZlKGFuaW1hdGVkU3R5bGUpOworICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tPnJl
c29sdmUoYW5pbWF0ZWRTdHlsZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbmltYXRl
ZFN0eWxlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0g
ICAgICAgIGlmIChhdXRvKiBrZXlmcmFtZUVmZmVjdCA9IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVu
dEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5KSkgewogICAgICAgICAgICAgLy8gSWYgd2Ug
YWxyZWFkeSBoYXZlIGEga2V5ZnJhbWUgZWZmZWN0IHRhcmdldGluZyB0aGlzIHByb3BlcnR5LCB3
ZSBzaG91bGQgdXNlIGl0cyB1bmFuaW1hdGVkIHN0eWxlIHRvIGRldGVybWluZSB3aGF0IHRoZSBw
b3RlbnRpYWwKICAgICAgICAgICAgIC8vIHN0YXJ0IHZhbHVlIG9mIHRoZSB0cmFuc2l0aW9uIHNo
b3VkIGJlIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGFjY291bnQgZm9yIGFuaW1hdGVkIHZh
bHVlcyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBibGVuZGVkIG9udG8KICAgICAgICAgICAgIC8vIHRo
ZSBzdHlsZSBhcHBsaWVkIGR1cmluZyB0aGUgbGFzdCBzdHlsZSByZXNvbHV0aW9uLgpAQCAtNDA2
LDE0ICs0MDEsMzQgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlv
bnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUKICAgICAgICAgICAgIC8vIGhh
ZCBhIGNoYW5jZSB0byBhcHBseSBpdHNlbGYgd2l0aCBhIG5vbi1udWxsIHByb2dyZXNzLiBJbiB0
aGlzIGNhc2UsIHRoZSBiZWZvcmUtY2hhbmdlIGFuZCBhZnRlci1jaGFuZ2Ugc3R5bGVzIHNob3Vs
ZCBiZSB0aGUKICAgICAgICAgICAgIC8vIHNhbWUgaW4gb3JkZXIgdG8gcHJldmVudCBhIHRyYW5z
aXRpb24gZnJvbSBiZWluZyB0cmlnZ2VyZWQgYXMgdGhlIHVuYW5pbWF0ZWQgc3R5bGUgZm9yIHRo
aXMga2V5ZnJhbWUgZWZmZWN0IHdpbGwgbW9zdCBsaWtlbHkKICAgICAgICAgICAgIC8vIGJlIHRo
aXMgYWZ0ZXItY2hhbmdlIHN0eWxlLCBvciBhbnkgZnV0dXJlIHN0eWxlIGNoYW5nZSB0aGF0IG1h
eSBoYXBwZW4gYmVmb3JlIHRoZSBrZXlmcmFtZSBlZmZlY3Qgc3RhcnRzIGJsZW5kaW5nIGFuaW1h
dGVkIHZhbHVlcy4KLSAgICAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xvbmUoYWZ0ZXJD
aGFuZ2VTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0
eWxlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEluIGFueSBvdGhlciBzY2VuYXJpbywgdGhl
IGJlZm9yZS1jaGFuZ2Ugc3R5bGUgc2hvdWxkIGJlIHRoZSBwcmV2aW91c2x5IHJlc29sdmVkIHN0
eWxlIGZvciB0aGlzIGVsZW1lbnQuCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xvbmUo
Y3VycmVudFN0eWxlKTsKICAgICB9KCk7CiAKLSAgICBpZiAoIWhhc1J1bm5pbmdUcmFuc2l0aW9u
CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2l0aW9ucy0xLyNhZnRl
ci1jaGFuZ2Utc3R5bGUKKyAgICAvLyBMaWtld2lzZSwgZGVmaW5lIHRoZSBhZnRlci1jaGFuZ2Ug
c3R5bGUgYXMgdGhlIGNvbXB1dGVkIHZhbHVlcyBvZiBhbGwgcHJvcGVydGllcyBvbiB0aGUgZWxl
bWVudCBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24ga25vd24gYXQgdGhlIHN0YXJ0CisgICAgLy8g
b2YgdGhhdCBzdHlsZSBjaGFuZ2UgZXZlbnQsIGJ1dCB1c2luZyB0aGUgY29tcHV0ZWQgdmFsdWVz
IG9mIHRoZSBhbmltYXRpb24tKiBwcm9wZXJ0aWVzIGZyb20gdGhlIGJlZm9yZS1jaGFuZ2Ugc3R5
bGUsIGV4Y2x1ZGluZyBhbnkgc3R5bGVzCisgICAgLy8gZnJvbSBDU1MgVHJhbnNpdGlvbnMgaW4g
dGhlIGNvbXB1dGF0aW9uLCBhbmQgaW5oZXJpdGluZyBmcm9tIHRoZSBhZnRlci1jaGFuZ2Ugc3R5
bGUgb2YgdGhlIHBhcmVudC4gTm90ZSB0aGF0IHRoaXMgbWVhbnMgdGhlIGFmdGVyLWNoYW5nZQor
ICAgIC8vIHN0eWxlIGRvZXMgbm90IGRpZmZlciBmcm9tIHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxl
IGR1ZSB0byBuZXdseSBjcmVhdGVkIG9yIGNhbmNlbGVkIENTUyBBbmltYXRpb25zLgorICAgIGF1
dG8gYWZ0ZXJDaGFuZ2VTdHlsZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlclN0eWxlIHsKKyAgICAg
ICAgaWYgKGtleWZyYW1lRWZmZWN0KSB7CisgICAgICAgICAgICBpZiAoYXV0byogYW5pbWF0aW9u
ID0ga2V5ZnJhbWVFZmZlY3QtPmFuaW1hdGlvbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFu
aW1hdGlvbi0+aXNSZWxldmFudCgpICYmIGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBk
b3duY2FzdDxDU1NBbmltYXRpb24+KCphbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSA9PSAmZWxl
bWVudCkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y2xvbmUobmV3U3R5bGUpOworICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tPnJl
c29sdmUoYW5pbWF0ZWRTdHlsZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbmltYXRl
ZFN0eWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEluIGFueSBvdGhlciBzY2VuYXJpbywgdGhlIGFmdGVyLWNoYW5nZSBzdHlsZSBz
aG91bGQgYmUgdGhlIHByZXZpb3VzbHkgcmVzb2x2ZWQgc3R5bGUgZm9yIHRoaXMgZWxlbWVudC4K
KyAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZShuZXdTdHlsZSk7CisgICAgfSgpOwor
CisgICAgaWYgKCFlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3Bl
cnR5KQogICAgICAgICAmJiAhQ1NTUHJvcGVydHlBbmltYXRpb246OnByb3BlcnRpZXNFcXVhbChw
cm9wZXJ0eSwgJmJlZm9yZUNoYW5nZVN0eWxlLCAmYWZ0ZXJDaGFuZ2VTdHlsZSkKICAgICAgICAg
JiYgQ1NTUHJvcGVydHlBbmltYXRpb246OmNhblByb3BlcnR5QmVJbnRlcnBvbGF0ZWQocHJvcGVy
dHksICZiZWZvcmVDaGFuZ2VTdHlsZSwgJmFmdGVyQ2hhbmdlU3R5bGUpCiAgICAgICAgICYmICFw
cm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFm
dGVyQ2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KCkpCkBAIC00NDYsNyArNDYxLDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRl
Q1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUKICAgICAg
ICAgZWxlbWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5yZW1vdmUo
cHJvcGVydHkpOwogICAgIH0KIAotICAgIGhhc1J1bm5pbmdUcmFuc2l0aW9uID0gZWxlbWVudC5o
YXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgYm9vbCBoYXNS
dW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVy
dHkocHJvcGVydHkpOwogICAgIGlmICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgZWxlbWVudC5o
YXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5KSkgJiYgIW1hdGNoaW5n
QmFja2luZ0FuaW1hdGlvbikgewogICAgICAgICAvLyAzLiBJZiB0aGUgZWxlbWVudCBoYXMgYSBy
dW5uaW5nIHRyYW5zaXRpb24gb3IgY29tcGxldGVkIHRyYW5zaXRpb24gZm9yIHRoZSBwcm9wZXJ0
eSwgYW5kIHRoZXJlIGlzIG5vdCBhIG1hdGNoaW5nIHRyYW5zaXRpb24tcHJvcGVydHkKICAgICAg
ICAgLy8gICAgdmFsdWUsIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgY2FuY2VsIHRoZSBydW5u
aW5nIHRyYW5zaXRpb24gb3IgcmVtb3ZlIHRoZSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmcm9tIHRo
ZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRpb25zLgpAQCAtNTE2LDEwICs1MzEsMTAgQEAgdm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJv
cGVydHkoRWxlbWVudCYgZWxlbWUKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VT
dHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiB7CiAgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1l
bnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBh
bGwgb2YgaXRzIHRyYW5zaXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCi0gICAgaWYgKGN1
cnJlbnRTdHlsZS5oYXNUcmFuc2l0aW9ucygpICYmIGN1cnJlbnRTdHlsZS5kaXNwbGF5KCkgIT0g
RGlzcGxheVR5cGU6Ok5vbmUgJiYgYWZ0ZXJDaGFuZ2VTdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6Ok5vbmUpIHsKKyAgICBpZiAoY3VycmVudFN0eWxlLmhhc1RyYW5zaXRpb25zKCkgJiYg
Y3VycmVudFN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBuZXdTdHlsZS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGVsZW1lbnQuaGFz
UnVubmluZ1RyYW5zaXRpb25zKCkpIHsKICAgICAgICAgICAgIGF1dG8gcnVubmluZ1RyYW5zaXRp
b25zID0gZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CiAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFw
SXRlbSA6IHJ1bm5pbmdUcmFuc2l0aW9ucykKQEAgLTUzNyw3ICs1NTIsNyBAQCB2b2lkIEFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUgogICAgIGJvb2wgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsID0g
ZmFsc2U7CiAgICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiB0cmFuc2l0aW9uUHJvcGVydGllczsK
ICAgICBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGN1cnJlbnRTdHlsZSwgdHJh
bnNpdGlvblByb3BlcnRpZXMsIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCk7Ci0gICAg
Y29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShhZnRlckNoYW5nZVN0eWxlLCB0cmFu
c2l0aW9uUHJvcGVydGllcywgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKTsKKyAgICBj
b21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKG5ld1N0eWxlLCB0cmFuc2l0aW9uUHJv
cGVydGllcywgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKTsKIAogICAgIGlmICh0cmFu
c2l0aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpIHsKICAgICAgICAgYXV0byBudW1iZXJPZlByb3Bl
cnRpZXMgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Z2V0TnVtUHJvcGVydGllcygpOwpAQCAtNTQ2
LDEzICs1NjEsMTMgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlv
bnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFIKICAgICAgICAgICAgIGF1dG8g
cHJvcGVydHkgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Z2V0UHJvcGVydHlBdEluZGV4KHByb3Bl
cnR5SW5kZXgsIGlzU2hvcnRoYW5kKTsKICAgICAgICAgICAgIGlmIChpc1Nob3J0aGFuZCAmJiAq
aXNTaG9ydGhhbmQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSwg
Y3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBnZW5lcmF0aW9uVGltZSk7CisgICAgICAg
ICAgICB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShlbGVtZW50LCBw
cm9wZXJ0eSwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwgZ2VuZXJhdGlvblRpbWUpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKGF1dG8gcHJvcGVydHkgOiB0
cmFuc2l0aW9uUHJvcGVydGllcykKLSAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVt
ZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHksIGN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFu
Z2VTdHlsZSwgZ2VuZXJhdGlvblRpbWUpOworICAgICAgICB1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
ckVsZW1lbnRBbmRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSwgY3VycmVudFN0eWxlLCBuZXdT
dHlsZSwgZ2VuZXJhdGlvblRpbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCmluZGV4IDg1MWFkZDJk
MTY0ODVmYzcxOTNmODg3MDczZTMwM2VmOTU4ZTczZjcuLjA3NTQyNmQwYTljODcxODE4NWFlYjk1
NWEyMTg3MTY4N2Y0Y2QyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9B
bmltYXRpb25UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURl
Y2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJBbmltYXRpb24m
LCBFbGVtZW50Jik7CiAKICAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVs
ZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7Ci0gICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVs
ZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKKyAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRp
b25zRm9yRWxlbWVudChFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0
IEFuaW1hdGlvblRpbWVsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmNwcAppbmRleCBmMDgxZWE0YmY0MTNjMDcxNmU5YjBjNjgyMWVjMjhiMjNlZWFlYzVm
Li41MmE4ZmI1N2M5ZTAyZTIyZmQyMGM2NDhmNDY1OGJlZGNhYzBmOGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTEyMTYsOCArMTIxNiw3IEBA
IHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKICAg
ICBpZiAoIWNvbXB1dGVkVGltaW5nLnByb2dyZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1fdW5hbmltYXRlZFN0eWxlKQotICAgICAgICBtX3VuYW5pbWF0ZWRTdHlsZSA9IFJlbmRl
clN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CisgICAgbV91bmFuaW1hdGVkU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmVQdHIodGFyZ2V0U3R5bGUpOwogCiAgICAgc2V0QW5pbWF0ZWRQcm9w
ZXJ0aWVzSW5TdHlsZSh0YXJnZXRTdHlsZSwgY29tcHV0ZWRUaW1pbmcucHJvZ3Jlc3MudmFsdWUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXgg
MTY3MWRkYTZiMjQzZTU0MWZlMDA2NDRjNDk1NjM0NmU5ZDU0MDQ4Yy4uZjI4N2EyOTE3M2NiNDRj
ZDFmOTY3NGQxZTlhZGJmNDg5MmRiYTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcApAQCAtMzE2LDcgKzMxNiw2IEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJl
c29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0CiAgICAgICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuYmFja0ZvcndhcmRDYWNoZVN0YXRl
KCkgPT0gRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSAmJiAhZWxlbWVudC5kb2N1bWVu
dCgpLnJlbmRlclZpZXcoKS0+cHJpbnRpbmcoKSkgewogICAgICAgICAgICAgaWYgKG9sZFN0eWxl
ICYmIChvbGRTdHlsZS0+aGFzVHJhbnNpdGlvbnMoKSB8fCBuZXdTdHlsZS0+aGFzVHJhbnNpdGlv
bnMoKSkpCiAgICAgICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNTU1Ry
YW5zaXRpb25zRm9yRWxlbWVudChlbGVtZW50LCAqb2xkU3R5bGUsICpuZXdTdHlsZSk7Ci0KICAg
ICAgICAgICAgIGlmICgob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwg
bmV3U3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkKICAgICAgICAgICAgICAgICBtX2RvY3VtZW50LnRp
bWVsaW5lKCkudXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgb2xkU3R5bGUs
ICpuZXdTdHlsZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZGFhNDkwMmQ5MjIyMTQzMTViMmRmYzQ2
OWVkYzQ3ODk2MGI0ODQyLi42OGRjMmUzOTU5ZmJlMTA5ZTg4Mzc5MDcwMTZjYzM3OGQzZDEyYzQw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDUtMjUgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQGFwcGxlLmNvbT4KKworICAgICAgICBIYXJkd2FyZSBmaWxsLWZvcndhcmRzIGFuaW1hdGlv
biBhbmQgdHJhbnNpdGlvbnMgZG9uJ3QgaW50ZXJhY3QgY29ycmVjdGx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4MzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmFuaW1hdGlvbnMvdXBkYXRp
bmctcHJvcGVydHktdGFyZ2V0ZWQtYnktY3NzLXRyYW5zaXRpb24tZHVyaW5nLWNzcy1hbmltYXRp
b24uaHRtbDogQWRkZWQuCisKIDIwMjAtMDUtMjQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIElnbm9yZSBzZWN0aW9uIGJvcmRlcnMgZXZlbiB3
aGVuIGJvcmRlciBjb2xsYXBzZSBpcyBvZmYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
bmltYXRpb25zL3VwZGF0aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1
cmluZy1jc3MtYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3VwZGF0
aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5pbWF0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUyMWJlNGEyZjc3YzJkN2FlMGMzZjU1ZTI3ZWQyOWRmZGZk
YjRjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvdXBkYXRp
bmctcHJvcGVydHktdGFyZ2V0ZWQtYnktY3NzLXRyYW5zaXRpb24tZHVyaW5nLWNzcy1hbmltYXRp
b24uaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5VcGRhdGluZyBhIENTUyBwcm9wZXJ0eSBzZXQgYXMgYSB0cmFuc2l0
aW9uLXByb3BlcnR5IHdoaWxlIGEgQ1NTIEFuaW1hdGlvbiBpcyBhbHJlYWR5IGFuaW1hdGluZyB0
aGF0IHByb3BlcnR5PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVl
biI+CisKKy50YXJnZXQgeworCWFuaW1hdGlvbjogYW5pbWF0aW9uIDJzOworICAgIHRyYW5zaXRp
b246IG1hcmdpbi1sZWZ0IDFzOworfQorCisudGFyZ2V0LmluLWZsaWdodCB7CisgICAgbWFyZ2lu
LWxlZnQ6IDIwMHB4OworfQorCitAa2V5ZnJhbWVzIGFuaW1hdGlvbiB7CisgICAgZnJvbSB7IG1h
cmdpbi1sZWZ0OiA1MHB4IH0KKyAgICB0byAgIHsgbWFyZ2luLWxlZnQ6IDEwMHB4IH0KK30KKwor
PC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKKyd1c2Ugc3RyaWN0JzsKKwordGVzdCh0ZXN0ID0+
IHsKKyAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgidGFyZ2V0
Iik7CisKKwlsZXQgYW5pbWF0aW9ucyA9IHRhcmdldC5nZXRBbmltYXRpb25zKCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMSwgIlRoZXJlIGlzIG9uZSBhbmltYXRpb24g
YXBwbGllZCB0byB0aGUgdGFyZ2V0IGFmdGVyIHN0YXJ0aW5nIHRoZSB0ZXN0LiIpOworCisJY29u
c3QgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1swXTsKKyAgICBhc3NlcnRfdHJ1ZShhbmltYXRpb24g
aW5zdGFuY2VvZiBDU1NBbmltYXRpb24sIDEsICJUaGVyZSBpcyBvbmUgQ1NTIEFuaW1hdGlvbiBh
cHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIgc3RhcnRpbmcgdGhlIHRlc3QuIik7CisKKwkvLyAv
LyBXYWl0IGZvciB0aGUgQ1NTIEFuaW1hdGlvbiB0byBzdGFydAorCS8vIGF3YWl0IGFuaW1hdGlv
bi5yZWFkeTsKKworCS8vIFVwZGF0ZSBvcGFjaXR5IHdoaWxlIHRoZSBDU1MgQW5pbWF0aW9uIGlz
IHJ1bm5pbmcuIFRoaXMgc2hvdWxkIG5vdCBpbml0aWF0ZSBhIENTUyBUcmFuc2l0aW9uLgorICAg
IHRhcmdldC5jbGFzc0xpc3QuYWRkKCJpbi1mbGlnaHQiKTsKKyAgICBhbmltYXRpb25zID0gdGFy
Z2V0LmdldEFuaW1hdGlvbnMoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3Ro
LCAxLCAiVGhlcmUgaXMgb25lIGFuaW1hdGlvbiBhcHBsaWVkIHRvIHRoZSB0YXJnZXQgYWZ0ZXIg
dXBkYXRpbmcgdGhlIGFuaW1hdGVkIHByb3BlcnR5LiIpOworICAgIGFzc2VydF9lcXVhbHMoYW5p
bWF0aW9uc1swXSwgYW5pbWF0aW9uLCAiVGhlIHNpbmdsZSBydW5uaW5nIGFuaW1hdGlvbiBpcyB0
aGUgb3JpZ2luYWwgQ1NTIEFuaW1hdGlvbi4iKTsKKworCS8vIEZpbmlzaCB0aGUgYW5pbWF0aW9u
IGFuZCBjaGVjayB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIHN0YXJ0ZWQgdGhlbiBlaXRoZXIuCisJ
YW5pbWF0aW9uLmZpbmlzaCgpOworCisgICAgYXNzZXJ0X2VxdWFscyh0YXJnZXQuZ2V0QW5pbWF0
aW9ucygpLmxlbmd0aCwgMCwgIlRoZXJlIGlzIG5vIGFuaW1hdGlvbiBydW5uaW5nIGFmdGVyIGZp
bmlzaGluZyB0aGUgQ1NTIEFuaW1hdGlvbi4iKTsKKworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29t
cHV0ZWRTdHlsZSh0YXJnZXQpLm1hcmdpbkxlZnQsICIyMDBweCIsICJUaGUgZmluYWwgdmFsdWUg
Zm9yIHRoZSBwcm9wZXJ0eSBpcyB0aGUgb25lIHNldCBkdXJpbmcgdGhlIGFuaW1hdGlvbi4iKTsK
KworICAgIHRhcmdldC5yZW1vdmUoKTsKK30sIGBVcGRhdGluZyBhIENTUyBwcm9wZXJ0eSBzZXQg
YXMgYSB0cmFuc2l0aW9uLXByb3BlcnR5IHdoaWxlIGEgQ1NTIEFuaW1hdGlvbiBpcyBhbHJlYWR5
IGFuaW1hdGluZyB0aGF0IHByb3BlcnR5LmApOworCis8L3NjcmlwdD4KKzwvYm9keT4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400204</attachid>
            <date>2020-05-25 09:07:17 -0700</date>
            <delta_ts>2020-05-26 09:56:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187839-20200525180715.patch</filename>
            <type>text/plain</type>
            <size>18104</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ0ZDAzMTg4ZTZjMWI5
NzgzMWQ4OGYwZDhhNWRlMjgyYjgwY2NkOC4uZGQ5NGUzZTgwNDdiYmU1MmI2MDI2Yjg5MTI1NTY4
MzIyYWQ2NDhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTA1LTI1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZHdhcmUgZmlsbC1m
b3J3YXJkcyBhbmltYXRpb24gYW5kIHRyYW5zaXRpb25zIGRvbid0IGludGVyYWN0IGNvcnJlY3Rs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
d2ViYW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10YXJnZXRlZC1ieS1jc3MtdHJhbnNpdGlv
bi1kdXJpbmctY3NzLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0
aW9uVGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
blRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JFbGVtZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaDoKKyAg
ICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KToKKwogMjAyMC0wNS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBtaXNzaW5nIGluY2x1ZGVz
IGR1ZSB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5p
bWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDRiYjkzNWU1NmU4YTZlYjQ1MTc3MDYyYmVmMTgzNDli
ODE4YzQwMTEuLjE0NmYxM2ZlZDAwNjY3ODUwZmFlNDZlMDQxNjdkZjUzN2ExMGIxMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAtMjI3
LDIxICsyMjcsMjEgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKQordm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQog
ewogICAgIGF1dG8mIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBlbGVtZW50LmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soKTsKIAogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdl
dHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyBhbmlt
YXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCi0gICAgaWYgKGN1cnJlbnRTdHlsZSAmJiBj
dXJyZW50U3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5n
ZVN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgeworICAgIGlmIChjdXJyZW50
U3R5bGUgJiYgY3VycmVudFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYg
bmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7CiAgICAgICAgIGZvciAo
YXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkp
CiAgICAgICAgICAgICBjc3NBbmltYXRpb24tPmNhbmNlbEZyb21TdHlsZSgpOwogICAgICAgICBr
ZXlmcmFtZUVmZmVjdFN0YWNrLnNldENTU0FuaW1hdGlvbkxpc3QobnVsbHB0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBjdXJyZW50QW5pbWF0aW9uTGlzdCA9IGFmdGVy
Q2hhbmdlU3R5bGUuYW5pbWF0aW9ucygpOworICAgIGF1dG8qIGN1cnJlbnRBbmltYXRpb25MaXN0
ID0gbmV3U3R5bGUuYW5pbWF0aW9ucygpOwogICAgIGF1dG8qIHByZXZpb3VzQW5pbWF0aW9uTGlz
dCA9IGtleWZyYW1lRWZmZWN0U3RhY2suY3NzQW5pbWF0aW9uTGlzdCgpOwotICAgIGlmIChwcmV2
aW91c0FuaW1hdGlvbkxpc3QgJiYgIXByZXZpb3VzQW5pbWF0aW9uTGlzdC0+aXNFbXB0eSgpICYm
IGFmdGVyQ2hhbmdlU3R5bGUuaGFzQW5pbWF0aW9ucygpICYmICoocHJldmlvdXNBbmltYXRpb25M
aXN0KSA9PSAqKGFmdGVyQ2hhbmdlU3R5bGUuYW5pbWF0aW9ucygpKSkKKyAgICBpZiAocHJldmlv
dXNBbmltYXRpb25MaXN0ICYmICFwcmV2aW91c0FuaW1hdGlvbkxpc3QtPmlzRW1wdHkoKSAmJiBu
ZXdTdHlsZS5oYXNBbmltYXRpb25zKCkgJiYgKihwcmV2aW91c0FuaW1hdGlvbkxpc3QpID09ICoo
bmV3U3R5bGUuYW5pbWF0aW9ucygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ1NTQW5pbWF0
aW9uQ29sbGVjdGlvbiBuZXdBbmltYXRpb25zOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgQW5p
bWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFJlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZm91bmRN
YXRjaGluZ0FuaW1hdGlvbikKLSAgICAgICAgICAgICAgICBuZXdBbmltYXRpb25zLmFkZChDU1NB
bmltYXRpb246OmNyZWF0ZShlbGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5bGUs
IGFmdGVyQ2hhbmdlU3R5bGUpKTsKKyAgICAgICAgICAgICAgICBuZXdBbmltYXRpb25zLmFkZChD
U1NBbmltYXRpb246OmNyZWF0ZShlbGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5
bGUsIG5ld1N0eWxlKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM2NSwxMCArMzY1LDEwIEBA
IHN0YXRpYyB2b2lkIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBl
bGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29uc3QgTW9ub3Rv
bmljVGltZSBnZW5lcmF0aW9uVGltZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNT
U1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1By
b3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGlt
ZSkKIHsKICAgICBjb25zdCBBbmltYXRpb24qIG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiA9IG51
bGxwdHI7Ci0gICAgaWYgKGF1dG8qIHRyYW5zaXRpb25zID0gYWZ0ZXJDaGFuZ2VTdHlsZS50cmFu
c2l0aW9ucygpKSB7CisgICAgaWYgKGF1dG8qIHRyYW5zaXRpb25zID0gbmV3U3R5bGUudHJhbnNp
dGlvbnMoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLT5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgYmFja2luZ0FuaW1hdGlvbiA9IHRyYW5z
aXRpb25zLT5hbmltYXRpb24oaSk7CiAgICAgICAgICAgICBpZiAodHJhbnNpdGlvbk1hdGNoZXNQ
cm9wZXJ0eShiYWNraW5nQW5pbWF0aW9uLCBwcm9wZXJ0eSkpCkBAIC0zNzYsMjYgKzM3NiwyMSBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRB
bmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICB9CiAgICAgfQogCisgICAgYXV0byog
a2V5ZnJhbWVFZmZlY3QgPSBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eShlbGVt
ZW50LCBwcm9wZXJ0eSk7CisKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRy
YW5zaXRpb25zLTEvI2JlZm9yZS1jaGFuZ2Utc3R5bGUKICAgICAvLyBEZWZpbmUgdGhlIGJlZm9y
ZS1jaGFuZ2Ugc3R5bGUgYXMgdGhlIGNvbXB1dGVkIHZhbHVlcyBvZiBhbGwgcHJvcGVydGllcyBv
biB0aGUgZWxlbWVudCBhcyBvZiB0aGUgcHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50LCBleGNl
cHQgd2l0aAogICAgIC8vIGFueSBzdHlsZXMgZGVyaXZlZCBmcm9tIGRlY2xhcmF0aXZlIGFuaW1h
dGlvbnMgc3VjaCBhcyBDU1MgVHJhbnNpdGlvbnMsIENTUyBBbmltYXRpb25zLCBhbmQgU01JTCBB
bmltYXRpb25zIHVwZGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGltZS4KLSAgICBib29sIGhhc1J1bm5p
bmdUcmFuc2l0aW9uID0gZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShw
cm9wZXJ0eSk7Ci0gICAgYXV0byBiZWZvcmVDaGFuZ2VTdHlsZSA9IFsmXSgpIHsKLSAgICAgICAg
aWYgKGhhc1J1bm5pbmdUcmFuc2l0aW9uICYmIENTU1Byb3BlcnR5QW5pbWF0aW9uOjphbmltYXRp
b25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChwcm9wZXJ0eSkpIHsKLSAgICAgICAgICAgIC8vIElu
IGNhc2Ugd2UgaGF2ZSBhbiBhY2NlbGVyYXRlZCB0cmFuc2l0aW9uIHJ1bm5pbmcgZm9yIHRoaXMg
ZWxlbWVudCwgd2UgbmVlZCB0byBnZXQgaXRzIGNvbXB1dGVkIHN0eWxlIGFzIHRoZSBiZWZvcmUt
Y2hhbmdlIHN0eWxlCi0gICAgICAgICAgICAvLyBzaW5jZSBvdGhlcndpc2UgdGhlIGFuaW1hdGVk
IHZhbHVlIGZvciB0aGF0IHByb3BlcnR5IHdvbid0IGJlIHZpc2libGUuCi0gICAgICAgICAgICBh
dXRvKiBydW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpLmdldChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoaXM8S2V5ZnJhbWVF
ZmZlY3Q+KHJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkpIHsKLSAgICAgICAgICAgICAgICBh
dXRvJiBrZXlmcmFtZUVmZmVjdCA9ICpkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ocnVubmluZ1Ry
YW5zaXRpb24tPmVmZmVjdCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoa2V5ZnJhbWVFZmZlY3Qu
aXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSkgeworICAgIGF1dG8gYmVmb3JlQ2hhbmdlU3R5bGUgPSBb
Jl0oKSAtPiBjb25zdCBSZW5kZXJTdHlsZSB7CisgICAgICAgIGlmIChrZXlmcmFtZUVmZmVjdCkg
eworICAgICAgICAgICAgaWYgKGF1dG8qIGFuaW1hdGlvbiA9IGtleWZyYW1lRWZmZWN0LT5hbmlt
YXRpb24oKSkgeworICAgICAgICAgICAgICAgIGlmIChhbmltYXRpb24tPmlzUmVsZXZhbnQoKSAm
JiBpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3duY2FzdDxEZWNsYXJh
dGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpID09ICZlbGVtZW50KSB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpj
bG9uZShjdXJyZW50U3R5bGUpOwotICAgICAgICAgICAgICAgICAgICBydW5uaW5nVHJhbnNpdGlv
bi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9u
LT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5p
bWF0ZWRTdHlsZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0K
IAotICAgICAgICBpZiAoYXV0byoga2V5ZnJhbWVFZmZlY3QgPSBrZXlmcmFtZUVmZmVjdEZvckVs
ZW1lbnRBbmRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgIC8vIElm
IHdlIGFscmVhZHkgaGF2ZSBhIGtleWZyYW1lIGVmZmVjdCB0YXJnZXRpbmcgdGhpcyBwcm9wZXJ0
eSwgd2Ugc2hvdWxkIHVzZSBpdHMgdW5hbmltYXRlZCBzdHlsZSB0byBkZXRlcm1pbmUgd2hhdCB0
aGUgcG90ZW50aWFsCiAgICAgICAgICAgICAvLyBzdGFydCB2YWx1ZSBvZiB0aGUgdHJhbnNpdGlv
biBzaG91ZCBiZSB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBhY2NvdW50IGZvciBhbmltYXRl
ZCB2YWx1ZXMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYmxlbmRlZCBvbnRvCiAgICAgICAgICAgICAv
LyB0aGUgc3R5bGUgYXBwbGllZCBkdXJpbmcgdGhlIGxhc3Qgc3R5bGUgcmVzb2x1dGlvbi4KQEAg
LTQwNiwxNCArNDAxLDM0IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5z
aXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAgICAgICAgICAv
LyBoYWQgYSBjaGFuY2UgdG8gYXBwbHkgaXRzZWxmIHdpdGggYSBub24tbnVsbCBwcm9ncmVzcy4g
SW4gdGhpcyBjYXNlLCB0aGUgYmVmb3JlLWNoYW5nZSBhbmQgYWZ0ZXItY2hhbmdlIHN0eWxlcyBz
aG91bGQgYmUgdGhlCiAgICAgICAgICAgICAvLyBzYW1lIGluIG9yZGVyIHRvIHByZXZlbnQgYSB0
cmFuc2l0aW9uIGZyb20gYmVpbmcgdHJpZ2dlcmVkIGFzIHRoZSB1bmFuaW1hdGVkIHN0eWxlIGZv
ciB0aGlzIGtleWZyYW1lIGVmZmVjdCB3aWxsIG1vc3QgbGlrZWx5CiAgICAgICAgICAgICAvLyBi
ZSB0aGlzIGFmdGVyLWNoYW5nZSBzdHlsZSwgb3IgYW55IGZ1dHVyZSBzdHlsZSBjaGFuZ2UgdGhh
dCBtYXkgaGFwcGVuIGJlZm9yZSB0aGUga2V5ZnJhbWUgZWZmZWN0IHN0YXJ0cyBibGVuZGluZyBh
bmltYXRlZCB2YWx1ZXMuCi0gICAgICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKGFm
dGVyQ2hhbmdlU3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZShu
ZXdTdHlsZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJbiBhbnkgb3RoZXIgc2NlbmFyaW8s
IHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxlIHNob3VsZCBiZSB0aGUgcHJldmlvdXNseSByZXNvbHZl
ZCBzdHlsZSBmb3IgdGhpcyBlbGVtZW50LgogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNs
b25lKGN1cnJlbnRTdHlsZSk7CiAgICAgfSgpOwogCi0gICAgaWYgKCFoYXNSdW5uaW5nVHJhbnNp
dGlvbgorICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNpdGlvbnMtMS8j
YWZ0ZXItY2hhbmdlLXN0eWxlCisgICAgLy8gTGlrZXdpc2UsIGRlZmluZSB0aGUgYWZ0ZXItY2hh
bmdlIHN0eWxlIGFzIHRoZSBjb21wdXRlZCB2YWx1ZXMgb2YgYWxsIHByb3BlcnRpZXMgb24gdGhl
IGVsZW1lbnQgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIGtub3duIGF0IHRoZSBzdGFydAorICAg
IC8vIG9mIHRoYXQgc3R5bGUgY2hhbmdlIGV2ZW50LCBidXQgdXNpbmcgdGhlIGNvbXB1dGVkIHZh
bHVlcyBvZiB0aGUgYW5pbWF0aW9uLSogcHJvcGVydGllcyBmcm9tIHRoZSBiZWZvcmUtY2hhbmdl
IHN0eWxlLCBleGNsdWRpbmcgYW55IHN0eWxlcworICAgIC8vIGZyb20gQ1NTIFRyYW5zaXRpb25z
IGluIHRoZSBjb21wdXRhdGlvbiwgYW5kIGluaGVyaXRpbmcgZnJvbSB0aGUgYWZ0ZXItY2hhbmdl
IHN0eWxlIG9mIHRoZSBwYXJlbnQuIE5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoZSBhZnRlci1jaGFu
Z2UKKyAgICAvLyBzdHlsZSBkb2VzIG5vdCBkaWZmZXIgZnJvbSB0aGUgYmVmb3JlLWNoYW5nZSBz
dHlsZSBkdWUgdG8gbmV3bHkgY3JlYXRlZCBvciBjYW5jZWxlZCBDU1MgQW5pbWF0aW9ucy4KKyAg
ICBhdXRvIGFmdGVyQ2hhbmdlU3R5bGUgPSBbJl0oKSAtPiBjb25zdCBSZW5kZXJTdHlsZSB7Cisg
ICAgICAgIGlmIChrZXlmcmFtZUVmZmVjdCkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGFuaW1h
dGlvbiA9IGtleWZyYW1lRWZmZWN0LT5hbmltYXRpb24oKSkgeworICAgICAgICAgICAgICAgIGlm
IChhbmltYXRpb24tPmlzUmVsZXZhbnQoKSAmJiBpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikg
JiYgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50KCkgPT0g
JmVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9u
LT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5p
bWF0ZWRTdHlsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBJbiBhbnkgb3RoZXIgc2NlbmFyaW8sIHRoZSBhZnRlci1jaGFuZ2Ugc3R5
bGUgc2hvdWxkIGJlIHRoZSBwcmV2aW91c2x5IHJlc29sdmVkIHN0eWxlIGZvciB0aGlzIGVsZW1l
bnQuCisgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xvbmUobmV3U3R5bGUpOworICAgIH0o
KTsKKworICAgIGlmICghZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShw
cm9wZXJ0eSkKICAgICAgICAgJiYgIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVzRXF1
YWwocHJvcGVydHksICZiZWZvcmVDaGFuZ2VTdHlsZSwgJmFmdGVyQ2hhbmdlU3R5bGUpCiAgICAg
ICAgICYmIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpjYW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVkKHBy
b3BlcnR5LCAmYmVmb3JlQ2hhbmdlU3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKQogICAgICAgICAm
JiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKHByb3BlcnR5
LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQ
cm9wZXJ0eSgpKQpAQCAtNDQ2LDcgKzQ2MSw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAg
ICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVt
b3ZlKHByb3BlcnR5KTsKICAgICB9CiAKLSAgICBoYXNSdW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1l
bnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpOworICAgIGJvb2wg
aGFzUnVubmluZ1RyYW5zaXRpb24gPSBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclBy
b3BlcnR5KHByb3BlcnR5KTsKICAgICBpZiAoKGhhc1J1bm5pbmdUcmFuc2l0aW9uIHx8IGVsZW1l
bnQuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSkpICYmICFtYXRj
aGluZ0JhY2tpbmdBbmltYXRpb24pIHsKICAgICAgICAgLy8gMy4gSWYgdGhlIGVsZW1lbnQgaGFz
IGEgcnVubmluZyB0cmFuc2l0aW9uIG9yIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUgcHJv
cGVydHksIGFuZCB0aGVyZSBpcyBub3QgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXByb3BlcnR5CiAg
ICAgICAgIC8vICAgIHZhbHVlLCB0aGVuIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0aGUg
cnVubmluZyB0cmFuc2l0aW9uIG9yIHJlbW92ZSB0aGUgY29tcGxldGVkIHRyYW5zaXRpb24gZnJv
bSB0aGUgc2V0IG9mIGNvbXBsZXRlZCB0cmFuc2l0aW9ucy4KQEAgLTUxNiwxMCArNTMxLDEwIEBA
IHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hh
bmdlU3R5bGUpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
ckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIC8vIEluIGNhc2UgdGhpcyBl
bGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5j
ZWwgYWxsIG9mIGl0cyB0cmFuc2l0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgotICAgIGlm
IChjdXJyZW50U3R5bGUuaGFzVHJhbnNpdGlvbnMoKSAmJiBjdXJyZW50U3R5bGUuZGlzcGxheSgp
ICE9IERpc3BsYXlUeXBlOjpOb25lICYmIGFmdGVyQ2hhbmdlU3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpOb25lKSB7CisgICAgaWYgKGN1cnJlbnRTdHlsZS5oYXNUcmFuc2l0aW9ucygp
ICYmIGN1cnJlbnRTdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChlbGVtZW50
Lmhhc1J1bm5pbmdUcmFuc2l0aW9ucygpKSB7CiAgICAgICAgICAgICBhdXRvIHJ1bm5pbmdUcmFu
c2l0aW9ucyA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwog
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJ
RE1hcEl0ZW0gOiBydW5uaW5nVHJhbnNpdGlvbnMpCkBAIC01MzcsNyArNTUyLDcgQEAgdm9pZCBB
bmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFIKICAgICBib29sIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFs
bCA9IGZhbHNlOwogICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gdHJhbnNpdGlvblByb3BlcnRp
ZXM7CiAgICAgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShjdXJyZW50U3R5bGUs
IHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCB0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpOwot
ICAgIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUoYWZ0ZXJDaGFuZ2VTdHlsZSwg
dHJhbnNpdGlvblByb3BlcnRpZXMsIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCk7Cisg
ICAgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShuZXdTdHlsZSwgdHJhbnNpdGlv
blByb3BlcnRpZXMsIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCk7CiAKICAgICBpZiAo
dHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKSB7CiAgICAgICAgIGF1dG8gbnVtYmVyT2ZQ
cm9wZXJ0aWVzID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmdldE51bVByb3BlcnRpZXMoKTsKQEAg
LTU0NiwxMyArNTYxLDEzIEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5z
aXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICBh
dXRvIHByb3BlcnR5ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChw
cm9wZXJ0eUluZGV4LCBpc1Nob3J0aGFuZCk7CiAgICAgICAgICAgICBpZiAoaXNTaG9ydGhhbmQg
JiYgKmlzU2hvcnRoYW5kKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVy
dHksIGN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZ2VuZXJhdGlvblRpbWUpOworICAg
ICAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVu
dCwgcHJvcGVydHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvIHByb3BlcnR5
IDogdHJhbnNpdGlvblByb3BlcnRpZXMpCi0gICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
RWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIGFmdGVy
Q2hhbmdlU3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKKyAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlv
bnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHksIGN1cnJlbnRTdHlsZSwg
bmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaAppbmRleCA4NTFh
ZGQyZDE2NDg1ZmM3MTkzZjg4NzA3M2UzMDNlZjk1OGU3M2Y3Li4wNzU0MjZkMGE5Yzg3MTgxODVh
ZWI5NTVhMjE4NzE2ODdmNGNkMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5p
bWF0aW9uVGltZWxpbmUuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0
aW9uJiwgRWxlbWVudCYpOwogCiAgICAgdm9pZCB1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVu
dChFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUpOwotICAgIHZvaWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JFbGVtZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVDU1NUcmFu
c2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBBbmltYXRpb25UaW1lbGluZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5jcHAKaW5kZXggZjA4MWVhNGJmNDEzYzA3MTZlOWIwYzY4MjFlYzI4YjIzZWVh
ZWM1Zi4uNTJhOGZiNTdjOWUwMmUyMmZkMjBjNjQ4ZjQ2NThiZWRjYWMwZjhjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC0xMjE2LDggKzEyMTYs
NyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUp
CiAgICAgaWYgKCFjb21wdXRlZFRpbWluZy5wcm9ncmVzcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX3VuYW5pbWF0ZWRTdHlsZSkKLSAgICAgICAgbV91bmFuaW1hdGVkU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y2xvbmVQdHIodGFyZ2V0U3R5bGUpOworICAgIG1fdW5hbmltYXRlZFN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHRhcmdldFN0eWxlKTsKIAogICAgIHNldEFuaW1hdGVk
UHJvcGVydGllc0luU3R5bGUodGFyZ2V0U3R5bGUsIGNvbXB1dGVkVGltaW5nLnByb2dyZXNzLnZh
bHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGFkYWE0OTAyZDkyMjIxNDMxNWIyZGZjNDY5ZWRjNDc4OTYwYjQ4
NDIuLjhjM2FmN2Q5NjJlYWU4YTAyNjk4YjU1MmYxZTNjMDI1YjI1MjM5ZmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wNS0yNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgorCisgICAgICAgIEhhcmR3YXJlIGZpbGwtZm9yd2FyZHMgYW5pbWF0aW9uIGFuZCB0cmFuc2l0
aW9ucyBkb24ndCBpbnRlcmFjdCBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzgzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2ViYW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10
YXJnZXRlZC1ieS1jc3MtdHJhbnNpdGlvbi1kdXJpbmctY3NzLWFuaW1hdGlvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvdXBkYXRpbmctcHJvcGVydHktdGFy
Z2V0ZWQtYnktY3NzLXRyYW5zaXRpb24tZHVyaW5nLWNzcy1hbmltYXRpb24uaHRtbDogQWRkZWQu
CisKIDIwMjAtMDUtMjQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtURkNdIElnbm9yZSBzZWN0aW9uIGJvcmRlcnMgZXZlbiB3aGVuIGJvcmRlciBjb2xs
YXBzZSBpcyBvZmYuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3VwZGF0
aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5pbWF0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvdXBkYXRpbmctcHJv
cGVydHktdGFyZ2V0ZWQtYnktY3NzLXRyYW5zaXRpb24tZHVyaW5nLWNzcy1hbmltYXRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzOWYzODk4ZmFiZWUwYzkxZGEzZDUzZDczMjU1MjQxMzA5
NWM1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3VwZGF0
aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5pbWF0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBVcGRhdGluZyBhIENTUyBw
cm9wZXJ0eSBzZXQgYXMgYSB0cmFuc2l0aW9uLXByb3BlcnR5IHdoaWxlIGEgQ1NTIEFuaW1hdGlv
biBpcyBhbHJlYWR5IGFuaW1hdGluZyB0aGF0IHByb3BlcnR5LiAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10YXJnZXRlZC1ieS1jc3Mt
dHJhbnNpdGlvbi1kdXJpbmctY3NzLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10YXJnZXRlZC1ieS1jc3MtdHJhbnNpdGlvbi1kdXJp
bmctY3NzLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1MjFiZTRhMmY3N2MyZDdhZTBjM2Y1
NWUyN2VkMjlkZmRmZGI0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmlt
YXRpb25zL3VwZGF0aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmlu
Zy1jc3MtYW5pbWF0aW9uLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VXBkYXRpbmcgYSBDU1MgcHJvcGVydHkgc2V0
IGFzIGEgdHJhbnNpdGlvbi1wcm9wZXJ0eSB3aGlsZSBhIENTUyBBbmltYXRpb24gaXMgYWxyZWFk
eSBhbmltYXRpbmcgdGhhdCBwcm9wZXJ0eTwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
IG1lZGlhPSJzY3JlZW4iPgorCisudGFyZ2V0IHsKKwlhbmltYXRpb246IGFuaW1hdGlvbiAyczsK
KyAgICB0cmFuc2l0aW9uOiBtYXJnaW4tbGVmdCAxczsKK30KKworLnRhcmdldC5pbi1mbGlnaHQg
eworICAgIG1hcmdpbi1sZWZ0OiAyMDBweDsKK30KKworQGtleWZyYW1lcyBhbmltYXRpb24gewor
ICAgIGZyb20geyBtYXJnaW4tbGVmdDogNTBweCB9CisgICAgdG8gICB7IG1hcmdpbi1sZWZ0OiAx
MDBweCB9Cit9CisKKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisndXNlIHN0cmljdCc7CisK
K3Rlc3QodGVzdCA9PiB7CisgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgdGFyZ2V0LmNsYXNzTGlz
dC5hZGQoInRhcmdldCIpOworCisJbGV0IGFuaW1hdGlvbnMgPSB0YXJnZXQuZ2V0QW5pbWF0aW9u
cygpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgsIDEsICJUaGVyZSBpcyBv
bmUgYW5pbWF0aW9uIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBhZnRlciBzdGFydGluZyB0aGUgdGVz
dC4iKTsKKworCWNvbnN0IGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbMF07CisgICAgYXNzZXJ0X3Ry
dWUoYW5pbWF0aW9uIGluc3RhbmNlb2YgQ1NTQW5pbWF0aW9uLCAxLCAiVGhlcmUgaXMgb25lIENT
UyBBbmltYXRpb24gYXBwbGllZCB0byB0aGUgdGFyZ2V0IGFmdGVyIHN0YXJ0aW5nIHRoZSB0ZXN0
LiIpOworCisJLy8gLy8gV2FpdCBmb3IgdGhlIENTUyBBbmltYXRpb24gdG8gc3RhcnQKKwkvLyBh
d2FpdCBhbmltYXRpb24ucmVhZHk7CisKKwkvLyBVcGRhdGUgb3BhY2l0eSB3aGlsZSB0aGUgQ1NT
IEFuaW1hdGlvbiBpcyBydW5uaW5nLiBUaGlzIHNob3VsZCBub3QgaW5pdGlhdGUgYSBDU1MgVHJh
bnNpdGlvbi4KKyAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgiaW4tZmxpZ2h0Iik7CisgICAgYW5p
bWF0aW9ucyA9IHRhcmdldC5nZXRBbmltYXRpb25zKCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmlt
YXRpb25zLmxlbmd0aCwgMSwgIlRoZXJlIGlzIG9uZSBhbmltYXRpb24gYXBwbGllZCB0byB0aGUg
dGFyZ2V0IGFmdGVyIHVwZGF0aW5nIHRoZSBhbmltYXRlZCBwcm9wZXJ0eS4iKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGFuaW1hdGlvbnNbMF0sIGFuaW1hdGlvbiwgIlRoZSBzaW5nbGUgcnVubmluZyBh
bmltYXRpb24gaXMgdGhlIG9yaWdpbmFsIENTUyBBbmltYXRpb24uIik7CisKKwkvLyBGaW5pc2gg
dGhlIGFuaW1hdGlvbiBhbmQgY2hlY2sgdGhlcmUgaXMgbm8gdHJhbnNpdGlvbiBzdGFydGVkIHRo
ZW4gZWl0aGVyLgorCWFuaW1hdGlvbi5maW5pc2goKTsKKworICAgIGFzc2VydF9lcXVhbHModGFy
Z2V0LmdldEFuaW1hdGlvbnMoKS5sZW5ndGgsIDAsICJUaGVyZSBpcyBubyBhbmltYXRpb24gcnVu
bmluZyBhZnRlciBmaW5pc2hpbmcgdGhlIENTUyBBbmltYXRpb24uIik7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5tYXJnaW5MZWZ0LCAiMjAwcHgiLCAiVGhl
IGZpbmFsIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgaXMgdGhlIG9uZSBzZXQgZHVyaW5nIHRoZSBh
bmltYXRpb24uIik7CisKKyAgICB0YXJnZXQucmVtb3ZlKCk7Cit9LCBgVXBkYXRpbmcgYSBDU1Mg
cHJvcGVydHkgc2V0IGFzIGEgdHJhbnNpdGlvbi1wcm9wZXJ0eSB3aGlsZSBhIENTUyBBbmltYXRp
b24gaXMgYWxyZWFkeSBhbmltYXRpbmcgdGhhdCBwcm9wZXJ0eS5gKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400256</attachid>
            <date>2020-05-26 09:56:05 -0700</date>
            <delta_ts>2020-05-26 10:49:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187839-20200526185604.patch</filename>
            <type>text/plain</type>
            <size>30249</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ0ZDAzMTg4ZTZjMWI5
NzgzMWQ4OGYwZDhhNWRlMjgyYjgwY2NkOC4uZDg1ZGFkNWQ3YjcyMGM1NGFkNmQwNzg2NDJhZWU4
ZDk2NGUxYmMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA1LTI2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZHdhcmUgZmlsbC1m
b3J3YXJkcyBhbmltYXRpb24gYW5kIHRyYW5zaXRpb25zIGRvbid0IGludGVyYWN0IGNvcnJlY3Rs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM5
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjQxMDQxMj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiB3ZWJhbmltYXRpb25zL3VwZGF0aW5n
LXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5pbWF0aW9u
Lmh0bWwKKworICAgICAgICBXZSBkaWRuJ3QgZm9sbG93IHRoZSBDU1MgVHJhbnNpdGlvbnMgc3Bl
YyBjbG9zZWx5IGVub3VnaCB3aGVuIGl0IGNhbWUgdG8gZGVmaW5pbmcgdGhlIGNvcnJlY3QgYmVm
b3JlIGFuZCBhZnRlcgorICAgICAgICBjaGFuZ2Ugc3R5bGVzIGR1cmluZyBhIHN0eWxlIGNoYW5n
ZSBldmVudC4KKworICAgICAgICBXZSBub3cgY29ycmVjdGx5IHNldCB0aGUgYmVmb3JlLWNoYW5n
ZSBzdHlsZSBhcyBvbmUgb2YgdGhyZWUgcG9zc2libGUgdmFsdWVzOgorICAgICAgICAKKyAgICAg
ICAgICAgIDEuIGlmIHRoZXJlIGFyZSBydW5uaW5nIENTUy1vcmlnaW5hdGVkIGFuaW1hdGlvbnMs
IHdlIGVuc3VyZSB0aG9zZSBhcmUgdXBkYXRlZCB0byB0aGUgY3VycmVudCB0aW1lIGFuZAorICAg
ICAgICAgICAgICAgcmVzb2x2ZSB0aGVtIHRvIGdldCB0aGUgc3R5bGUsCisgICAgICAgICAgICAy
LiBvdGhlcndpc2Ugd2UgdXNlIHRoZSBSZW5kZXJTdHlsZSByZWNvcmRlZCBpbiBTdHlsZTo6VHJl
ZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoKSBwcmlvcgorICAgICAgICAg
ICAgICAgdG8gYXBwbHlpbmcgYW5pbWF0aW9ucyBkdXJpbmcgdGhlIGxhc3Qgc3R5bGUgY2hhbmdl
IGV2ZW50LAorICAgICAgICAgICAgMy4gb3RoZXJ3aXNlIHdlIHVzZSB0aGUgcHJldmlvdXMgY29t
cHV0ZWQgc3R5bGUsIHdoaWNoIHNob3VsZCBub3QgaGF2ZSBhbnkgYW5pbWF0ZWQgdmFsdWVzLgor
ICAgICAgICAKKyAgICAgICAgQXMgZm9yIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsIHdlIGFsc28g
bmVlZCB0byBlbnN1cmUgYW55IHJ1bm5pbmcgQ1NTIEFuaW1hdGlvbnMgYXJlIHVwZGF0ZSB0byB0
aGUgY3VycmVudCB0aW1lCisgICAgICAgIGFuZCByZXNvbHZlIHRoZW0gdG8gZ2V0IHRoZSBzdHls
ZS4gT3RoZXJ3aXNlLCB3ZSBqdXN0IHVzZSB0aGUgY3VycmVudCBjb21wdXRlZCBzdHlsZSBwcmlv
ciB0byBhcHBseWluZyBhbmltYXRpb25zLgorCisgICAgICAgIEZpbmFsbHksIHdlIGNhbiBleGl0
IGZyb20gQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KCkgZWFybHkgaWYgd2UgZmluZCB0aGF0CisgICAgICAgIHdlIGhhdmUgYSBKUy1v
cmlnaW5hdGVkIGFuaW1hdGlvbiBydW5uaW5nIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkgb24gdGhl
IGdpdmVuIGVsZW1lbnQgc2luY2Ugd2Uga25vdyB0aGF0IHRoYXQKKyAgICAgICAgYW5pbWF0aW9u
IHdpbGwgeWllbGQgYW4gb3ZlcnJpZGluZyB2YWx1ZSBmb3IgYm90aCB0aGUgYmVmb3JlIGFuZCBh
ZnRlciBjaGFuZ2Ugc3R5bGVzIHNpbmNlIEpTLW9yaWdpbmF0ZWQgYW5pbWF0aW9ucworICAgICAg
ICBoYXZlIHRoZSBoaWdodGVzdCBjb21wb3NpdGUgb3JkZXIuCisKKyAgICAgICAgVGhpcyBtZWFu
cyB3ZSBubyBsb25nZXIgbmVlZCB0byB0cmFjayB0aGUgdW5hbmltYXRlZCBzdHlsZSBvbiBLZXlm
cmFtZUVmZmVjdC4KKworICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9u
c0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorICAg
ICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oOgorICAgICAgICAqIGFuaW1hdGlv
bi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YTo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OnNldExhc3RTdHlsZUNoYW5n
ZUV2ZW50U3R5bGUpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6Y2xlYXJCbGVuZGluZ0tleWZyYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6dW5hbmltYXRlZFN0eWxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpsYXN0U3R5bGVD
aGFuZ2VFdmVudFN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldExh
c3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKToKKwogMjAyMC0w
NS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc29tZSBtaXNzaW5nIGluY2x1ZGVzIGR1ZSB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDRiYjkzNWU1
NmU4YTZlYjQ1MTc3MDYyYmVmMTgzNDliODE4YzQwMTEuLjcwZGI2Mzk3NjJiNTdkZDJlOWIwOTJl
ZGJlNGNmNjZiOTE0NGJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9B
bmltYXRpb25UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmNwcApAQCAtMjI3LDIxICsyMjcsMjEgQEAgc3RhdGljIGJvb2wgc2hvdWxk
Q29uc2lkZXJBbmltYXRpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBhbmlt
YXRpb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRl
clN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxl
KQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIGF1dG8mIGtleWZyYW1lRWZmZWN0U3RhY2sg
PSBlbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKIAogICAgIC8vIEluIGNhc2Ug
dGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0
byBjYW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCi0g
ICAgaWYgKGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5
VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Tm9uZSkgeworICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5kaXNwbGF5KCkg
IT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpOb25lKSB7CiAgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkpCiAgICAgICAgICAgICBjc3NBbmltYXRpb24tPmNhbmNl
bEZyb21TdHlsZSgpOwogICAgICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNldENTU0FuaW1hdGlv
bkxpc3QobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBjdXJy
ZW50QW5pbWF0aW9uTGlzdCA9IGFmdGVyQ2hhbmdlU3R5bGUuYW5pbWF0aW9ucygpOworICAgIGF1
dG8qIGN1cnJlbnRBbmltYXRpb25MaXN0ID0gbmV3U3R5bGUuYW5pbWF0aW9ucygpOwogICAgIGF1
dG8qIHByZXZpb3VzQW5pbWF0aW9uTGlzdCA9IGtleWZyYW1lRWZmZWN0U3RhY2suY3NzQW5pbWF0
aW9uTGlzdCgpOwotICAgIGlmIChwcmV2aW91c0FuaW1hdGlvbkxpc3QgJiYgIXByZXZpb3VzQW5p
bWF0aW9uTGlzdC0+aXNFbXB0eSgpICYmIGFmdGVyQ2hhbmdlU3R5bGUuaGFzQW5pbWF0aW9ucygp
ICYmICoocHJldmlvdXNBbmltYXRpb25MaXN0KSA9PSAqKGFmdGVyQ2hhbmdlU3R5bGUuYW5pbWF0
aW9ucygpKSkKKyAgICBpZiAocHJldmlvdXNBbmltYXRpb25MaXN0ICYmICFwcmV2aW91c0FuaW1h
dGlvbkxpc3QtPmlzRW1wdHkoKSAmJiBuZXdTdHlsZS5oYXNBbmltYXRpb25zKCkgJiYgKihwcmV2
aW91c0FuaW1hdGlvbkxpc3QpID09ICoobmV3U3R5bGUuYW5pbWF0aW9ucygpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBuZXdBbmltYXRpb25zOwpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICghZm91bmRNYXRjaGluZ0FuaW1hdGlvbikKLSAgICAgICAgICAgICAg
ICBuZXdBbmltYXRpb25zLmFkZChDU1NBbmltYXRpb246OmNyZWF0ZShlbGVtZW50LCBjdXJyZW50
QW5pbWF0aW9uLCBjdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUpKTsKKyAgICAgICAgICAg
ICAgICBuZXdBbmltYXRpb25zLmFkZChDU1NBbmltYXRpb246OmNyZWF0ZShlbGVtZW50LCBjdXJy
ZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5bGUsIG5ld1N0eWxlKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTM2NSwxMCArMzY1LDE2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVUcmFuc2l0aW9uUHJv
cGVydGllc0luU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0CiAgICAgfQog
fQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1l
bnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBj
b25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJD
aGFuZ2VTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKK3ZvaWQgQW5p
bWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5
KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0
eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgTW9u
b3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKIHsKKyAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9
IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5KTsK
KyAgICBhdXRvKiBhbmltYXRpb24gPSBrZXlmcmFtZUVmZmVjdCA/IGtleWZyYW1lRWZmZWN0LT5h
bmltYXRpb24oKSA6IG51bGxwdHI7CisgICAgYm9vbCBpc0RlY2xhcmF0aXZlID0gYW5pbWF0aW9u
ICYmIGlzPERlY2xhcmF0aXZlQW5pbWF0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PERlY2xh
cmF0aXZlQW5pbWF0aW9uPigqYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50KCkgPT0gJmVsZW1lbnQ7
CisgICAgaWYgKGFuaW1hdGlvbiAmJiAhaXNEZWNsYXJhdGl2ZSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgY29uc3QgQW5pbWF0aW9uKiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24gPSBudWxscHRy
OwotICAgIGlmIChhdXRvKiB0cmFuc2l0aW9ucyA9IGFmdGVyQ2hhbmdlU3R5bGUudHJhbnNpdGlv
bnMoKSkgeworICAgIGlmIChhdXRvKiB0cmFuc2l0aW9ucyA9IG5ld1N0eWxlLnRyYW5zaXRpb25z
KCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2l0aW9ucy0+c2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIGF1dG8mIGJhY2tpbmdBbmltYXRpb24gPSB0cmFuc2l0aW9u
cy0+YW5pbWF0aW9uKGkpOwogICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25NYXRjaGVzUHJvcGVy
dHkoYmFja2luZ0FuaW1hdGlvbiwgcHJvcGVydHkpKQpAQCAtMzc5LDQxICszODUsMzcgQEAgdm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJv
cGVydHkoRWxlbWVudCYgZWxlbWUKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
LXRyYW5zaXRpb25zLTEvI2JlZm9yZS1jaGFuZ2Utc3R5bGUKICAgICAvLyBEZWZpbmUgdGhlIGJl
Zm9yZS1jaGFuZ2Ugc3R5bGUgYXMgdGhlIGNvbXB1dGVkIHZhbHVlcyBvZiBhbGwgcHJvcGVydGll
cyBvbiB0aGUgZWxlbWVudCBhcyBvZiB0aGUgcHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50LCBl
eGNlcHQgd2l0aAogICAgIC8vIGFueSBzdHlsZXMgZGVyaXZlZCBmcm9tIGRlY2xhcmF0aXZlIGFu
aW1hdGlvbnMgc3VjaCBhcyBDU1MgVHJhbnNpdGlvbnMsIENTUyBBbmltYXRpb25zLCBhbmQgU01J
TCBBbmltYXRpb25zIHVwZGF0ZWQgdG8gdGhlIGN1cnJlbnQgdGltZS4KLSAgICBib29sIGhhc1J1
bm5pbmdUcmFuc2l0aW9uID0gZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0
eShwcm9wZXJ0eSk7Ci0gICAgYXV0byBiZWZvcmVDaGFuZ2VTdHlsZSA9IFsmXSgpIHsKLSAgICAg
ICAgaWYgKGhhc1J1bm5pbmdUcmFuc2l0aW9uICYmIENTU1Byb3BlcnR5QW5pbWF0aW9uOjphbmlt
YXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChwcm9wZXJ0eSkpIHsKLSAgICAgICAgICAgIC8v
IEluIGNhc2Ugd2UgaGF2ZSBhbiBhY2NlbGVyYXRlZCB0cmFuc2l0aW9uIHJ1bm5pbmcgZm9yIHRo
aXMgZWxlbWVudCwgd2UgbmVlZCB0byBnZXQgaXRzIGNvbXB1dGVkIHN0eWxlIGFzIHRoZSBiZWZv
cmUtY2hhbmdlIHN0eWxlCi0gICAgICAgICAgICAvLyBzaW5jZSBvdGhlcndpc2UgdGhlIGFuaW1h
dGVkIHZhbHVlIGZvciB0aGF0IHByb3BlcnR5IHdvbid0IGJlIHZpc2libGUuCi0gICAgICAgICAg
ICBhdXRvKiBydW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRp
b25zQnlQcm9wZXJ0eSgpLmdldChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoaXM8S2V5ZnJh
bWVFZmZlY3Q+KHJ1bm5pbmdUcmFuc2l0aW9uLT5lZmZlY3QoKSkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvJiBrZXlmcmFtZUVmZmVjdCA9ICpkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ocnVubmlu
Z1RyYW5zaXRpb24tPmVmZmVjdCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoa2V5ZnJhbWVFZmZl
Y3QuaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGFu
aW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoY3VycmVudFN0eWxlKTsKLSAgICAgICAg
ICAgICAgICAgICAgcnVubmluZ1RyYW5zaXRpb24tPnJlc29sdmUoYW5pbWF0ZWRTdHlsZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KKyAgICBhdXRvIGJlZm9yZUNoYW5nZVN0eWxlID0gWyZdKCkgLT4g
Y29uc3QgUmVuZGVyU3R5bGUgeworICAgICAgICBpZiAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+
aXNSZWxldmFudCgpKSB7CisgICAgICAgICAgICBhdXRvIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y2xvbmUoY3VycmVudFN0eWxlKTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2
ZShhbmltYXRlZFN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0ID0ga2V5ZnJhbWVFZmZl
Y3RGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHkpKSB7Ci0gICAgICAgICAg
ICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBrZXlmcmFtZSBlZmZlY3QgdGFyZ2V0aW5nIHRoaXMg
cHJvcGVydHksIHdlIHNob3VsZCB1c2UgaXRzIHVuYW5pbWF0ZWQgc3R5bGUgdG8gZGV0ZXJtaW5l
IHdoYXQgdGhlIHBvdGVudGlhbAotICAgICAgICAgICAgLy8gc3RhcnQgdmFsdWUgb2YgdGhlIHRy
YW5zaXRpb24gc2hvdWQgYmUgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgYWNjb3VudCBmb3Ig
YW5pbWF0ZWQgdmFsdWVzIHRoYXQgd291bGQgaGF2ZSBiZWVuIGJsZW5kZWQgb250bwotICAgICAg
ICAgICAgLy8gdGhlIHN0eWxlIGFwcGxpZWQgZHVyaW5nIHRoZSBsYXN0IHN0eWxlIHJlc29sdXRp
b24uCi0gICAgICAgICAgICBpZiAoYXV0byogdW5hbmltYXRlZFN0eWxlID0ga2V5ZnJhbWVFZmZl
Y3QtPnVuYW5pbWF0ZWRTdHlsZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBSZW5kZXJTdHls
ZTo6Y2xvbmUoKnVuYW5pbWF0ZWRTdHlsZSk7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUg
YSBrZXlmcmFtZSBlZmZlY3QgdGFyZ2V0aW5nIHRoaXMgcHJvcGVydHksIGJ1dCBpdCBkb2Vzbid0
IHlldCBoYXZlIGFuIHVuYW5pbWF0ZWQgc3R5bGUsIHRoaXMgaXMgYmVjYXVzZSBpdCBoYXMgbm90
Ci0gICAgICAgICAgICAvLyBoYWQgYSBjaGFuY2UgdG8gYXBwbHkgaXRzZWxmIHdpdGggYSBub24t
bnVsbCBwcm9ncmVzcy4gSW4gdGhpcyBjYXNlLCB0aGUgYmVmb3JlLWNoYW5nZSBhbmQgYWZ0ZXIt
Y2hhbmdlIHN0eWxlcyBzaG91bGQgYmUgdGhlCi0gICAgICAgICAgICAvLyBzYW1lIGluIG9yZGVy
IHRvIHByZXZlbnQgYSB0cmFuc2l0aW9uIGZyb20gYmVpbmcgdHJpZ2dlcmVkIGFzIHRoZSB1bmFu
aW1hdGVkIHN0eWxlIGZvciB0aGlzIGtleWZyYW1lIGVmZmVjdCB3aWxsIG1vc3QgbGlrZWx5Ci0g
ICAgICAgICAgICAvLyBiZSB0aGlzIGFmdGVyLWNoYW5nZSBzdHlsZSwgb3IgYW55IGZ1dHVyZSBz
dHlsZSBjaGFuZ2UgdGhhdCBtYXkgaGFwcGVuIGJlZm9yZSB0aGUga2V5ZnJhbWUgZWZmZWN0IHN0
YXJ0cyBibGVuZGluZyBhbmltYXRlZCB2YWx1ZXMuCi0gICAgICAgICAgICByZXR1cm4gUmVuZGVy
U3R5bGU6OmNsb25lKGFmdGVyQ2hhbmdlU3R5bGUpOwotICAgICAgICB9CisgICAgICAgIC8vIElm
IGl0IGV4aXN0cywgdXNlIHRoZSByZWNvcmRlZCBSZW5kZXJTdHlsZSBmb3IgdGhpcyBlbGVtZW50
IGR1cmluZyBhIHByZXZpb3VzIGNhbGwgdG8gU3R5bGU6OlRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5p
bWF0ZWRFbGVtZW50VXBkYXRlKCkuCisgICAgICAgIGlmIChhdXRvKiBsYXN0U3R5bGVDaGFuZ2VF
dmVudFN0eWxlID0gZWxlbWVudC5sYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCkpCisgICAgICAg
ICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKCpsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
KTsKIAotICAgICAgICAvLyBJbiBhbnkgb3RoZXIgc2NlbmFyaW8sIHRoZSBiZWZvcmUtY2hhbmdl
IHN0eWxlIHNob3VsZCBiZSB0aGUgcHJldmlvdXNseSByZXNvbHZlZCBzdHlsZSBmb3IgdGhpcyBl
bGVtZW50LgorICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGNvbXB1dGVkIHN0eWxlcyBmcm9tIGFu
aW1hdGlvbnMgZm9yIHRoaXMgZWxlbWVudCwgdGhlIGJlZm9yZS1jaGFuZ2Ugc3R5bGUgaXMgdGhl
IHByZXZpb3VzbHkgcmVzb2x2ZWQgc3R5bGUgZm9yIHRoaXMgZWxlbWVudC4KICAgICAgICAgcmV0
dXJuIFJlbmRlclN0eWxlOjpjbG9uZShjdXJyZW50U3R5bGUpOwogICAgIH0oKTsKIAotICAgIGlm
ICghaGFzUnVubmluZ1RyYW5zaXRpb24KKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
Y3NzLXRyYW5zaXRpb25zLTEvI2FmdGVyLWNoYW5nZS1zdHlsZQorICAgIC8vIExpa2V3aXNlLCBk
ZWZpbmUgdGhlIGFmdGVyLWNoYW5nZSBzdHlsZSBhcyB0aGUgY29tcHV0ZWQgdmFsdWVzIG9mIGFs
bCBwcm9wZXJ0aWVzIG9uIHRoZSBlbGVtZW50IGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBrbm93
biBhdCB0aGUgc3RhcnQKKyAgICAvLyBvZiB0aGF0IHN0eWxlIGNoYW5nZSBldmVudCwgYnV0IHVz
aW5nIHRoZSBjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIGFuaW1hdGlvbi0qIHByb3BlcnRpZXMgZnJv
bSB0aGUgYmVmb3JlLWNoYW5nZSBzdHlsZSwgZXhjbHVkaW5nIGFueSBzdHlsZXMKKyAgICAvLyBm
cm9tIENTUyBUcmFuc2l0aW9ucyBpbiB0aGUgY29tcHV0YXRpb24sIGFuZCBpbmhlcml0aW5nIGZy
b20gdGhlIGFmdGVyLWNoYW5nZSBzdHlsZSBvZiB0aGUgcGFyZW50LiBOb3RlIHRoYXQgdGhpcyBt
ZWFucyB0aGUgYWZ0ZXItY2hhbmdlCisgICAgLy8gc3R5bGUgZG9lcyBub3QgZGlmZmVyIGZyb20g
dGhlIGJlZm9yZS1jaGFuZ2Ugc3R5bGUgZHVlIHRvIG5ld2x5IGNyZWF0ZWQgb3IgY2FuY2VsZWQg
Q1NTIEFuaW1hdGlvbnMuCisgICAgYXV0byBhZnRlckNoYW5nZVN0eWxlID0gWyZdKCkgLT4gY29u
c3QgUmVuZGVyU3R5bGUgeworICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24p
ICYmIGFuaW1hdGlvbi0+aXNSZWxldmFudCgpKSB7CisgICAgICAgICAgICBhdXRvIGFuaW1hdGVk
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUobmV3U3R5bGUpOworICAgICAgICAgICAgYW5pbWF0
aW9uLT5yZXNvbHZlKGFuaW1hdGVkU3R5bGUpOworICAgICAgICAgICAgcmV0dXJuIGFuaW1hdGVk
U3R5bGU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKG5l
d1N0eWxlKTsKKyAgICB9KCk7CisKKyAgICBpZiAoIWVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRp
b25zRm9yUHJvcGVydHkocHJvcGVydHkpCiAgICAgICAgICYmICFDU1NQcm9wZXJ0eUFuaW1hdGlv
bjo6cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdlU3R5bGUsICZhZnRlckNo
YW5nZVN0eWxlKQogICAgICAgICAmJiBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Y2FuUHJvcGVydHlC
ZUludGVycG9sYXRlZChwcm9wZXJ0eSwgJmJlZm9yZUNoYW5nZVN0eWxlLCAmYWZ0ZXJDaGFuZ2VT
dHlsZSkKICAgICAgICAgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRp
b25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVudC5lbnN1cmVDb21wbGV0
ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSkKQEAgLTQ0Niw3ICs0NDgsNyBAQCB2b2lkIEFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShF
bGVtZW50JiBlbGVtZQogICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgaGFzUnVubmluZ1Ry
YW5zaXRpb24gPSBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3Bl
cnR5KTsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uID0gZWxlbWVudC5oYXNSdW5uaW5n
VHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7CiAgICAgaWYgKChoYXNSdW5uaW5nVHJh
bnNpdGlvbiB8fCBlbGVtZW50Lmhhc0NvbXBsZXRlZFRyYW5zaXRpb25zRm9yUHJvcGVydHkocHJv
cGVydHkpKSAmJiAhbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSB7CiAgICAgICAgIC8vIDMuIElm
IHRoZSBlbGVtZW50IGhhcyBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBjb21wbGV0ZWQgdHJhbnNp
dGlvbiBmb3IgdGhlIHByb3BlcnR5LCBhbmQgdGhlcmUgaXMgbm90IGEgbWF0Y2hpbmcgdHJhbnNp
dGlvbi1wcm9wZXJ0eQogICAgICAgICAvLyAgICB2YWx1ZSwgdGhlbiBpbXBsZW1lbnRhdGlvbnMg
bXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciByZW1vdmUgdGhlIGNvbXBsZXRl
ZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlvbnMuCkBAIC01
MTYsMTAgKzUxOCwxMCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0
aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgIH0KIH0KIAotdm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRl
Q1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKIHsKICAgICAv
LyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUi
IHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgdHJhbnNpdGlvbnMgYW5kIGRpc3JlZ2FyZCBu
ZXcgb25lcy4KLSAgICBpZiAoY3VycmVudFN0eWxlLmhhc1RyYW5zaXRpb25zKCkgJiYgY3VycmVu
dFN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0eWxl
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgeworICAgIGlmIChjdXJyZW50U3R5bGUu
aGFzVHJhbnNpdGlvbnMoKSAmJiBjdXJyZW50U3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBl
OjpOb25lICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgewogICAg
ICAgICBpZiAoZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnMoKSkgewogICAgICAgICAgICAg
YXV0byBydW5uaW5nVHJhbnNpdGlvbnMgPSBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9u
c0J5UHJvcGVydHkoKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3NzVHJhbnNpdGlv
bnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtIDogcnVubmluZ1RyYW5zaXRpb25zKQpAQCAtNTM3LDcg
KzUzOSw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgYm9vbCB0cmFuc2l0aW9uUHJv
cGVydGllc0NvbnRhaW5BbGwgPSBmYWxzZTsKICAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IHRy
YW5zaXRpb25Qcm9wZXJ0aWVzOwogICAgIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5
bGUoY3VycmVudFN0eWxlLCB0cmFuc2l0aW9uUHJvcGVydGllcywgdHJhbnNpdGlvblByb3BlcnRp
ZXNDb250YWluQWxsKTsKLSAgICBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGFm
dGVyQ2hhbmdlU3R5bGUsIHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCB0cmFuc2l0aW9uUHJvcGVydGll
c0NvbnRhaW5BbGwpOworICAgIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUobmV3
U3R5bGUsIHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCB0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRhaW5B
bGwpOwogCiAgICAgaWYgKHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCkgewogICAgICAg
ICBhdXRvIG51bWJlck9mUHJvcGVydGllcyA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXROdW1Q
cm9wZXJ0aWVzKCk7CkBAIC01NDYsMTMgKzU0OCwxMyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5l
Ojp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UgogICAgICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXRQ
cm9wZXJ0eUF0SW5kZXgocHJvcGVydHlJbmRleCwgaXNTaG9ydGhhbmQpOwogICAgICAgICAgICAg
aWYgKGlzU2hvcnRoYW5kICYmICppc1Nob3J0aGFuZCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5
KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGdlbmVy
YXRpb25UaW1lKTsKKyAgICAgICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5l
cmF0aW9uVGltZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZv
ciAoYXV0byBwcm9wZXJ0eSA6IHRyYW5zaXRpb25Qcm9wZXJ0aWVzKQotICAgICAgICB1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSwgY3Vy
cmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBnZW5lcmF0aW9uVGltZSk7CisgICAgICAgIHVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5
LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5lcmF0aW9uVGltZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmgKaW5kZXggODUxYWRkMmQxNjQ4NWZjNzE5M2Y4ODcwNzNlMzAzZWY5NThlNzNmNy4uMDc1
NDI2ZDBhOWM4NzE4MTg1YWViOTU1YTIxODcxNjg3ZjRjZDJiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdF
bGVtZW50KFdlYkFuaW1hdGlvbiYsIEVsZW1lbnQmKTsKIAogICAgIHZvaWQgdXBkYXRlQ1NTQW5p
bWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKLSAgICB2b2lkIHVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUpOworICAgIHZv
aWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJT
dHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQW5pbWF0aW9uVGltZWxpbmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaAppbmRleCA0MjQ4
ZmVlNGZkNDBhMDk3MWUzZTg2YzA3ZThhZDFjNTFhZjM0MjFmLi44Y2MzNzQzODFjNjVkNGI2NzU3
YmZlMGFlZWE2ZWUxZTE3NTVlYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oCkBAIC01MSwxMCArNTEsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xs
ZWN0aW9uJiYpOwogICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkoKSB7IHJldHVybiBtX2NvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0
eTsgfQogICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBydW5uaW5nVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KCkgeyByZXR1cm4gbV9ydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5OyB9CisgICAg
Y29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldExh
c3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxl
PiBzdHlsZSkgeyBtX2xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsg
fQogCiBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEtleWZyYW1lRWZmZWN0U3RhY2s+
IG1fa2V5ZnJhbWVFZmZlY3RTdGFjazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVy
U3R5bGU+IG1fbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZTsKICAgICBBbmltYXRpb25Db2xsZWN0
aW9uIG1fd2ViQW5pbWF0aW9uczsKICAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fY3NzQW5pbWF0
aW9uczsKICAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fdHJhbnNpdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCBmMDgxZWE0YmY0MTNjMDcx
NmU5YjBjNjgyMWVjMjhiMjNlZWFlYzVmLi5hMDI1Y2YxZmU4ZTYxN2EyYTc2NDQ0NGIzZjQwZWQ0
ODc5YmU2NThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5j
cHAKQEAgLTgzNSw3ICs4MzUsNiBAQCBib29sIEtleWZyYW1lRWZmZWN0Ojpmb3JjZUxheW91dElm
TmVlZGVkKCkKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNsZWFyQmxlbmRpbmdLZXlmcmFtZXMoKQog
ewogICAgIG1fYmxlbmRpbmdLZXlmcmFtZXNTb3VyY2UgPSBCbGVuZGluZ0tleWZyYW1lc1NvdXJj
ZTo6V2ViQW5pbWF0aW9uOwotICAgIG1fdW5hbmltYXRlZFN0eWxlID0gbnVsbHB0cjsKICAgICBt
X2JsZW5kaW5nS2V5ZnJhbWVzLmNsZWFyKCk7CiB9CiAKQEAgLTEyMTYsOSArMTIxNSw2IEBAIHZv
aWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKICAgICBp
ZiAoIWNvbXB1dGVkVGltaW5nLnByb2dyZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fdW5hbmltYXRlZFN0eWxlKQotICAgICAgICBtX3VuYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7Ci0KICAgICBzZXRBbmltYXRlZFByb3BlcnRpZXNJ
blN0eWxlKHRhcmdldFN0eWxlLCBjb21wdXRlZFRpbWluZy5wcm9ncmVzcy52YWx1ZSgpKTsKIH0K
IApAQCAtMTYxNSwxMSArMTYxMSwxNCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseVBlbmRp
bmdBY2NlbGVyYXRlZEFjdGlvbnMoKQogICAgICAgICBpZiAoIW1fYmxlbmRpbmdLZXlmcmFtZXMu
aGFzSW1wbGljaXRLZXlmcmFtZXMoKSkKICAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+c3Rh
cnRBbmltYXRpb24odGltZU9mZnNldCwgYmFja2luZ0FuaW1hdGlvbkZvckNvbXBvc2l0ZWRSZW5k
ZXJlcigpLCBtX2JsZW5kaW5nS2V5ZnJhbWVzKTsKIAotICAgICAgICBBU1NFUlQobV91bmFuaW1h
dGVkU3R5bGUpOwogICAgICAgICBBU1NFUlQobV90YXJnZXQpOworCisgICAgICAgIGF1dG8qIGxh
c3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBtX3RhcmdldC0+bGFzdFN0eWxlQ2hhbmdlRXZlbnRT
dHlsZSgpOworICAgICAgICBBU1NFUlQobGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSk7CisKICAg
ICAgICAgS2V5ZnJhbWVMaXN0IGV4cGxpY2l0S2V5ZnJhbWVzKG1fYmxlbmRpbmdLZXlmcmFtZXMu
YW5pbWF0aW9uTmFtZSgpKTsKICAgICAgICAgZXhwbGljaXRLZXlmcmFtZXMuY29weUtleWZyYW1l
cyhtX2JsZW5kaW5nS2V5ZnJhbWVzKTsKLSAgICAgICAgZXhwbGljaXRLZXlmcmFtZXMuZmlsbElt
cGxpY2l0S2V5ZnJhbWVzKCptX3RhcmdldCwgbV90YXJnZXQtPnN0eWxlUmVzb2x2ZXIoKSwgbV91
bmFuaW1hdGVkU3R5bGUuZ2V0KCkpOworICAgICAgICBleHBsaWNpdEtleWZyYW1lcy5maWxsSW1w
bGljaXRLZXlmcmFtZXMoKm1fdGFyZ2V0LCBtX3RhcmdldC0+c3R5bGVSZXNvbHZlcigpLCBsYXN0
U3R5bGVDaGFuZ2VFdmVudFN0eWxlKTsKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5zdGFydEFu
aW1hdGlvbih0aW1lT2Zmc2V0LCBiYWNraW5nQW5pbWF0aW9uRm9yQ29tcG9zaXRlZFJlbmRlcmVy
KCksIGV4cGxpY2l0S2V5ZnJhbWVzKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IDE5YWZkZjFlYTIxNWNkOGQzNzhkZmI3ODVkM2ZlZDcx
Y2I5NjRkMzQuLmI2MGNhNTQwOTkzZjAwZjYxNDY0ZDA5ODJhM2IxMWNjNjc0NTEzYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0xNjIsOCArMTYyLDYg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlELCBBY2NlbGVyYXRlZCA9IEFjY2VsZXJhdGVkOjpObykgY29uc3Q7CiAgICAgYm9vbCBp
c1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNv
bnN0OwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5hbmltYXRlZFN0eWxlLmdldCgpOyB9Ci0KICAgICBib29sIHJlcXVpcmVzUHNl
dWRvRWxlbWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjA2LDcgKzIwNCw2IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPEFjY2VsZXJhdGVkQWN0aW9uPiBtX3BlbmRpbmdBY2NlbGVyYXRlZEFj
dGlvbnM7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fdGFyZ2V0OwogICAgIFBzZXVkb0lkIG1fcHNl
dWRvSWQgeyBQc2V1ZG9JZDo6Tm9uZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5k
ZXJTdHlsZT4gbV91bmFuaW1hdGVkU3R5bGU7CiAKICAgICBBY2NlbGVyYXRlZEFjdGlvbiBtX2xh
c3RSZWNvcmRlZEFjY2VsZXJhdGVkQWN0aW9uIHsgQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3AgfTsK
ICAgICBCbGVuZGluZ0tleWZyYW1lc1NvdXJjZSBtX2JsZW5kaW5nS2V5ZnJhbWVzU291cmNlIHsg
QmxlbmRpbmdLZXlmcmFtZXNTb3VyY2U6OldlYkFuaW1hdGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IGQ5ZjgzNzgzN2ZlYTM1OGU5ZjM5ZDk2Njk1NjljNjcyMDdiMTE1MDQuLjdiMjM0
MDJhZTdhM2FjZTBiYzJmMTA5ZTE2NWIyYzljMGI5NWY5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTM5MDAsNiArMzkwMCwxOCBAQCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgRWxlbWVu
dDo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpCiAgICAgcmV0dXJuIGVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKCkucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwogfQog
Citjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgp
IGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0
YSgpKQorICAgICAgICByZXR1cm4gYW5pbWF0aW9uRGF0YS0+bGFzdFN0eWxlQ2hhbmdlRXZlbnRT
dHlsZSgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEVsZW1lbnQ6OnNldExhc3RT
dHlsZUNoYW5nZUV2ZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxlPiBz
dHlsZSkKK3sKKyAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnNldExhc3RTdHlsZUNoYW5n
ZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOworfQorCiAjaWYgRU5BQkxFKFJFU0laRV9PQlNF
UlZFUikKIAogdm9pZCBFbGVtZW50OjpkaXNjb25uZWN0RnJvbVJlc2l6ZU9ic2VydmVycygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAppbmRleCAzMWQwMjI4ZWU0ZTYyMGMxMjhiYmFlNDQxZThjZGRjMjg5ZWYw
MDYxLi4yNTNjODMzMTQyZWJlZWRhZWY1MTVkZmZiYTNkZjA0MzVhMzZlZWJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTUwMiw2ICs1MDIsOSBAQCBwdWJsaWM6CiAgICAgQ1NTQW5pbWF0aW9uQ29s
bGVjdGlvbiYgYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpOwogICAgIHZvaWQgc2V0QW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYpOwogCisgICAgY29u
c3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoKSBjb25zdDsKKyAgICB2
b2lkIHNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJl
bmRlclN0eWxlPik7CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDE2NzFkZGE2YjI0M2U1NDFmZTAwNjQ0YzQ5NTYz
NDZlOWQ1NDA0OGMuLjliMTVmODdmMmJlNzZjYmYzMWY3Nzg1OTExZGYwOWY1ZjE2NWM5MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTMxNyw2ICsz
MTcsOSBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50
VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdAogICAgICAgICAgICAgaWYgKG9sZFN0eWxl
ICYmIChvbGRTdHlsZS0+aGFzVHJhbnNpdGlvbnMoKSB8fCBuZXdTdHlsZS0+aGFzVHJhbnNpdGlv
bnMoKSkpCiAgICAgICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNTU1Ry
YW5zaXRpb25zRm9yRWxlbWVudChlbGVtZW50LCAqb2xkU3R5bGUsICpuZXdTdHlsZSk7CiAKKyAg
ICAgICAgICAgIC8vIFRoZSBvcmRlciBpbiB3aGljaCBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBB
bmltYXRpb25zIGFyZSB1cGRhdGVkIG1hdHRlcnMgc2luY2UgQ1NTIFRyYW5zaXRpb25zIGRlZmlu
ZSB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlCisgICAgICAgICAgICAvLyB0byB1c2UgQ1NTIEFuaW1h
dGlvbnMgYXMgZGVmaW5lZCBpbiB0aGUgcHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50LiBBcyBz
dWNoLCB3ZSB1cGRhdGUgQ1NTIEFuaW1hdGlvbnMgYWZ0ZXIgQ1NTIFRyYW5zaXRpb25zCisgICAg
ICAgICAgICAvLyBzdWNoIHRoYXQgd2hlbiBDU1MgVHJhbnNpdGlvbnMgYXJlIHVwZGF0ZWQgdGhl
IENTUyBBbmltYXRpb25zIGRhdGEgaXMgdGhlIHNhbWUgYXMgZHVyaW5nIHRoZSBwcmV2aW91cyBz
dHlsZSBjaGFuZ2UgZXZlbnQuCiAgICAgICAgICAgICBpZiAoKG9sZFN0eWxlICYmIG9sZFN0eWxl
LT5oYXNBbmltYXRpb25zKCkpIHx8IG5ld1N0eWxlLT5oYXNBbmltYXRpb25zKCkpCiAgICAgICAg
ICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVt
ZW50KGVsZW1lbnQsIG9sZFN0eWxlLCAqbmV3U3R5bGUpOwogICAgICAgICB9CkBAIC0zMjUsMTAg
KzMyOCwxNCBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVt
ZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdAogICAgIC8vIE5vdyB3ZSBjYW4gdXBk
YXRlIGFsbCBXZWIgYW5pbWF0aW9ucywgd2hpY2ggd2lsbCBpbmNsdWRlIENTUyBBbmltYXRpb25z
IGFzIHdlbGwKICAgICAvLyBhcyBhbmltYXRpb25zIGNyZWF0ZWQgdmlhIHRoZSBKUyBBUEkuCiAg
ICAgaWYgKGVsZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKCkpIHsKKyAgICAgICAgLy8gUmVjb3Jk
IHRoZSBzdHlsZSBwcmlvciB0byBhcHBseWluZyBhbmltYXRpb25zIGZvciB0aGlzIHN0eWxlIGNo
YW5nZSBldmVudC4KKyAgICAgICAgZWxlbWVudC5zZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
KFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpKTsKKyAgICAgICAgLy8gQXBwbHkgYWxs
IGtleWZyYW1lIGVmZmVjdHMgdG8gdGhlIG5ldyBzdHlsZS4KICAgICAgICAgYXV0byBhbmltYXRl
ZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSk7CiAgICAgICAgIGFuaW1h
dGlvbkltcGFjdCA9IGVsZW1lbnQuYXBwbHlLZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUp
OwogICAgICAgICBuZXdTdHlsZSA9IFdURk1vdmUoYW5pbWF0ZWRTdHlsZSk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBlbGVtZW50LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUobnVs
bHB0cik7CiAKICAgICAvLyBPbGQgY29kZSBwYXRoIGZvciBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NT
IFRyYW5zaXRpb25zLgogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb25FbmFibGVkKCkpIHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBh
ZGFhNDkwMmQ5MjIyMTQzMTViMmRmYzQ2OWVkYzQ3ODk2MGI0ODQyLi42ZmU2Y2QxOGE5ODAxYThi
Y2U3MGE0YjcyNjU1Y2YyOWUzZTM0NTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDUt
MjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBIYXJkd2Fy
ZSBmaWxsLWZvcndhcmRzIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlvbnMgZG9uJ3QgaW50ZXJhY3Qg
Y29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyNDEwNDEyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRoYXQg
cmVwcm9kdWNlcyB0aGUgaXNzdWUgc2hvd24gYnkgdGhlIG9yaWdpbmFsIHRlc3QgY2FzZSBmb3Ig
dGhpcyBidWcuIFdoaWxlIGFuIGFuaW1hdGlvbiBpcyBydW5uaW5nCisgICAgICAgIGZvciBhIENT
UyBwcm9wZXJ0eSwgd2UgY2hhbmdlIHRoZSB1bmRlcmx5aW5nIHZhbHVlIGZvciB0aGF0IGFuaW1h
dGVkIHByb3BlcnR5IHdoaWNoIGlzIGFsc28gc2V0IGFzIHRoZSB0cmFuc2l0aW9uLXByb3BlcnR5
CisgICAgICAgIHZhbHVlLiBUaGUgY29ycmVjdCBiZWhhdmlvciBpcyB0byBub3Qgc3RhcnQgYSBD
U1MgVHJhbnNpdGlvbiBlaXRoZXIgd2hlbiBjaGFuZ2luZyB0aGUgdW5kZXJseWluZyB2YWx1ZSBk
dXJpbmcgdGhlCisgICAgICAgIENTUyBBbmltYXRpb24gbm9yIGF0IHRoZSBlbmQgb2YgdGhlIENT
UyBBbmltYXRpb24uCisKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL3VwZGF0aW5nLXByb3BlcnR5
LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5pbWF0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10
YXJnZXRlZC1ieS1jc3MtdHJhbnNpdGlvbi1kdXJpbmctY3NzLWFuaW1hdGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wNS0yNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW1RGQ10gSWdub3JlIHNlY3Rpb24gYm9yZGVycyBldmVuIHdoZW4gYm9yZGVyIGNv
bGxhcHNlIGlzIG9mZi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDczZWFlZmE4
M2ZiOTA4ZjdlNzI2MzFmNDFjMGE5YzAzODQyZWI3YWYuLjE2YjVmODA2OTExNDUyNjAwYjhmNDY4
YzA3MmMyNzcxZmQxZTE4YmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTA1LTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CisKKyAgICAgICAgSGFyZHdhcmUgZmlsbC1mb3J3YXJkcyBhbmltYXRpb24gYW5kIHRyYW5zaXRp
b25zIGRvbid0IGludGVyYWN0IGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjQx
MDQxMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YXJrIGEgcHJvZ3Jlc3Npb24gZm9yIGEgV1BUIHRlc3QuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRpb24vc3R5bGUtY2hhbmdl
LWV2ZW50cy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDUtMjIgIENhcmxvcyBBbGJlcnRvIExvcGV6
IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBVcGRhdGUg
V1BUIGltcG9ydGVkIHRlc3RzIGFuZCBkZWR1cGxpY2F0ZSBjb21tb24gdGVzdHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1h
dGlvbnMvaW50ZXJmYWNlcy9BbmltYXRpb24vc3R5bGUtY2hhbmdlLWV2ZW50cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmlt
YXRpb25zL2ludGVyZmFjZXMvQW5pbWF0aW9uL3N0eWxlLWNoYW5nZS1ldmVudHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDE4OGMxZGNlMzk0YTdhNzY4NTNmOTQ4NTI0ODIyMGExNmM3MTMxOTUuLjEwZjdj
MzViNTYwYjkyZmE1OWM1NzdjZmU0NzM1YzhmOTk2MmE4YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvaW50ZXJm
YWNlcy9BbmltYXRpb24vc3R5bGUtY2hhbmdlLWV2ZW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0FuaW1hdGlvbi9zdHlsZS1jaGFuZ2UtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAt
MjAsNyArMjAsNyBAQCBQQVNTIEFuaW1hdGlvbi5wbGF5IHByb2R1Y2VzIGV4cGVjdGVkIHN0eWxl
IGNoYW5nZSBldmVudHMKIFBBU1MgQW5pbWF0aW9uLnBhdXNlIHByb2R1Y2VzIGV4cGVjdGVkIHN0
eWxlIGNoYW5nZSBldmVudHMgCiBQQVNTIEFuaW1hdGlvbi51cGRhdGVQbGF5YmFja1JhdGUgcHJv
ZHVjZXMgZXhwZWN0ZWQgc3R5bGUgY2hhbmdlIGV2ZW50cyAKIFBBU1MgQW5pbWF0aW9uLnJldmVy
c2UgcHJvZHVjZXMgZXhwZWN0ZWQgc3R5bGUgY2hhbmdlIGV2ZW50cyAKLUZBSUwgQW5pbWF0aW9u
LnBlcnNpc3QgcHJvZHVjZXMgZXhwZWN0ZWQgc3R5bGUgY2hhbmdlIGV2ZW50cyBhc3NlcnRfZmFs
c2U6IEEgdHJhbnNpdGlvbiBzaG91bGQgTk9UIGhhdmUgYmVlbiB0cmlnZ2VyZWQgZXhwZWN0ZWQg
ZmFsc2UgZ290IHRydWUKK1BBU1MgQW5pbWF0aW9uLnBlcnNpc3QgcHJvZHVjZXMgZXhwZWN0ZWQg
c3R5bGUgY2hhbmdlIGV2ZW50cyAKIEZBSUwgQW5pbWF0aW9uLmNvbW1pdFN0eWxlcyBwcm9kdWNl
cyBleHBlY3RlZCBzdHlsZSBjaGFuZ2UgZXZlbnRzIGFzc2VydF90cnVlOiBBIHRyYW5zaXRpb24g
c2hvdWxkIGhhdmUgYmVlbiB0cmlnZ2VyZWQgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIFBBU1Mg
QW5pbWF0aW9uLkFuaW1hdGlvbiBjb25zdHJ1Y3RvciBwcm9kdWNlcyBleHBlY3RlZCBzdHlsZSBj
aGFuZ2UgZXZlbnRzIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3Vw
ZGF0aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvdXBkYXRpbmct
cHJvcGVydHktdGFyZ2V0ZWQtYnktY3NzLXRyYW5zaXRpb24tZHVyaW5nLWNzcy1hbmltYXRpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzOWYzODk4ZmFiZWUwYzkxZGEzZDUzZDczMjU1MjQx
MzA5NWM1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3Vw
ZGF0aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1cmluZy1jc3MtYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBVcGRhdGluZyBhIENT
UyBwcm9wZXJ0eSBzZXQgYXMgYSB0cmFuc2l0aW9uLXByb3BlcnR5IHdoaWxlIGEgQ1NTIEFuaW1h
dGlvbiBpcyBhbHJlYWR5IGFuaW1hdGluZyB0aGF0IHByb3BlcnR5LiAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10YXJnZXRlZC1ieS1j
c3MtdHJhbnNpdGlvbi1kdXJpbmctY3NzLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy91cGRhdGluZy1wcm9wZXJ0eS10YXJnZXRlZC1ieS1jc3MtdHJhbnNpdGlvbi1k
dXJpbmctY3NzLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwZGJkMTczZTgzODVhMWVjODg1
YWE4MmM3NWE1ZTMxYTRkYzQxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJh
bmltYXRpb25zL3VwZGF0aW5nLXByb3BlcnR5LXRhcmdldGVkLWJ5LWNzcy10cmFuc2l0aW9uLWR1
cmluZy1jc3MtYW5pbWF0aW9uLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+VXBkYXRpbmcgYSBDU1MgcHJvcGVydHkg
c2V0IGFzIGEgdHJhbnNpdGlvbi1wcm9wZXJ0eSB3aGlsZSBhIENTUyBBbmltYXRpb24gaXMgYWxy
ZWFkeSBhbmltYXRpbmcgdGhhdCBwcm9wZXJ0eTwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9j
c3MiIG1lZGlhPSJzY3JlZW4iPgorCisudGFyZ2V0IHsKKyAgICBhbmltYXRpb246IGFuaW1hdGlv
biAyczsKKyAgICB0cmFuc2l0aW9uOiBtYXJnaW4tbGVmdCAxczsKK30KKworLnRhcmdldC5pbi1m
bGlnaHQgeworICAgIG1hcmdpbi1sZWZ0OiAyMDBweDsKK30KKworQGtleWZyYW1lcyBhbmltYXRp
b24geworICAgIGZyb20geyBtYXJnaW4tbGVmdDogNTBweCB9CisgICAgdG8gICB7IG1hcmdpbi1s
ZWZ0OiAxMDBweCB9Cit9CisKKzwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCisndXNlIHN0cmlj
dCc7CisKK3Rlc3QodGVzdCA9PiB7CisgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgdGFyZ2V0LmNs
YXNzTGlzdC5hZGQoInRhcmdldCIpOworCisgICAgbGV0IGFuaW1hdGlvbnMgPSB0YXJnZXQuZ2V0
QW5pbWF0aW9ucygpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgsIDEsICJU
aGVyZSBpcyBvbmUgYW5pbWF0aW9uIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBhZnRlciBzdGFydGlu
ZyB0aGUgdGVzdC4iKTsKKworICAgIGNvbnN0IGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbMF07Cisg
ICAgYXNzZXJ0X3RydWUoYW5pbWF0aW9uIGluc3RhbmNlb2YgQ1NTQW5pbWF0aW9uLCAxLCAiVGhl
cmUgaXMgb25lIENTUyBBbmltYXRpb24gYXBwbGllZCB0byB0aGUgdGFyZ2V0IGFmdGVyIHN0YXJ0
aW5nIHRoZSB0ZXN0LiIpOworCisgICAgLy8gVXBkYXRlIG9wYWNpdHkgd2hpbGUgdGhlIENTUyBB
bmltYXRpb24gaXMgcnVubmluZy4gVGhpcyBzaG91bGQgbm90IGluaXRpYXRlIGEgQ1NTIFRyYW5z
aXRpb24uCisgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoImluLWZsaWdodCIpOworICAgIGFuaW1h
dGlvbnMgPSB0YXJnZXQuZ2V0QW5pbWF0aW9ucygpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0
aW9ucy5sZW5ndGgsIDEsICJUaGVyZSBpcyBvbmUgYW5pbWF0aW9uIGFwcGxpZWQgdG8gdGhlIHRh
cmdldCBhZnRlciB1cGRhdGluZyB0aGUgYW5pbWF0ZWQgcHJvcGVydHkuIik7CisgICAgYXNzZXJ0
X2VxdWFscyhhbmltYXRpb25zWzBdLCBhbmltYXRpb24sICJUaGUgc2luZ2xlIHJ1bm5pbmcgYW5p
bWF0aW9uIGlzIHRoZSBvcmlnaW5hbCBDU1MgQW5pbWF0aW9uLiIpOworCisgICAgLy8gRmluaXNo
IHRoZSBhbmltYXRpb24gYW5kIGNoZWNrIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gc3RhcnRlZCB0
aGVuIGVpdGhlci4KKyAgICBhbmltYXRpb24uZmluaXNoKCk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KHRhcmdldC5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAwLCAiVGhlcmUgaXMgbm8gYW5pbWF0aW9u
IHJ1bm5pbmcgYWZ0ZXIgZmluaXNoaW5nIHRoZSBDU1MgQW5pbWF0aW9uLiIpOworCisgICAgYXNz
ZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKHRhcmdldCkubWFyZ2luTGVmdCwgIjIwMHB4Iiwg
IlRoZSBmaW5hbCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IGlzIHRoZSBvbmUgc2V0IGR1cmluZyB0
aGUgYW5pbWF0aW9uLiIpOworCisgICAgdGFyZ2V0LnJlbW92ZSgpOworfSwgYFVwZGF0aW5nIGEg
Q1NTIHByb3BlcnR5IHNldCBhcyBhIHRyYW5zaXRpb24tcHJvcGVydHkgd2hpbGUgYSBDU1MgQW5p
bWF0aW9uIGlzIGFscmVhZHkgYW5pbWF0aW5nIHRoYXQgcHJvcGVydHkuYCk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="415667"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>