<?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>208079</bug_id>
          
          <creation_ts>2020-02-21 16:32:45 -0800</creation_ts>
          <short_desc>AnimationTimeline should not have multiple HashMaps with raw Element* keys</short_desc>
          <delta_ts>2020-03-12 00:48:52 -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>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208069</see_also>
          <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>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621802</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-21 16:32:45 -0800</bug_when>
    <thetext>We need to find a different solution to the 6 HashMaps that AnimationTimeline has. We have to consult each of them every time we remove an element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621803</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-21 16:33:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/59687906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621828</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-21 17:54:01 -0800</bug_when>
    <thetext>We should probably move these data structures to hang off of ElementRareData. Create something like ElementAnimationRareData and then put it on ElementRareData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622108</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-02-24 03:51:33 -0800</bug_when>
    <thetext>I like Ryosuke&apos;s suggestion and will implement that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628351</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-10 12:08:11 -0700</bug_when>
    <thetext>Should also make KeyframeEffectStack hang off that instead of ElementRareData directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628536</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-10 22:40:04 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #4)
&gt; Should also make KeyframeEffectStack hang off that instead of
&gt; ElementRareData directly.

That would make most sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628586</commentid>
    <comment_count>6</comment_count>
      <attachid>393217</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 04:04:19 -0700</bug_when>
    <thetext>Created attachment 393217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628588</commentid>
    <comment_count>7</comment_count>
      <attachid>393219</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 04:08:00 -0700</bug_when>
    <thetext>Created attachment 393219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628616</commentid>
    <comment_count>8</comment_count>
      <attachid>393231</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 06:14:18 -0700</bug_when>
    <thetext>Created attachment 393231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628618</commentid>
    <comment_count>9</comment_count>
      <attachid>393233</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 06:27:35 -0700</bug_when>
    <thetext>Created attachment 393233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628669</commentid>
    <comment_count>10</comment_count>
      <attachid>393233</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-11 09:11:51 -0700</bug_when>
    <thetext>Comment on attachment 393233
Patch

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

&gt; Source/WebCore/dom/NodeRareData.h:262
&gt; +        Animations = 1 &lt;&lt; 14,

I think you missed the #if DUMP_NODE_STATISTICS code that uses this enum value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628682</commentid>
    <comment_count>11</comment_count>
      <attachid>393252</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 09:37:08 -0700</bug_when>
    <thetext>Created attachment 393252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628683</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 09:38:12 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #10)
&gt; Comment on attachment 393233 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393233&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/NodeRareData.h:262
&gt; &gt; +        Animations = 1 &lt;&lt; 14,
&gt; 
&gt; I think you missed the #if DUMP_NODE_STATISTICS code that uses this enum
&gt; value.

I did! I added the required code in the newest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628821</commentid>
    <comment_count>13</comment_count>
      <attachid>393252</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-11 13:15:30 -0700</bug_when>
    <thetext>Comment on attachment 393252
Patch

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

&gt; Source/WebCore/animation/AnimationTimeline.cpp:105
&gt; +    if (is&lt;CSSTransition&gt;(animation) &amp;&amp; downcast&lt;CSSTransition&gt;(animation).owningElement())
&gt; +        element.transitions().add(&amp;animation);

Should we check that the owning element is same as element here??

&gt; Source/WebCore/animation/AnimationTimeline.cpp:107
&gt; +    else if (is&lt;CSSAnimation&gt;(animation) &amp;&amp; downcast&lt;CSSAnimation&gt;(animation).owningElement())
&gt; +        element.cssAnimations().add(&amp;animation);

Ditto.

&gt; Source/WebCore/animation/ElementAnimationRareData.h:38
&gt; +    WTF_MAKE_FAST_ALLOCATED;

Make this not copyable?

&gt; Source/WebCore/dom/Element.h:496
&gt; +    AnimationCollection&amp; webAnimations();

Should we also forward declare AnimationCollection &amp; CSSAnimationCollection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628829</commentid>
    <comment_count>14</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-11 13:30:01 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #13)
&gt; Comment on attachment 393252 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393252&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/AnimationTimeline.cpp:105
&gt; &gt; +    if (is&lt;CSSTransition&gt;(animation) &amp;&amp; downcast&lt;CSSTransition&gt;(animation).owningElement())
&gt; &gt; +        element.transitions().add(&amp;animation);
&gt; 
&gt; Should we check that the owning element is same as element here??

These should always be the same thing, so I&apos;ll add an ASSERT().

&gt; &gt; Source/WebCore/animation/AnimationTimeline.cpp:107
&gt; &gt; +    else if (is&lt;CSSAnimation&gt;(animation) &amp;&amp; downcast&lt;CSSAnimation&gt;(animation).owningElement())
&gt; &gt; +        element.cssAnimations().add(&amp;animation);
&gt; 
&gt; Ditto.

Will add an ASSERT().

&gt; &gt; Source/WebCore/animation/ElementAnimationRareData.h:38
&gt; &gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; Make this not copyable?

Will do.

&gt; &gt; Source/WebCore/dom/Element.h:496
&gt; &gt; +    AnimationCollection&amp; webAnimations();
&gt; 
&gt; Should we also forward declare AnimationCollection &amp; CSSAnimationCollection?

No, these come from `#include &quot;WebAnimationTypes.h&quot;`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629083</commentid>
    <comment_count>15</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-12 00:48:15 -0700</bug_when>
    <thetext>Committed r258316: &lt;https://trac.webkit.org/changeset/258316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629084</commentid>
    <comment_count>16</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-03-12 00:48:52 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #13)
&gt; Comment on attachment 393252 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393252&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/AnimationTimeline.cpp:105
&gt; &gt; +    if (is&lt;CSSTransition&gt;(animation) &amp;&amp; downcast&lt;CSSTransition&gt;(animation).owningElement())
&gt; &gt; +        element.transitions().add(&amp;animation);
&gt; 
&gt; Should we check that the owning element is same as element here??

In the end that was the right thing to do and I added the equality check in the commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393217</attachid>
            <date>2020-03-11 04:04:19 -0700</date>
            <delta_ts>2020-03-11 04:07:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208079-20200311120417.patch</filename>
            <type>text/plain</type>
            <size>51038</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY2ZDY0N2ZhNGIyMjdl
ZmIwZjFiZWZkZjI3NjFlYWY1OGFhOGUxOC4uMGQ0ZjdkNzVkZjQwMzE3MzMyYTYwMWJmODk3NTk5
YWI0NjkxNjc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIEFuaW1hdGlvblRpbWVs
aW5lIHNob3VsZCBub3QgaGF2ZSBtdWx0aXBsZSBIYXNoTWFwcyB3aXRoIHJhdyBFbGVtZW50KiBr
ZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTA2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJvZHVjZSBhIG5ldyBFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEgY2xhc3MgdGhhdCBob2xkcyB0aGUgS2V5ZnJhbWVFZmZlY3RTdGFj
ayBwcmV2aW91c2x5IG93bmVkIGJ5IEVsZW1lbnRSYXJlRGF0YSBhcyB3ZWxsIGFzIGEgZmV3IG1h
cHMgYW5kIGxpc3RzCisgICAgICAgIG93bmVkIGJ5IEFuaW1hdGlvblRpbWVsaW5lIHdoaWNoIHdv
dWxkIHVzZSByYXcgRWxlbWVudCBwb2ludGVycyBhcyBrZXlzLiBTcGVjaWZpY2FsbHksIHRoaXMg
aXMgd2hhdCBjaGFuZ2VkOgorCisgICAgICAgIC0gQW5pbWF0aW9uVGltZWxpbmU6Om1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg4oaSIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YTo6cnVubmluZ1RyYW5zaXRpb25CeVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmlt
YXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9w
ZXJ0eUlEIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9DU1NB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6
OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5l
OjptX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGE6OnRyYW5zaXRpb25zKCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50
VG9DU1NBbmltYXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1h
dGlvbnMoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5lOjptX2VsZW1lbnRUb0FuaW1hdGlv
bnNNYXAg4oaSIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucygpCisKKyAg
ICAgICAgRm9yIGNvbnZlbmllbmNlLCB0aGVzZSBuZXcgbWVtYmVycyBhcmUgZXhwb3NlZCB2aWEg
RWxlbWVudCBkaXJlY3RseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9u
UGxheWJhY2tFdmVudEluaXQuaDoKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldh
c0FkZGVkVG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUNTU1RyYW5zaXRpb25G
cm9tTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25X
YXNSZW1vdmVkRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uc0ZvckVsZW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNT
U0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25U
aW1lbGluZTo6d2lsbERlc3Ryb3lSZW5kZXJlckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVsZW1lbnRXYXNSZW1vdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmlt
YXRpb25zRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eUluU3R5bGVNYXRj
aGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXApOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
VGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQW5pbWF0aW9uRnJvbU1hcEZvckVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVu
c3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIGFu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oOgorICAgICAgICAqIGFuaW1hdGlvbi9Db21wdXRl
ZEVmZmVjdFRpbWluZy5oOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21w
bGV0ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWlu
Zy5oLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhOjp+RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayk6CisgICAg
ICAgICogYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6a2V5ZnJhbWVFZmZlY3RTdGFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OndlYkFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpjc3NB
bmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6
dHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
OjphbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YTo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0Lmg6CisgICAgICAgICogYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmg6
CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlv
bi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlv
bnNNYXJrYWJsZURvdWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0czo6ZW1wdHlWYWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6YW5pbWF0aW9uUmFyZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6a2V5ZnJhbWVFZmZlY3RTdGFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
Omhhc0tleWZyYW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3
ZWJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNzc0FuaW1hdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dHJhbnNpdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjplbGVtZW50QW5pbWF0aW9uUmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjp1c2VUeXBlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6a2V5ZnJhbWVFZmZlY3RTdGFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldEtleWZy
YW1lRWZmZWN0U3RhY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoK
KwogMjAyMC0wMy0xMCAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255LmNvbT4KIAogICAg
ICAgICBbT3BlblNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBBUElzIGZvciBBRVMtQ1RSIGFuZCBB
RVMtS1cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggNTUzZjk2NDZjYjg5MjFhOTU3ZGE4NzdlZGI2NzBkZjdl
NWZmOTU4ZC4uMGQ0NTMyZjE2M2RjZmFmYzhkZjNlNzM1YjRlYzdjMDEyNmFmYzU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTQ1NSw2ICs0NTUsNyBAQCBhbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAog
YW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRp
b24uY3BwCiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKK2FuaW1hdGlvbi9FbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEuY3BwCiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCiBhbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmQ2MjVlZTA0NTM5NjM1YTk3ZmUwZDliMjFhNmIyZDk3MGVmMmRkZi4uYjZiM2NkOGEz
NWJiMDNiMGRhZmM2ZmRmMTU2N2ZjNTQ5YjJhYjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCwxMiArMjA4NCwxNCBA
QAogCQk3MTAyNUVERTFGOTlGMUVDMDA0QTI1MEMgLyogSlNBbmltYXRpb25UaW1lbGluZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEwMjVFRDkxRjk5
RjFBNzAwNEEyNTBDIC8qIEpTQW5pbWF0aW9uVGltZWxpbmUuaCAqLzsgfTsKIAkJNzEwMjVFRTAx
Rjk5RjFFQzAwNEEyNTBDIC8qIEpTRG9jdW1lbnRUaW1lbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEwMjVFREMxRjk5RjFBODAwNEEyNTBDIC8q
IEpTRG9jdW1lbnRUaW1lbGluZS5oICovOyB9OwogCQk3MTAyNUVFMjFGOTlGMUVDMDA0QTI1MEMg
LyogSlNXZWJBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxMDI1RUQ4MUY5OUYxQTYwMDRBMjUwQyAvKiBKU1dlYkFuaW1hdGlvbi5oICov
OyB9OworCQk3MTA4RUVFNjI0MThFRDVBMDA1QzNEQTcgLyogV2ViQW5pbWF0aW9uVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMDhFRUU0MjQx
OEVENTMwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTEyNDNFMjE2RkE3MTEwMEVCN0I2NyAv
KiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTEyNDNCMjE2RkE2RTAwMEVCN0I2NyAvKiBDb21wb3NpdGVP
cGVyYXRpb25PckF1dG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MTExMjQ0MTIxNkZBN0NEMDBFQjdCNjcgLyogSlNDb21wb3NpdGVPcGVyYXRp
b25PckF1dG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcxMTEyNDQwMjE2RkE3QkUwMEVCN0I2NyAvKiBKU0NvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTZF
MkNDMUZFRDc1REMwMEMwNkZERSAvKiBDb21wdXRlZEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExNkUyQ0IxRkVENzVEMTAwQzA2
RkRFIC8qIENvbXB1dGVkRWZmZWN0VGltaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExNkUyQ0YxRkVENzY1QjAwQzA2RkRFIC8qIEpTQ29t
cHV0ZWRFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxMTZFMkNFMUZFRDc2NTIwMEMwNkZERSAvKiBKU0NvbXB1dGVkRWZmZWN0VGlt
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzExNzQ0NTkxNEJDMzRFQzAwRUU1RkM4IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExNzQ0NTcxNEJDMzRF
MjAwRUU1RkM4IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovOyB9OwogCQk3MTE4RkVENTE1
Njg1Q0M2MDAzMEI3OUEgLyogSlNTVkdWaWV3U3BlYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExOEZFRDMxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZH
Vmlld1NwZWMuaCAqLzsgfTsKKwkJNzExOTQ2NTYyNDE4MUVBMTAwNDY2QzExIC8qIEVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzExOTQ2NTMyNDE4MUU4MzAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcxMUFEMTI2MjM2RDg2RTUwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMUFEMTIzMjM2RDg2RDMw
MDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTIwNzM0MDIxNkRGQjAwMDBDNzgzMjkgLyogT3B0
aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxMjA3MzNEMjE2REZBRjEwMEM3ODMyOSAvKiBPcHRpb25hbEVmZmVjdFRpbWlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcx
MjA3MzQzMjE2REZCNDEwMEM3ODMyOSAvKiBKU09wdGlvbmFsRWZmZWN0VGltaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTIwNzM0MTIxNkRGQjMx
MDBDNzgzMjkgLyogSlNPcHRpb25hbEVmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NDE5LDYgKzk0MjEsNyBAQAogCQk3MTAy
NUVEQTFGOTlGMUE3MDA0QTI1MEMgLyogSlNBbmltYXRpb25UaW1lbGluZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FuaW1hdGlvblRpbWVsaW5lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEwMjVFREIxRjk5RjFBODAwNEEyNTBDIC8qIEpT
RG9jdW1lbnRUaW1lbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50VGltZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MTAyNUVEQzFGOTlGMUE4MDA0QTI1MEMgLyogSlNEb2N1bWVudFRpbWVsaW5lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9jdW1lbnRUaW1lbGluZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MTA4RUVFNDI0MThFRDUzMDA1QzNEQTcgLyogV2ViQW5pbWF0
aW9uVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQW5pbWF0aW9u
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEwRkE3NEIxREVFNTc2RDAw
NEM3MTVFIC8qIGNvbnRyb2xzLWJhci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9ICJjb250cm9scy1iYXIuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MTBGQTc0QzFERUU1NzdFMDA0QzcxNUUgLyogY29udHJvbHMtdmlzaWJpbGl0eS1zdXBwb3J0
LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gImNvbnRyb2xzLXZp
c2liaWxpdHktc3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMTEy
NDNCMjE2RkE2RTAwMEVCN0I2NyAvKiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDMzLDYgKzk0MzYsOCBAQAogCQk3MTE3NDQ1
NzE0QkMzNEUyMDBFRTVGQzggLyogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRNZXRyaWNzQnVpbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MTE4RkVEMjE1Njg1Q0M2MDAzMEI3OUEgLyogSlNTVkdWaWV3
U3BlYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1ZpZXdT
cGVjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExOEZFRDMxNTY4NUNDNjAw
MzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdWaWV3U3BlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTE5NDY1
MzI0MTgxRTgzMDA0NjZDMTEgLyogRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTE5NDY1NTI0MTgxRTg0MDA0NjZDMTEgLyogRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcxMUFEMTIzMjM2RDg2RDMwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9uRXZlbnRCYXNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMUFEMTI1MjM2RDg2RDQwMDZGRjM3QyAv
KiBBbmltYXRpb25FdmVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQW5pbWF0aW9uRXZlbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzExRkIwNzUxREM3Njg4RjAwQzRDNzA4IC8qIHBsYWNhcmQtc3VwcG9ydC5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJwbGFjYXJkLXN1cHBvcnQuanMiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNDYsNiArMjEwNTEsOCBAQAogCQkJCTcx
NzI5Rjc5MjBGM0JBMzkwMDgwMUNFNiAvKiBEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5pZGwgKi8s
CiAJCQkJNzEyQkU0N0MxRkU4NjQ0ODAwMjAzMUNDIC8qIEVmZmVjdFRpbWluZy5oICovLAogCQkJ
CTcxMkJFNDdBMUZFODY0NDcwMDIwMzFDQyAvKiBFZmZlY3RUaW1pbmcuaWRsICovLAorCQkJCTcx
MTk0NjU1MjQxODFFODQwMDQ2NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwICov
LAorCQkJCTcxMTk0NjUzMjQxODFFODMwMDQ2NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEuaCAqLywKIAkJCQk3MTJCRTQ4MTFGRTg2NUQ0MDAyMDMxQ0MgLyogRmlsbE1vZGUuaCAqLywK
IAkJCQk3MTJCRTQ4MjFGRTg2NUQ1MDAyMDMxQ0MgLyogRmlsbE1vZGUuaWRsICovLAogCQkJCTcx
M0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25zT3B0aW9ucy5oICovLApAQCAt
MjEwNjgsNiArMjEwNzUsNyBAQAogCQkJCTcxMDI1RUMzMUY5OUYwOTYwMDRBMjUwQyAvKiBXZWJB
bmltYXRpb24uY3BwICovLAogCQkJCTcxMDI1RUMyMUY5OUYwOTYwMDRBMjUwQyAvKiBXZWJBbmlt
YXRpb24uaCAqLywKIAkJCQk3MTAyNUVDODFGOTlGMDk2MDA0QTI1MEMgLyogV2ViQW5pbWF0aW9u
LmlkbCAqLywKKwkJCQk3MTA4RUVFNDI0MThFRDUzMDA1QzNEQTcgLyogV2ViQW5pbWF0aW9uVHlw
ZXMuaCAqLywKIAkJCQk3MUMyNUFGNTIzOTJCRjNDMDBENUMwOTggLyogV2ViQW5pbWF0aW9uVXRp
bGl0aWVzLmNwcCAqLywKIAkJCQk3MTMyNDQ0RjIwMTA5RDlCMDBBRTdGQjIgLyogV2ViQW5pbWF0
aW9uVXRpbGl0aWVzLmggKi8sCiAJCQkpOwpAQCAtMjYzNzAsNiArMjYzNzgsOCBAQAogCQkJCUNE
OUQzNzVBMjE1MTYzRTQwMDQ5NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24uaCAqLywKIAkJCQlD
RDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi8sCiAJCQkJQ0Q5NEE1
Q0QxRjcxQ0I2OTAwRjUyNUM1IC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCAqLywKKwkJ
CQlDRDhEMzA2RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAgKi8sCisJCQkJQ0Q4
RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLywKIAkJCQlDRDk0QTVEMzFG
NzFDQjZDMDBGNTI1QzUgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggKi8sCiAJCQkJQ0Q5NEE1RDYx
RjcxQ0I2RDAwRjUyNUM1IC8qIENETU1lc3NhZ2VUeXBlLmggKi8sCiAJCQkJQ0QzQ0UxMUMyNDA0
NTFBRjAwNEJBMDFEIC8qIENETVByaXZhdGUuY3BwICovLApAQCAtMjYzNzksOCArMjYzODksNiBA
QAogCQkJCUNEOTRBNUNDMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovLAog
CQkJCUNEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAqLywKIAkJ
CQlDRDk0QTVENTFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLywKLQkJCQlD
RDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovLAotCQkJCUNEOEQzMDZF
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
ZW5jcnlwdGVkbWVkaWE7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjkzNjIsNiAr
MjkzNzAsNyBAQAogCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1JbnN0YW5jZVNl
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMEZDMjQwMUFBRDkwMDRCQTAxRCAvKiBD
RE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMEZEMjQwMUFBRDkwMDRCQTAx
RCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhE
MzA2RjIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0QzQ0UwRkYyNDAxQUFEQTAwNEJBMDFEIC8qIENETU1lc3NhZ2VUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDNDRTEwMDI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTkwNCw2ICsyOTkxMyw3IEBACiAJCQkJQThDNEE4MDcw
OUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUU3QzFB
MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ0MEFBOTYxQzY4NDIwODAwQTI2NUNDIC8qIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTE5NDY1NjI0MTgxRUExMDA0NjZD
MTEgLyogRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDZB
MkIxRTE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxM0JDRTFDMjM1RTNCRTUwMEZDMzlFNSAvKiBFbGVtZW50Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjVCN0ExNzExN0MxMEFDMDAwRTRBQTBBIC8qIEVsZW1lbnREYXRh
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwNDMxLDcgKzMwNDQxLDYgQEAKIAkJCQkwN0U5RTEyRTE4
RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzk0MTc5MjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRy
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk0MTc5NDE2NkVBMDRFMDA5NDE2QzIgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0Q4RDMwNkYyM0FENEZB
ODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QjQ0MkQ3MTY2
QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwN0FBNkI2QzE2NkQyQzEzMDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Q0U3N0Q1MTY3MTJBNkEwMEM1NUE0NyAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDI3
LDYgKzMzMDM2LDcgQEAKIAkJCQlBQTQ3OEE3RjE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEM0VGNDQ4MTkx
NzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcxMDI1RUQzMUY5OUYwQ0UwMDRBMjUwQyAvKiBXZWJBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTcxMDhFRUU2MjQxOEVENUEwMDVDM0RBNyAvKiBXZWJBbmlt
YXRpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEzMjQ0NTEyMDEwOURBNTAwQUU3RkIy
IC8qIFdlYkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4NTM2ODQx
RjRFNDgxNDAwRkUwOTFCIC8qIFdlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEMzNTQ0MUY3MTk3MEMwMEZGNjMyRCAvKiBXZWJB
cmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnRJbml0
LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQu
aAppbmRleCBlZjcxNGM4NmNmY2Q2NmVjYzNjODJmMjc4N2VjYThiMDc3ZmRkNGUyLi5jYjI0MzM4
MDI3NTMzYjZkYWIwZWZhMzM0OTBlMDAyOGIzMDA2YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQuaApAQCAtMjYsNyAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFdmVudEluaXQuaCIKLSNpbmNsdWRl
ICJXZWJBbmltYXRpb25VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDVlODc0YTQzYTczZWNiOGExZTdmNjFlMDBlNDhj
MTk3MTQxNGQ4NWEuLjFiY2YxZGVlMGFiY2Q4YjE3YWYyOGI4Njk0ZjUwMWU4MTA1MjNhZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAt
MTAxLDUzICsxMDEsMjkgQEAgT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25UaW1lbGluZTo6Ymlu
ZGluZ3NDdXJyZW50VGltZSgpCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldh
c0FkZGVkVG9FbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50
KQogewotICAgIFsmXSAoKSAtPiBFbGVtZW50VG9BbmltYXRpb25zTWFwJiB7Ci0gICAgICAgIGlm
IChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PENTU1RyYW5zaXRpb24+
KGFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZWxlbWVu
dFRvQ1NTVHJhbnNpdGlvbnNNYXA7Ci0gICAgICAgIGlmIChpczxDU1NBbmltYXRpb24+KGFuaW1h
dGlvbikgJiYgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24pLm93bmluZ0VsZW1lbnQo
KSkKLSAgICAgICAgICAgIHJldHVybiBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXA7Ci0gICAg
ICAgIHJldHVybiBtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXA7Ci0gICAgfSgpLmVuc3VyZSgmZWxl
bWVudCwgW10gewotICAgICAgICByZXR1cm4gQW5pbWF0aW9uQ29sbGVjdGlvbiB7IH07Ci0gICAg
fSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgmYW5pbWF0aW9uKTsKKyAgICBpZiAoaXM8Q1NTVHJhbnNp
dGlvbj4oYW5pbWF0aW9uKSAmJiBkb3duY2FzdDxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pLm93
bmluZ0VsZW1lbnQoKSkKKyAgICAgICAgZWxlbWVudC50cmFuc2l0aW9ucygpLmFkZCgmYW5pbWF0
aW9uKTsKKyAgICBlbHNlIGlmIChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNh
c3Q8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSkKKyAgICAgICAgZWxl
bWVudC5jc3NBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24pOworICAgIGVsc2UKKyAgICAgICAg
ZWxlbWVudC53ZWJBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24pOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlvbiYgdHJhbnNp
dGlvbiwgRWxlbWVudCYgZWxlbWVudCwgSGFzaE1hcDxFbGVtZW50KiwgQW5pbWF0aW9uVGltZWxp
bmU6OlByb3BlcnR5VG9UcmFuc2l0aW9uTWFwPiYgbWFwKQorc3RhdGljIGlubGluZSBib29sIHJl
bW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKENTU1RyYW5zaXRpb24mIHRyYW5zaXRpb24sIFByb3Bl
cnR5VG9UcmFuc2l0aW9uTWFwJiBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkpCiB7Ci0gICAgYXV0
byBpdGVyYXRvciA9IG1hcC5maW5kKCZlbGVtZW50KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbWFw
LmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBjc3NUcmFuc2l0aW9u
c0J5UHJvcGVydHkgPSBpdGVyYXRvci0+dmFsdWU7Ci0KICAgICBhdXRvIHRyYW5zaXRpb25JdGVy
YXRvciA9IGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0eS5maW5kKHRyYW5zaXRpb24ucHJvcGVydHko
KSk7CiAgICAgaWYgKHRyYW5zaXRpb25JdGVyYXRvciA9PSBjc3NUcmFuc2l0aW9uc0J5UHJvcGVy
dHkuZW5kKCkgfHwgdHJhbnNpdGlvbkl0ZXJhdG9yLT52YWx1ZSAhPSAmdHJhbnNpdGlvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LnJlbW92
ZSh0cmFuc2l0aW9uSXRlcmF0b3IpOwotCi0gICAgaWYgKGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0
eS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5yZW1vdmUoJmVsZW1lbnQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlQW5pbWF0aW9uRnJvbU1hcEZvckVs
ZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEFuaW1hdGlvblRpbWVsaW5lOjpFbGVtZW50
VG9BbmltYXRpb25zTWFwJiBtYXAsIEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1hcC5maW5kKCZlbGVtZW50KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBhbmltYXRpb25zID0gaXRlcmF0b3ItPnZh
bHVlOwotICAgIGFuaW1hdGlvbnMucmVtb3ZlKCZhbmltYXRpb24pOwotICAgIGlmICghYW5pbWF0
aW9ucy5zaXplKCkpCi0gICAgICAgIG1hcC5yZW1vdmUoaXRlcmF0b3IpOwotfQotCiB2b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoV2ViQW5pbWF0
aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmVtb3ZlQW5pbWF0aW9u
RnJvbU1hcEZvckVsZW1lbnQoYW5pbWF0aW9uLCBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFw
LCBlbGVtZW50KTsKLSAgICByZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9yRWxlbWVudChhbmltYXRp
b24sIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcCwgZWxlbWVudCk7Ci0gICAgcmVtb3ZlQW5p
bWF0aW9uRnJvbU1hcEZvckVsZW1lbnQoYW5pbWF0aW9uLCBtX2VsZW1lbnRUb0FuaW1hdGlvbnNN
YXAsIGVsZW1lbnQpOworICAgIGVsZW1lbnQudHJhbnNpdGlvbnMoKS5yZW1vdmUoJmFuaW1hdGlv
bik7CisgICAgZWxlbWVudC5jc3NBbmltYXRpb25zKCkucmVtb3ZlKCZhbmltYXRpb24pOworICAg
IGVsZW1lbnQud2ViQW5pbWF0aW9ucygpLnJlbW92ZSgmYW5pbWF0aW9uKTsKIAogICAgIC8vIE5v
dywgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgQ1NTIFRyYW5zaXRpb24sIHdlIHJlbW92ZSBpdCBm
cm9tIHRoZSBtX2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlEIG1h
cC4KICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHRoaXMgZm9yIENTUyBBbmltYXRpb25zIGJl
Y2F1c2UgdGhlaXIgdGltaW5nIGNhbiBiZSBzZXQgdmlhIENTUyB0byBlbmQsIHdoaWNoIHdvdWxk
IGNhdXNlIHRoaXMKQEAgLTE2Myw4ICsxMzksOCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpy
ZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQQog
CiAgICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikpIHsKICAgICAgICAgYXV0byYg
dHJhbnNpdGlvbiA9IGRvd25jYXN0PENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbik7Ci0gICAgICAg
IGlmICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudCwgbV9l
bGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRCkpCi0gICAgICAgICAg
ICByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVtZW50LCBtX2VsZW1l
bnRUb0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQpOworICAgICAgICBpZiAo
IXJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIGVsZW1lbnQucnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1RyYW5zaXRpb25G
cm9tTWFwKHRyYW5zaXRpb24sIGVsZW1lbnQuY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHko
KSk7CiAgICAgfQogfQogCkBAIC0xNzgsMTggKzE1NCwxMiBAQCBWZWN0b3I8UmVmUHRyPFdlYkFu
aW1hdGlvbj4+IEFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50
JiBlbAogICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKGVmZmVjdC0+YW5pbWF0aW9u
KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1fZWxlbWVudFRvQ1NT
VHJhbnNpdGlvbnNNYXAuY29udGFpbnMoJmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBjb25zdCBh
dXRvJiBjc3NUcmFuc2l0aW9ucyA9IG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXAuZ2V0KCZl
bGVtZW50KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFuZ2UoY3NzVHJhbnNpdGlv
bnMuYmVnaW4oKSwgY3NzVHJhbnNpdGlvbnMuZW5kKCkpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAuY29udGFpbnMoJmVsZW1lbnQpKSB7Ci0gICAg
ICAgICAgICBjb25zdCBhdXRvJiBjc3NBbmltYXRpb25zID0gbV9lbGVtZW50VG9DU1NBbmltYXRp
b25zTWFwLmdldCgmZWxlbWVudCk7Ci0gICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZFJhbmdl
KGNzc0FuaW1hdGlvbnMuYmVnaW4oKSwgY3NzQW5pbWF0aW9ucy5lbmQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5jb250YWlucygmZWxlbWVudCkp
IHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHdlYkFuaW1hdGlvbnMgPSBtX2VsZW1lbnRUb0Fu
aW1hdGlvbnNNYXAuZ2V0KCZlbGVtZW50KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5k
UmFuZ2Uod2ViQW5pbWF0aW9ucy5iZWdpbigpLCB3ZWJBbmltYXRpb25zLmVuZCgpKTsKLSAgICAg
ICAgfQorICAgICAgICBjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9ucyA9IGVsZW1lbnQudHJhbnNp
dGlvbnMoKTsKKyAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmRSYW5nZShjc3NUcmFuc2l0aW9ucy5i
ZWdpbigpLCBjc3NUcmFuc2l0aW9ucy5lbmQoKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc0Fu
aW1hdGlvbnMgPSBlbGVtZW50LmNzc0FuaW1hdGlvbnMoKTsKKyAgICAgICAgYW5pbWF0aW9ucy5h
cHBlbmRSYW5nZShjc3NBbmltYXRpb25zLmJlZ2luKCksIGNzc0FuaW1hdGlvbnMuZW5kKCkpOwor
ICAgICAgICBjb25zdCBhdXRvJiB3ZWJBbmltYXRpb25zID0gZWxlbWVudC53ZWJBbmltYXRpb25z
KCk7CisgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFuZ2Uod2ViQW5pbWF0aW9ucy5iZWdpbigp
LCB3ZWJBbmltYXRpb25zLmVuZCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gYW5pbWF0aW9uczsK
QEAgLTE5NywxMyArMTY3LDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBBbmltYXRp
b25UaW1lbGluZTo6YW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWwKIAogdm9pZCBBbmlt
YXRpb25UaW1lbGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKEVsZW1lbnQm
IGVsZW1lbnQsIENTU0FuaW1hdGlvbiYgY3NzQW5pbWF0aW9uKQogewotICAgIGF1dG8gaXRlcmF0
b3IgPSBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAuZmluZCgmZWxl
bWVudCk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cE1hcC5lbmQoKSkgewotICAgICAgICBhdXRvJiBjc3NBbmltYXRpb25zID0gaXRl
cmF0b3ItPnZhbHVlOwotICAgICAgICBjc3NBbmltYXRpb25zLnJlbW92ZSgmY3NzQW5pbWF0aW9u
KTsKLSAgICAgICAgaWYgKCFjc3NBbmltYXRpb25zLnNpemUoKSkKLSAgICAgICAgICAgIG1fZWxl
bWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUoaXRlcmF0b3IpOwot
ICAgIH0KKyAgICBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKS5yZW1vdmUoJmNz
c0FuaW1hdGlvbik7CiAKICAgICBpZiAoIWVsZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIyNiwxMCArMTkwLDEwIEBAIHZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChFbGVtZW50JiBlbGVtZW50LCBD
U1NBCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxEZXN0cm95UmVuZGVyZXJGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRvJiBjc3NUcmFuc2l0aW9uIDog
bV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5nZXQoJmVsZW1lbnQpKQorICAgIGZvciAoYXV0
byYgY3NzVHJhbnNpdGlvbiA6IGVsZW1lbnQudHJhbnNpdGlvbnMoKSkKICAgICAgICAgY3NzVHJh
bnNpdGlvbi0+Y2FuY2VsKFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Olllcyk7CiAKLSAgICBmb3Ig
KGF1dG8mIGNzc0FuaW1hdGlvbiA6IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5nZXQoJmVs
ZW1lbnQpKSB7CisgICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBlbGVtZW50LmNzc0FuaW1h
dGlvbnMoKSkgewogICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihjc3NBbmltYXRpb24pKQog
ICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKGVsZW1lbnQsIGRv
d25jYXN0PENTU0FuaW1hdGlvbj4oKmNzc0FuaW1hdGlvbikpOwogICAgICAgICBjc3NBbmltYXRp
b24tPmNhbmNlbChXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOwpAQCAtMjM5LDEyICsyMDMs
NiBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsRGVzdHJveVJlbmRlcmVyRm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50KQogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdhc1Jl
bW92ZWQoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICB3aWxsRGVzdHJveVJlbmRlcmVyRm9yRWxl
bWVudChlbGVtZW50KTsKLQotICAgIG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5yZW1vdmUoJmVs
ZW1lbnQpOwotICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5yZW1vdmUoJmVsZW1lbnQp
OwotICAgIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXAucmVtb3ZlKCZlbGVtZW50KTsKLSAg
ICBtX2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELnJlbW92ZSgm
ZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFw
LnJlbW92ZSgmZWxlbWVudCk7CiB9CiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUFu
aW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0yNjEsOSArMjE5LDkgQEAg
dm9pZCBBbmltYXRpb25UaW1lbGluZTo6d2lsbENoYW5nZVJlbmRlcmVyRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRv
JiBjc3NUcmFuc2l0aW9uIDogbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5nZXQoJmVsZW1l
bnQpKQorICAgIGZvciAoYXV0byYgY3NzVHJhbnNpdGlvbiA6IGVsZW1lbnQudHJhbnNpdGlvbnMo
KSkKICAgICAgICAgY3NzVHJhbnNpdGlvbi0+Y2FuY2VsKCk7Ci0gICAgZm9yIChhdXRvJiBjc3NB
bmltYXRpb24gOiBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAuZ2V0KCZlbGVtZW50KSkgewor
ICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5jc3NBbmltYXRpb25zKCkpIHsK
ICAgICAgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4oY3NzQW5pbWF0aW9uKSkKICAgICAgICAgICAg
IHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NB
bmltYXRpb24+KCpjc3NBbmltYXRpb24pKTsKICAgICAgICAgY3NzQW5pbWF0aW9uLT5jYW5jZWwo
KTsKQEAgLTI5MywxMyArMjUxLDggQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NT
QW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmUKIAogICAgIC8v
IEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIg
d2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3
IG9uZXMuCiAgICAgaWYgKGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUtPmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6Tm9uZSkgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9lbGVtZW50VG9DU1NB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwLmZpbmQoJmVsZW1lbnQpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwLmVu
ZCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiBjc3NBbmltYXRpb25zID0gaXRlcmF0b3ItPnZhbHVl
OwotICAgICAgICAgICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBjc3NBbmltYXRpb25zKQot
ICAgICAgICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxlKCk7Ci0gICAgICAg
ICAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAucmVtb3ZlKGl0
ZXJhdG9yKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IGVs
ZW1lbnQuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpKQorICAgICAgICAgICAgY3NzQW5pbWF0
aW9uLT5jYW5jZWxGcm9tU3R5bGUoKTsKICAgICAgICAga2V5ZnJhbWVFZmZlY3RTdGFjay5zZXRD
U1NBbmltYXRpb25MaXN0KG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzEw
LDkgKzI2Myw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAgICAgICAgIHJldHVybjsKIAog
ICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKLSAgICBhdXRvJiBwcmV2
aW91c0FuaW1hdGlvbnMgPSBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBN
YXAuZW5zdXJlKCZlbGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBDU1NBbmltYXRpb25Db2xs
ZWN0aW9uIHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgcHJldmlvdXNB
bmltYXRpb25zID0gZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7CiAKICAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWFuaW1hdGlvbnMtMS8jYW5pbWF0aW9ucwogICAg
IC8vIFRoZSBzYW1lIEBrZXlmcmFtZXMgcnVsZSBuYW1lIG1heSBiZSByZXBlYXRlZCB3aXRoaW4g
YW4gYW5pbWF0aW9uLW5hbWUuIENoYW5nZXMgdG8gdGhlIGFuaW1hdGlvbi1uYW1lIHVwZGF0ZSBl
eGlzdGluZwpAQCAtMzU2LDEwICszMDcsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKG5ld0FuaW1hdGlvbnMuaXNFbXB0eSgpKQotICAgICAg
ICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAucmVtb3ZlKCZlbGVt
ZW50KTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRC
eU1hcmt1cE1hcC5zZXQoJmVsZW1lbnQsIFdURk1vdmUobmV3QW5pbWF0aW9ucykpOworICAgIGVs
ZW1lbnQuc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChXVEZNb3ZlKG5ld0FuaW1hdGlvbnMp
KTsKIAogICAgIGtleWZyYW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0aW9uTGlzdChjdXJyZW50
QW5pbWF0aW9uTGlzdCk7CiB9CkBAIC0zNzcsNyArMzI1LDcgQEAgc3RhdGljIEtleWZyYW1lRWZm
ZWN0KiBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZW50
LCBDU1MKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIGJvb2wgcHJvcGVydHlJblN0
eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKENTU1Byb3BlcnR5SUQgcHJvcGVydHks
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQW5pbWF0aW9uVGltZWxpbmU6OlByb3BlcnR5VG9U
cmFuc2l0aW9uTWFwJiB0cmFuc2l0aW9ucykKK3N0YXRpYyBib29sIHByb3BlcnR5SW5TdHlsZU1h
dGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiB0cmFuc2l0aW9u
cykKIHsKICAgICBpZiAoYXV0byogdHJhbnNpdGlvbiA9IHRyYW5zaXRpb25zLmdldChwcm9wZXJ0
eSkpIHsKICAgICAgICAgaWYgKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVzRXF1YWwo
cHJvcGVydHksICZzdHlsZSwgJnRyYW5zaXRpb24tPnRhcmdldFN0eWxlKCkpKQpAQCAtNDEwLDEz
ICszNTgsNiBAQCBzdGF0aWMgYm9vbCB0cmFuc2l0aW9uTWF0Y2hlc1Byb3BlcnR5KGNvbnN0IEFu
aW1hdGlvbiYgdHJhbnNpdGlvbiwgQ1NTUHJvcGVydHlJRAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1BbmltYXRpb25UaW1lbGluZTo6UHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEFuaW1hdGlvblRp
bWVsaW5lOjplbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KEVsZW1lbnQmIGVsZW1l
bnQpCi17Ci0gICAgcmV0dXJuIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1By
b3BlcnR5SUQuZW5zdXJlKCZlbGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eVRv
VHJhbnNpdGlvbk1hcCB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCiBzdGF0aWMg
dm9pZCBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdHJhbnNpdGlvblByb3BlcnRpZXMsIGJv
b2wmIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCkKIHsKICAgICBpZiAodHJhbnNpdGlv
blByb3BlcnRpZXNDb250YWluQWxsKQpAQCAtNDQ0LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBIYXNoU2V0CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgQW5pbWF0aW9uVGltZWxpbmU6OlByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBQcm9wZXJ0eVRv
VHJhbnNpdGlvbk1hcCYgY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBjb25zdCBNb25v
dG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lKQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRl
Q1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWVudCwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFw
JiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYg
Y29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVy
YXRpb25UaW1lKQogewogICAgIGNvbnN0IEFuaW1hdGlvbiogbWF0Y2hpbmdCYWNraW5nQW5pbWF0
aW9uID0gbnVsbHB0cjsKICAgICBpZiAoYXV0byogdHJhbnNpdGlvbnMgPSBhZnRlckNoYW5nZVN0
eWxlLnRyYW5zaXRpb25zKCkpIHsKQEAgLTU3NCw3ICs1MTUsNyBAQCB2b2lkIEFuaW1hdGlvblRp
bWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50
JiBlbGVtZQogICAgICAgICAgICAgYXV0byBkZWxheSA9IG1hdGNoaW5nQmFja2luZ0FuaW1hdGlv
bi0+ZGVsYXkoKSA8IDAgPyBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZGVsYXko
KSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yIDogU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdB
bmltYXRpb24tPmRlbGF5KCkpOwogICAgICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMo
bWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKSAqIHJldmVyc2luZ1Nob3J0ZW5p
bmdGYWN0b3I7CiAKLSAgICAgICAgICAgIGVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoZWxlbWVudCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwg
cHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBk
ZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOworICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nVHJhbnNpdGlvbnNC
eVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwg
cHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBk
ZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gNC4gT3Ro
ZXJ3aXNlLCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlv
bgogICAgICAgICAgICAgcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5jYW5jZWxGcm9tU3R5
bGUoKTsKQEAgLTU5MCw3ICs1MzEsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAg
ICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5k
dXJhdGlvbigpKTsKICAgICAgICAgICAgIGF1dG8mIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHls
ZSA9IGN1cnJlbnRTdHlsZTsKICAgICAgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRlbmluZ0Zh
Y3RvciA9IDE7Ci0gICAgICAgICAgICBlbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5
KGVsZW1lbnQpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHBy
b3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZp
b3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVs
YXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0
ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgICAgIGVsZW1lbnQucnVubmluZ1RyYW5zaXRpb25zQnlQ
cm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHBy
b3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZp
b3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVs
YXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0
ZW5pbmdGYWN0b3IpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU5OSwyMSArNTQwLDE4IEBA
IHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiB7CiAgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1lbnQg
aXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwg
b2YgaXRzIHRyYW5zaXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCiAgICAgaWYgKGN1cnJl
bnRTdHlsZS5oYXNUcmFuc2l0aW9ucygpICYmIGN1cnJlbnRTdHlsZS5kaXNwbGF5KCkgIT0gRGlz
cGxheVR5cGU6Ok5vbmUgJiYgYWZ0ZXJDaGFuZ2VTdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpIHsKLSAgICAgICAgaWYgKG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25C
eUNTU1Byb3BlcnR5SUQuY29udGFpbnMoJmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRlbSA6IG1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQudGFrZSgmZWxlbWVudCkpCi0g
ICAgICAgICAgICAgICAgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtLnZhbHVl
LT5jYW5jZWxGcm9tU3R5bGUoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvJiBydW5uaW5nVHJh
bnNpdGlvbnMgPSBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0g
OiBydW5uaW5nVHJhbnNpdGlvbnMpCisgICAgICAgICAgICBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJv
cGVydHlJRE1hcEl0ZW0udmFsdWUtPmNhbmNlbEZyb21TdHlsZSgpOworICAgICAgICBydW5uaW5n
VHJhbnNpdGlvbnMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFNl
Y3Rpb24gMyAiU3RhcnRpbmcgb2YgdHJhbnNpdGlvbnMiIGZyb20gdGhlIENTUyBUcmFuc2l0aW9u
cyBMZXZlbCAxIHNwZWNpZmljYXRpb24uCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy10cmFuc2l0aW9ucy0xLyNzdGFydGluZwogCi0gICAgYXV0byYgcnVubmluZ1RyYW5zaXRp
b25zQnlQcm9wZXJ0eSA9IGVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoZWxlbWVu
dCk7Ci0KLSAgICBhdXRvJiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBtX2VsZW1l
bnRUb0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQuZW5zdXJlKCZlbGVtZW50
LCBbXSB7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCB7IH07Ci0gICAg
fSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVy
dHkgPSBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKKyAgICBhdXRvJiBj
b21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBlbGVtZW50LmNvbXBsZXRlZFRyYW5zaXRp
b25CeVByb3BlcnR5KCk7CiAKICAgICBhdXRvIGdlbmVyYXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5l
LmgKaW5kZXggMmM4ZDIzMGNhNDkyNjhkMWRiMDZiY2EzOWNjNDkwNTAzMzk3YWM5Yy4uZmYwZjYx
MWM2NDdkYWZmZjliZDgyMzgwYjc0ZWRlYzQwYmY5YjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTc1LDEwICs3NSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VT
dHlsZSk7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRl
ckNoYW5nZVN0eWxlKTsKIAotICAgIHVzaW5nIEFuaW1hdGlvbkNvbGxlY3Rpb24gPSBMaXN0SGFz
aFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj47Ci0gICAgdXNpbmcgRWxlbWVudFRvQW5pbWF0aW9u
c01hcCA9IEhhc2hNYXA8RWxlbWVudCosIEFuaW1hdGlvbkNvbGxlY3Rpb24+OwotICAgIHVzaW5n
IFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwID0gSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8
Q1NTVHJhbnNpdGlvbj4+OwotCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uVGltZWxpbmUoKTsKIAog
cHJvdGVjdGVkOgpAQCAtODYsMjMgKzgyLDEyIEBAIHByb3RlY3RlZDoKIAogICAgIFZlY3RvcjxX
ZWFrUHRyPFdlYkFuaW1hdGlvbj4+IG1fYWxsQW5pbWF0aW9uczsKICAgICBBbmltYXRpb25Db2xs
ZWN0aW9uIG1fYW5pbWF0aW9uczsKLSAgICBIYXNoTWFwPEVsZW1lbnQqLCBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcD4gbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0
eUlEOwogCiBwcml2YXRlOgotICAgIHVzaW5nIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gPSBMaXN0
SGFzaFNldDxSZWZQdHI8Q1NTQW5pbWF0aW9uPj47Ci0gICAgdXNpbmcgRWxlbWVudFRvQ1NTQW5p
bWF0aW9uc01hcCA9IEhhc2hNYXA8RWxlbWVudCosIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24+Owot
CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQb3NpdGlvbihXZWJBbmltYXRpb24mKTsKLSAgICBQcm9w
ZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShF
bGVtZW50Jik7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9w
ZXJ0eShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIFByb3BlcnR5VG9UcmFu
c2l0aW9uTWFwJiwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmLCBjb25zdCBNb25vdG9uaWNUaW1l
KTsKICAgICB2b2lkIHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChFbGVtZW50Jiwg
Q1NTQW5pbWF0aW9uJik7CiAKLSAgICBFbGVtZW50VG9BbmltYXRpb25zTWFwIG1fZWxlbWVudFRv
QW5pbWF0aW9uc01hcDsKLSAgICBFbGVtZW50VG9BbmltYXRpb25zTWFwIG1fZWxlbWVudFRvQ1NT
QW5pbWF0aW9uc01hcDsKLSAgICBFbGVtZW50VG9BbmltYXRpb25zTWFwIG1fZWxlbWVudFRvQ1NT
VHJhbnNpdGlvbnNNYXA7Ci0gICAgRWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcCBtX2VsZW1lbnRU
b0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXA7Ci0gICAgSGFzaE1hcDxFbGVtZW50Kiwg
UHJvcGVydHlUb1RyYW5zaXRpb25NYXA+IG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25C
eUNTU1Byb3BlcnR5SUQ7Ci0KICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJs
ZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmgKaW5kZXggNTdhYWJhMWVhNTM4NTAwNmY1NjY2NDNm
MGUxMjE4NGQ3NDRjZjhhMy4uOTE5ZmFkZjFjZDQxZjdhOTk4ZTMzOTE3ZjZhYjgwZTY4N2IzOWU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGlt
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5n
LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdFBoYXNlLmgi
CiAjaW5jbHVkZSAiRWZmZWN0VGltaW5nLmgiCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAK
aW5kZXggYTMwZDNmMGVlOTVlMWU5YmVhNDgxMmIwNzFlNTcxOTQ3MDMzNDJlNS4uZjJmNTVmNDBk
ZjcwODU1Y2E3Y2RiZjRhZWU2ODcyNGQ0MjQ5MzE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtNTQ2LDExICs1NDYsOCBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21wbGV0ZShSZWZQdHI8Q1NTVHJhbnNpdGlv
bj4gdHJhbnNpdGlvbikKICAgICBBU1NFUlQodHJhbnNpdGlvbik7CiAgICAgcmVtb3ZlQW5pbWF0
aW9uKCp0cmFuc2l0aW9uKTsKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KHRyYW5zaXRpb24t
PmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJh
bWVFZmZlY3Q+KHRyYW5zaXRpb24tPmVmZmVjdCgpKS0+dGFyZ2V0KCkpIHsKLSAgICAgICAgICAg
IG1fZWxlbWVudFRvQ29tcGxldGVkQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC5lbnN1cmUo
dGFyZ2V0LCBbXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEhhc2hNYXA8Q1NTUHJvcGVydHlJ
RCwgUmVmUHRyPENTU1RyYW5zaXRpb24+PiB7IH07Ci0gICAgICAgICAgICB9KS5pdGVyYXRvci0+
dmFsdWUuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRyYW5zaXRpb24pOwotICAgICAgICB9
CisgICAgICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4odHJh
bnNpdGlvbi0+ZWZmZWN0KCkpLT50YXJnZXQoKSkKKyAgICAgICAgICAgIHRhcmdldC0+Y29tcGxl
dGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkoKS5zZXQodHJhbnNpdGlvbi0+cHJvcGVydHkoKSwgdHJh
bnNpdGlvbik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4M2ExM2UwODZmZDFl
NzU1ZDQ1MDQ1MmYzODI4OTA0MWVhZjA2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oIgorCisj
aW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKCkKK3sK
K30KKworRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjp+RWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
KCkKK3sKK30KKworS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
OjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkKK3sKKyAgICBpZiAoIW1fa2V5ZnJhbWVFZmZl
Y3RTdGFjaykKKyAgICAgICAgbV9rZXlmcmFtZUVmZmVjdFN0YWNrID0gbWFrZVVuaXF1ZTxLZXlm
cmFtZUVmZmVjdFN0YWNrPigpOworICAgIHJldHVybiAqbV9rZXlmcmFtZUVmZmVjdFN0YWNrLmdl
dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkYzY0
NDZjNjQ4MjQ0NDlkMzE0YWJiNGM5MDhiMWE4ZWU5ODM0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaApAQCAtMCww
ICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdFN0YWNrLmgiCisjaW5jbHVk
ZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBD
U1NBbmltYXRpb247CitjbGFzcyBDU1NUcmFuc2l0aW9uOworY2xhc3MgV2ViQW5pbWF0aW9uOwor
CitjbGFzcyBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgp
OworICAgIH5FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKTsKKworICAgIEtleWZyYW1lRWZmZWN0
U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSB7IHJldHVybiBtX2tleWZyYW1lRWZmZWN0U3Rh
Y2suZ2V0KCk7IH0KKyAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVj
dFN0YWNrKCk7CisKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uJiB3ZWJBbmltYXRpb25zKCkgeyBy
ZXR1cm4gbV93ZWJBbmltYXRpb25zOyB9CisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgY3NzQW5p
bWF0aW9ucygpIHsgcmV0dXJuIG1fY3NzQW5pbWF0aW9uczsgfQorICAgIEFuaW1hdGlvbkNvbGxl
Y3Rpb24mIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gbV90cmFuc2l0aW9uczsgfQorICAgIENTU0Fu
aW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKSB7IHJldHVybiBt
X2FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXA7IH0KKyAgICB2b2lkIHNldEFuaW1hdGlvbnNDcmVh
dGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmIGFuaW1hdGlvbnMpIHsgbV9hbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwID0gV1RGTW92ZShhbmltYXRpb25zKTsgfQorICAgIFByb3Bl
cnR5VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eSgpIHsgcmV0
dXJuIG1fY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHk7IH0KKyAgICBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpIHsgcmV0dXJuIG1fcnVu
bmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eTsgfQorCitwcml2YXRlOgorCisgICAgc3RkOjp1bmlx
dWVfcHRyPEtleWZyYW1lRWZmZWN0U3RhY2s+IG1fa2V5ZnJhbWVFZmZlY3RTdGFjazsKKyAgICBB
bmltYXRpb25Db2xsZWN0aW9uIG1fd2ViQW5pbWF0aW9uczsKKyAgICBBbmltYXRpb25Db2xsZWN0
aW9uIG1fY3NzQW5pbWF0aW9uczsKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fdHJhbnNpdGlv
bnM7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBtX2FuaW1hdGlvbnNDcmVhdGVkQnlNYXJr
dXA7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9jb21wbGV0ZWRUcmFuc2l0aW9uQnlQ
cm9wZXJ0eTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCBtX3J1bm5pbmdUcmFuc2l0aW9u
c0J5UHJvcGVydHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5kZXggNTdhMTc3NDlkMDgzNDBlOTdhNDBk
YTY5MDlmYTQ1MDEyMjYwZjJmNC4uYmU4YjZkOWY0YzlkODcyZThiMDk1MzIxMzM0NWVkZTM0OTdk
ZmZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTM3
LDcgKzM3LDcgQEAKICNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgotI2luY2x1ZGUgIldlYkFuaW1h
dGlvblV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oCmluZGV4IDE2NjMyZDk0MjNkN2I2MDQ4
Yjc4MjgzMTM5ODk5NGZmZWE2NDIxMjQuLjc2ZDA5YmFiZmRhMmU0ZDU1MWFiMzg4NmRjNWNhMjNh
MmI1ODY1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRpb25hbEVm
ZmVjdFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRpb25hbEVmZmVj
dFRpbWluZy5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJGaWxsTW9kZS5oIgogI2lu
Y2x1ZGUgIlBsYXliYWNrRGlyZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5kZXggZjljMzkzMWVlOTZlMTU4ZDQwNWI0NzM2YjVh
NWI2ODc4OTBkOWJiMy4uMTA4ZDNkOWQwMWVkNzgzM2E5YzJlNGM0ZDYyYWZjOWI2Zjg1ZWRkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIldlYkFuaW1hdGlvblV0aWxpdGllcy5oIgor
I2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaAppbmRl
eCAyYjRiM2UzMmVjM2ViNzMwMDAyNmFmNzIyZDg4MDkzYzE1M2M3N2I4Li5mYjkxMzcwMTBhZTlh
NmEzM2UzMTg3YzgxYTg2NGZhY2MzYjI5MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oCkBAIC01MCwyMCArNTAsNiBAQCBpbmxpbmUg
ZG91YmxlIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGNvbnN0IFNlY29uZHMgdGltZSkK
IAogY29uc3QgYXV0byB0aW1lRXBzaWxvbiA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMC4w
MDEpOwogCi1zdHJ1Y3QgV2ViQW5pbWF0aW9uc01hcmthYmxlRG91YmxlVHJhaXRzIHsKLSAgICBz
dGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6aXNuYW4odmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdGV4cHIgZG91
YmxlIGVtcHR5VmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gICAgfQotfTsKLQotdXNpbmcgTWFya2FibGVEb3Vi
bGUgPSBNYXJrYWJsZTxkb3VibGUsIFdlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0cz47
Ci0KIGJvb2wgY29tcGFyZUFuaW1hdGlvbnNCeUNvbXBvc2l0ZU9yZGVyKFdlYkFuaW1hdGlvbiYs
IFdlYkFuaW1hdGlvbiYsIGNvbnN0IEFuaW1hdGlvbkxpc3QqKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI1ZmM5MTAwOTJhNGIzODZmODBjNTI1
ODRiNGEzY2I3NThhMzc1MjIuLmEwYzgyYzIyZTYxOWYzNGQwNzM2YjkzOGNiMTUyNjg2ZTM2YjIx
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgi
CiAjaW5jbHVkZSAiRWRpdGluZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmltYXRpb25SYXJlRGF0
YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJl
RGF0YS5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgpAQCAtMzczOCwyNiArMzczOSwz
NSBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEqIEVsZW1lbnQ6OmludGVyc2VjdGlvbk9ic2Vy
dmVyRGF0YUlmRXhpc3RzKCkKIAogI2VuZGlmCiAKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YSog
RWxlbWVudDo6YW5pbWF0aW9uUmFyZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJl
RGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpIDog
bnVsbHB0cjsKK30KKworRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50OjplbnN1cmVB
bmltYXRpb25SYXJlRGF0YSgpCit7CisgICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgp
LmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCk7Cit9CisKIEtleWZyYW1lRWZmZWN0U3RhY2sqIEVs
ZW1lbnQ6OmtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJl
RGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPmtleWZyYW1lRWZmZWN0U3RhY2soKSA6IG51bGxw
dHI7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YSgpKQor
ICAgICAgICByZXR1cm4gYW5pbWF0aW9uRGF0YS0+a2V5ZnJhbWVFZmZlY3RTdGFjaygpOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiBLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50OjplbnN1
cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkKIHsKLSAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVs
ZW1lbnRSYXJlRGF0YSgpOwotICAgIGlmICghcmFyZURhdGEua2V5ZnJhbWVFZmZlY3RTdGFjaygp
KQotICAgICAgICByYXJlRGF0YS5zZXRLZXlmcmFtZUVmZmVjdFN0YWNrKG1ha2VVbmlxdWU8S2V5
ZnJhbWVFZmZlY3RTdGFjaz4oKSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0YS5rZXlmcmFtZUVmZmVj
dFN0YWNrKCk7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkuZW5zdXJlS2V5
ZnJhbWVFZmZlY3RTdGFjaygpOwogfQogCiBib29sIEVsZW1lbnQ6Omhhc0tleWZyYW1lRWZmZWN0
cygpIGNvbnN0CiB7Ci0gICAgaWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudFJhcmVEYXRhKCkt
PmtleWZyYW1lRWZmZWN0U3RhY2soKTsKLSAgICByZXR1cm4ga2V5ZnJhbWVFZmZlY3RTdGFjayAm
JiBrZXlmcmFtZUVmZmVjdFN0YWNrLT5oYXNFZmZlY3RzKCk7CisgICAgaWYgKGF1dG8qIGFuaW1h
dGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBrZXlm
cmFtZUVmZmVjdFN0YWNrID0gYW5pbWF0aW9uRGF0YS0+a2V5ZnJhbWVFZmZlY3RTdGFjaygpKQor
ICAgICAgICAgICAgcmV0dXJuIGtleWZyYW1lRWZmZWN0U3RhY2stPmhhc0VmZmVjdHMoKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBF
bGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCkBA
IC0zNzc4LDYgKzM3ODgsNDEgQEAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gRWxlbWVudDo6
YXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWwKICAgICByZXR1cm4g
aW1wYWN0OwogfQogCitBbmltYXRpb25Db2xsZWN0aW9uJiBFbGVtZW50Ojp3ZWJBbmltYXRpb25z
KCkKK3sKKyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS53ZWJBbmltYXRpb25z
KCk7Cit9CisKK0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmNzc0FuaW1hdGlvbnMoKQor
eworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmNzc0FuaW1hdGlvbnMoKTsK
K30KKworQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6dHJhbnNpdGlvbnMoKQoreworICAg
IHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnRyYW5zaXRpb25zKCk7Cit9CisKK0NT
U0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAo
KQoreworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmFuaW1hdGlvbnNDcmVh
dGVkQnlNYXJrdXAoKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRBbmltYXRpb25zQ3JlYXRlZEJ5
TWFya3VwKENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mJiBhbmltYXRpb25zKQoreworICAgIGVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKCkuc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChXVEZNb3Zl
KGFuaW1hdGlvbnMpKTsKK30KKworUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OmNv
bXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCkKK3sKKyAgICByZXR1cm4gZW5zdXJlQW5pbWF0
aW9uUmFyZURhdGEoKS5jb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eSgpOworfQorCitQcm9w
ZXJ0eVRvVHJhbnNpdGlvbk1hcCYgRWxlbWVudDo6cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSgpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkucnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpOworfQorCiAjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKIAog
dm9pZCBFbGVtZW50OjpkaXNjb25uZWN0RnJvbVJlc2l6ZU9ic2VydmVycygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCA2ZmQ1OTkzZTZiZGZlMmQyMjI3YWJkOTMwNTJjMjBkZWZjODcyODk3Li4xYzZi
YjEyMWNiM2I5YWYxYjYwNzNhZjM4YzQ4YWZhMjc2OTM1ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTaGFkb3dSb290TW9kZS5oIgogI2luY2x1ZGUg
IlNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0eWxlQ2hhbmdlLmgiCisjaW5j
bHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJv
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBEYXRh
c2V0RE9NU3RyaW5nTWFwOwogY2xhc3MgRE9NUmVjdDsKIGNsYXNzIERPTVJlY3RMaXN0OwogY2xh
c3MgRE9NVG9rZW5MaXN0OworY2xhc3MgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOwogY2xhc3Mg
RWxlbWVudFJhcmVEYXRhOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CkBAIC00
OTEsNiArNDkzLDE0IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0tleWZyYW1lRWZmZWN0cygpIGNv
bnN0OwogICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3Rz
KFJlbmRlclN0eWxlJik7CiAKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uJiB3ZWJBbmltYXRpb25z
KCk7CisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgY3NzQW5pbWF0aW9ucygpOworICAgIEFuaW1h
dGlvbkNvbGxlY3Rpb24mIHRyYW5zaXRpb25zKCk7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlv
biYgYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpOworICAgIHZvaWQgc2V0QW5pbWF0aW9uc0Ny
ZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYpOworICAgIFByb3BlcnR5VG9U
cmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eSgpOworICAgIFByb3Bl
cnR5VG9UcmFuc2l0aW9uTWFwJiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CisKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50KGJvb2wpOwpAQCAtNzA1LDYgKzcxNSw5IEBAIHByaXZhdGU6CiAgICAgRWxlbWVu
dFJhcmVEYXRhKiBlbGVtZW50UmFyZURhdGEoKSBjb25zdDsKICAgICBFbGVtZW50UmFyZURhdGEm
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogCisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
KiBhbmltYXRpb25SYXJlRGF0YSgpIGNvbnN0OworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0
YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKTsKKwogICAgIHZpcnR1YWwgaW50IGRlZmF1bHRU
YWJJbmRleCgpIGNvbnN0OwogCiAgICAgdm9pZCBkZXRhY2hBbGxBdHRyTm9kZXNGcm9tRWxlbWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGI3YTY4NjM1M2Q3YzY4
ODQ5YTIyYmI2Zjk4MTBlMGVmNmUyM2I0OTAuLmZjY2FiNTExNzM0ODIxYTRiZDZlY2MwYTA2Mzgz
YWZlMjA0ZDk4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI0LDYg
KzI0LDcgQEAKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgogI2luY2x1
ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKKyNp
bmNsdWRlICJFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCIKICNpbmNsdWRlICJJbnRlcnNlY3Rp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKICNpbmNsdWRl
ICJOYW1lZE5vZGVNYXAuaCIKQEAgLTEwMSw4ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNDU1NBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NTU0FuaW1hdGlvbjsgfQogICAg
IHZvaWQgc2V0SGFzQ1NTQW5pbWF0aW9uKGJvb2wgdmFsdWUpIHsgbV9oYXNDU1NBbmltYXRpb24g
PSB2YWx1ZTsgfQogCi0gICAgS2V5ZnJhbWVFZmZlY3RTdGFjayoga2V5ZnJhbWVFZmZlY3RTdGFj
aygpIHsgcmV0dXJuIG1fa2V5ZnJhbWVFZmZlY3RTdGFjay5nZXQoKTsgfQotICAgIHZvaWQgc2V0
S2V5ZnJhbWVFZmZlY3RTdGFjayhzdGQ6OnVuaXF1ZV9wdHI8S2V5ZnJhbWVFZmZlY3RTdGFjaz4m
JiBrZXlmcmFtZUVmZmVjdFN0YWNrKSB7IG1fa2V5ZnJhbWVFZmZlY3RTdGFjayA9IFdURk1vdmUo
a2V5ZnJhbWVFZmZlY3RTdGFjayk7IH0KKyAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIGVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpIHsgcmV0dXJuIG1fYW5pbWF0aW9uUmFyZURhdGEuZ2V0
KCk7IH0KKyAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVuc3VyZUFuaW1hdGlvblJhcmVE
YXRhKCk7CiAKICAgICBib29sIGhhc0VsZW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNFbGVtZW50SWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0SGFzRWxlbWVudElkZW50aWZp
ZXIoYm9vbCB2YWx1ZSkgeyBtX2hhc0VsZW1lbnRJZGVudGlmaWVyID0gdmFsdWU7IH0KQEAgLTE1
OCw2ICsxNTksOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgaWYgKG1fYmVmb3JlUHNldWRv
RWxlbWVudCB8fCBtX2FmdGVyUHNldWRvRWxlbWVudCkKICAgICAgICAgICAgIHJlc3VsdC5hZGQo
VXNlVHlwZTo6UHNldWRvRWxlbWVudHMpOworICAgICAgICBpZiAobV9hbmltYXRpb25SYXJlRGF0
YSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6QW5pbWF0aW9ucyk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCkBAIC0xOTAsNyArMTkzLDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzaXplT2JzZXJ2ZXJEYXRhPiBtX3Jlc2l6ZU9ic2Vy
dmVyRGF0YTsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEtleWZyYW1lRWZmZWN0U3Rh
Y2s+IG1fa2V5ZnJhbWVFZmZlY3RTdGFjazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhPiBtX2FuaW1hdGlvblJhcmVEYXRhOwogCiAgICAgUmVmUHRyPFBzZXVk
b0VsZW1lbnQ+IG1fYmVmb3JlUHNldWRvRWxlbWVudDsKICAgICBSZWZQdHI8UHNldWRvRWxlbWVu
dD4gbV9hZnRlclBzZXVkb0VsZW1lbnQ7CkBAIC0yNDksNCArMjUyLDExIEBAIGlubGluZSB2b2lk
IEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRTdHlsZVJlbGF0aW9ucygpCiAgICAgc2V0Q2hpbGRJbmRl
eCgwKTsKIH0KIAoraW5saW5lIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgRWxlbWVudFJhcmVE
YXRhOjplbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpCit7CisgICAgaWYgKCFtX2FuaW1hdGlvblJh
cmVEYXRhKQorICAgICAgICBtX2FuaW1hdGlvblJhcmVEYXRhID0gbWFrZVVuaXF1ZTxFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGE+KCk7CisgICAgcmV0dXJuICptX2FuaW1hdGlvblJhcmVEYXRhLmdl
dCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKaW5kZXggMjcxMmQxZTZkNTdjNTZiYWVhMmNkNDk2MWQzMTIzNWVkZWIyZDNlYS4uNGJkYjEy
NjIyY2ZkODZlOTI2NDI1M2JhZTM4ZWM5YWVjZjAxZDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaApAQCAtMjQ4LDcgKzI0OCw2IEBAIHB1YmxpYzoKICAgICAgICAgQ29ubmVjdGVkRnJh
bWVDb3VudCA9IDEgPDwgMCwKICAgICAgICAgTm9kZUxpc3QgPSAxIDw8IDEsCiAgICAgICAgIE11
dGF0aW9uT2JzZXJ2ZXIgPSAxIDw8IDIsCi0KICAgICAgICAgVGFiSW5kZXggPSAxIDw8IDMsCiAg
ICAgICAgIE1pbmltdW1TaXplID0gMSA8PCA0LAogICAgICAgICBTY3JvbGxpbmdQb3NpdGlvbiA9
IDEgPDwgNSwKQEAgLTI2MCw2ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIEF0dHJpYnV0ZU1h
cCA9IDEgPDwgMTEsCiAgICAgICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIgPSAxIDw8IDEyLAogICAg
ICAgICBQc2V1ZG9FbGVtZW50cyA9IDEgPDwgMTMsCisgICAgICAgIEFuaW1hdGlvbnMgPSAxIDw8
IDE0LAogICAgIH07CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393219</attachid>
            <date>2020-03-11 04:08:00 -0700</date>
            <delta_ts>2020-03-11 06:14:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208079-20200311120758.patch</filename>
            <type>text/plain</type>
            <size>53746</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY2ZDY0N2ZhNGIyMjdl
ZmIwZjFiZWZkZjI3NjFlYWY1OGFhOGUxOC4uYzhjODAwN2MwZjQ1ZDkwOGFlNjBmODM5MDUyMDYw
MjhiYzQxYWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIwLTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIEFuaW1hdGlvblRpbWVs
aW5lIHNob3VsZCBub3QgaGF2ZSBtdWx0aXBsZSBIYXNoTWFwcyB3aXRoIHJhdyBFbGVtZW50KiBr
ZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTA2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJvZHVjZSBhIG5ldyBFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEgY2xhc3MgdGhhdCBob2xkcyB0aGUgS2V5ZnJhbWVFZmZlY3RTdGFj
ayBwcmV2aW91c2x5IG93bmVkIGJ5IEVsZW1lbnRSYXJlRGF0YSBhcyB3ZWxsIGFzIGEgZmV3IG1h
cHMgYW5kIGxpc3RzCisgICAgICAgIG93bmVkIGJ5IEFuaW1hdGlvblRpbWVsaW5lIHdoaWNoIHdv
dWxkIHVzZSByYXcgRWxlbWVudCBwb2ludGVycyBhcyBrZXlzLiBTcGVjaWZpY2FsbHksIHRoaXMg
aXMgd2hhdCBjaGFuZ2VkOgorCisgICAgICAgIC0gQW5pbWF0aW9uVGltZWxpbmU6Om1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg4oaSIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YTo6cnVubmluZ1RyYW5zaXRpb25CeVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmlt
YXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9w
ZXJ0eUlEIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9DU1NB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6
OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5l
OjptX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGE6OnRyYW5zaXRpb25zKCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50
VG9DU1NBbmltYXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1h
dGlvbnMoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5lOjptX2VsZW1lbnRUb0FuaW1hdGlv
bnNNYXAg4oaSIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucygpCisKKyAg
ICAgICAgRm9yIGNvbnZlbmllbmNlLCB0aGVzZSBuZXcgbWVtYmVycyBhcmUgZXhwb3NlZCB2aWEg
RWxlbWVudCBkaXJlY3RseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9u
UGxheWJhY2tFdmVudEluaXQuaDoKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldh
c0FkZGVkVG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUNTU1RyYW5zaXRpb25G
cm9tTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25X
YXNSZW1vdmVkRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uc0ZvckVsZW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNT
U0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25U
aW1lbGluZTo6d2lsbERlc3Ryb3lSZW5kZXJlckZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVsZW1lbnRXYXNSZW1vdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmlt
YXRpb25zRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eUluU3R5bGVNYXRj
aGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXApOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
VGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQW5pbWF0aW9uRnJvbU1hcEZvckVs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVu
c3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIGFu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oOgorICAgICAgICAqIGFuaW1hdGlvbi9Db21wdXRl
ZEVmZmVjdFRpbWluZy5oOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21w
bGV0ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWlu
Zy5oLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhOjp+RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayk6CisgICAg
ICAgICogYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6a2V5ZnJhbWVFZmZlY3RTdGFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OndlYkFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpjc3NB
bmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6
dHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
OjphbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YTo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0Lmg6CisgICAgICAgICogYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmg6
CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlv
bi9XZWJBbmltYXRpb25UeXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmguCisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b25zTWFya2FibGVEb3VibGVUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJBbmltYXRpb25zTWFya2FibGVEb3VibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0czo6
ZW1wdHlWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6YW5pbWF0aW9uUmFyZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6a2V5ZnJhbWVFZmZlY3RTdGFjayBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6Omhhc0tleWZyYW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp3ZWJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNz
c0FuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dHJhbnNpdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVy
dHkpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjplbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjp1c2VUeXBl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1h
dGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6a2V5ZnJh
bWVFZmZlY3RTdGFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURh
dGE6OnNldEtleWZyYW1lRWZmZWN0U3RhY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Ob2Rl
UmFyZURhdGEuaDoKKwogMjAyMC0wMy0xMCAgVG9tb2tpIEltYWkgIDxUb21va2kuSW1haUBzb255
LmNvbT4KIAogICAgICAgICBbT3BlblNTTF0gSW1wbGVtZW50IFdlYkNyeXB0byBBUElzIGZvciBB
RVMtQ1RSIGFuZCBBRVMtS1cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNTUzZjk2NDZjYjg5MjFhOTU3ZGE4
NzdlZGI2NzBkZjdlNWZmOTU4ZC4uMGQ0NTMyZjE2M2RjZmFmYzhkZjNlNzM1YjRlYzdjMDEyNmFm
YzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ1NSw2ICs0NTUsNyBAQCBhbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmNwcAogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCiBhbmltYXRpb24vRGVjbGFy
YXRpdmVBbmltYXRpb24uY3BwCiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKK2FuaW1h
dGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwCiBhbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwCiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKIGFuaW1hdGlvbi9XZWJB
bmltYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNmQ2MjVlZTA0NTM5NjM1YTk3ZmUwZDliMjFhNmIyZDk3MGVmMmRk
Zi4uYjZiM2NkOGEzNWJiMDNiMGRhZmM2ZmRmMTU2N2ZjNTQ5YjJhYjVjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCwx
MiArMjA4NCwxNCBAQAogCQk3MTAyNUVERTFGOTlGMUVDMDA0QTI1MEMgLyogSlNBbmltYXRpb25U
aW1lbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzEwMjVFRDkxRjk5RjFBNzAwNEEyNTBDIC8qIEpTQW5pbWF0aW9uVGltZWxpbmUuaCAqLzsgfTsK
IAkJNzEwMjVFRTAxRjk5RjFFQzAwNEEyNTBDIC8qIEpTRG9jdW1lbnRUaW1lbGluZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEwMjVFREMxRjk5RjFB
ODAwNEEyNTBDIC8qIEpTRG9jdW1lbnRUaW1lbGluZS5oICovOyB9OwogCQk3MTAyNUVFMjFGOTlG
MUVDMDA0QTI1MEMgLyogSlNXZWJBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMDI1RUQ4MUY5OUYxQTYwMDRBMjUwQyAvKiBKU1dlYkFu
aW1hdGlvbi5oICovOyB9OworCQk3MTA4RUVFNjI0MThFRDVBMDA1QzNEQTcgLyogV2ViQW5pbWF0
aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcxMDhFRUU0MjQxOEVENTMwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25UeXBlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTEyNDNFMjE2RkE3
MTEwMEVCN0I2NyAvKiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTEyNDNCMjE2RkE2RTAwMEVCN0I2NyAv
KiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTExMjQ0MTIxNkZBN0NEMDBFQjdCNjcgLyogSlNDb21w
b3NpdGVPcGVyYXRpb25PckF1dG8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcxMTEyNDQwMjE2RkE3QkUwMEVCN0I2NyAvKiBKU0NvbXBvc2l0ZU9wZXJh
dGlvbk9yQXV0by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcxMTZFMkNDMUZFRDc1REMwMEMwNkZERSAvKiBDb21wdXRlZEVmZmVjdFRpbWluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExNkUyQ0Ix
RkVENzVEMTAwQzA2RkRFIC8qIENvbXB1dGVkRWZmZWN0VGltaW5nLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExNkUyQ0YxRkVENzY1QjAwQzA2
RkRFIC8qIEpTQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTZFMkNFMUZFRDc2NTIwMEMwNkZERSAvKiBKU0NvbXB1
dGVkRWZmZWN0VGltaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzExNzQ0NTkxNEJDMzRFQzAwRUU1RkM4IC8qIFNWR1RleHRNZXRyaWNzQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEx
NzQ0NTcxNEJDMzRFMjAwRUU1RkM4IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovOyB9Owog
CQk3MTE4RkVENTE1Njg1Q0M2MDAzMEI3OUEgLyogSlNTVkdWaWV3U3BlYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExOEZFRDMxNTY4NUNDNjAwMzBC
NzlBIC8qIEpTU1ZHVmlld1NwZWMuaCAqLzsgfTsKKwkJNzExOTQ2NTYyNDE4MUVBMTAwNDY2QzEx
IC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzExOTQ2NTMyNDE4MUU4MzAwNDY2QzExIC8qIEVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxMUFEMTI2MjM2RDg2RTUwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMUFE
MTIzMjM2RDg2RDMwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTIwNzM0MDIxNkRGQjAwMDBD
NzgzMjkgLyogT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMjA3MzNEMjE2REZBRjEwMEM3ODMyOSAvKiBPcHRpb25h
bEVmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcxMjA3MzQzMjE2REZCNDEwMEM3ODMyOSAvKiBKU09wdGlvbmFsRWZmZWN0VGlt
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTIw
NzM0MTIxNkRGQjMxMDBDNzgzMjkgLyogSlNPcHRpb25hbEVmZmVjdFRpbWluZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NDE5LDYgKzk0MjEs
NyBAQAogCQk3MTAyNUVEQTFGOTlGMUE3MDA0QTI1MEMgLyogSlNBbmltYXRpb25UaW1lbGluZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FuaW1hdGlvblRpbWVs
aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEwMjVFREIxRjk5RjFBODAw
NEEyNTBDIC8qIEpTRG9jdW1lbnRUaW1lbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RvY3VtZW50VGltZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MTAyNUVEQzFGOTlGMUE4MDA0QTI1MEMgLyogSlNEb2N1bWVudFRpbWVsaW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9jdW1lbnRUaW1lbGluZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTA4RUVFNDI0MThFRDUzMDA1QzNEQTcg
LyogV2ViQW5pbWF0aW9uVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQW5pbWF0aW9uVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEwRkE3
NEIxREVFNTc2RDAwNEM3MTVFIC8qIGNvbnRyb2xzLWJhci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJjb250cm9scy1iYXIuanMiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MTBGQTc0QzFERUU1NzdFMDA0QzcxNUUgLyogY29udHJvbHMtdmlzaWJp
bGl0eS1zdXBwb3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
ImNvbnRyb2xzLXZpc2liaWxpdHktc3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxMTEyNDNCMjE2RkE2RTAwMEVCN0I2NyAvKiBDb21wb3NpdGVPcGVyYXRpb25PckF1
dG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcG9zaXRlT3BlcmF0aW9u
T3JBdXRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDMzLDYgKzk0MzYsOCBA
QAogCQk3MTE3NDQ1NzE0QkMzNEUyMDBFRTVGQzggLyogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRNZXRyaWNzQnVpbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE4RkVEMjE1Njg1Q0M2MDAzMEI3OUEg
LyogSlNTVkdWaWV3U3BlYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1NWR1ZpZXdTcGVjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExOEZF
RDMxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTVkdWaWV3U3BlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MTE5NDY1MzI0MTgxRTgzMDA0NjZDMTEgLyogRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTE5NDY1NTI0MTgxRTg0MDA0
NjZDMTEgLyogRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMUFEMTIzMjM2RDg2RDMwMDZGRjM3QyAvKiBBbmltYXRp
b25FdmVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQW5pbWF0aW9u
RXZlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMUFEMTI1MjM2RDg2
RDQwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQW5pbWF0aW9uRXZlbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzExRkIwNzUxREM3Njg4RjAwQzRDNzA4IC8qIHBsYWNhcmQtc3VwcG9y
dC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJwbGFjYXJkLXN1
cHBvcnQuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNDYsNiArMjEwNTEs
OCBAQAogCQkJCTcxNzI5Rjc5MjBGM0JBMzkwMDgwMUNFNiAvKiBEb2N1bWVudFRpbWVsaW5lT3B0
aW9ucy5pZGwgKi8sCiAJCQkJNzEyQkU0N0MxRkU4NjQ0ODAwMjAzMUNDIC8qIEVmZmVjdFRpbWlu
Zy5oICovLAogCQkJCTcxMkJFNDdBMUZFODY0NDcwMDIwMzFDQyAvKiBFZmZlY3RUaW1pbmcuaWRs
ICovLAorCQkJCTcxMTk0NjU1MjQxODFFODQwMDQ2NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEuY3BwICovLAorCQkJCTcxMTk0NjUzMjQxODFFODMwMDQ2NkMxMSAvKiBFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEuaCAqLywKIAkJCQk3MTJCRTQ4MTFGRTg2NUQ0MDAyMDMxQ0MgLyogRmls
bE1vZGUuaCAqLywKIAkJCQk3MTJCRTQ4MjFGRTg2NUQ1MDAyMDMxQ0MgLyogRmlsbE1vZGUuaWRs
ICovLAogCQkJCTcxM0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25zT3B0aW9u
cy5oICovLApAQCAtMjEwNjgsNiArMjEwNzUsNyBAQAogCQkJCTcxMDI1RUMzMUY5OUYwOTYwMDRB
MjUwQyAvKiBXZWJBbmltYXRpb24uY3BwICovLAogCQkJCTcxMDI1RUMyMUY5OUYwOTYwMDRBMjUw
QyAvKiBXZWJBbmltYXRpb24uaCAqLywKIAkJCQk3MTAyNUVDODFGOTlGMDk2MDA0QTI1MEMgLyog
V2ViQW5pbWF0aW9uLmlkbCAqLywKKwkJCQk3MTA4RUVFNDI0MThFRDUzMDA1QzNEQTcgLyogV2Vi
QW5pbWF0aW9uVHlwZXMuaCAqLywKIAkJCQk3MUMyNUFGNTIzOTJCRjNDMDBENUMwOTggLyogV2Vi
QW5pbWF0aW9uVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk3MTMyNDQ0RjIwMTA5RDlCMDBBRTdGQjIg
LyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggKi8sCiAJCQkpOwpAQCAtMjYzNzAsNiArMjYzNzgs
OCBAQAogCQkJCUNEOUQzNzVBMjE1MTYzRTQwMDQ5NjU3QiAvKiBDRE1JbnN0YW5jZVNlc3Npb24u
aCAqLywKIAkJCQlDRDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi8s
CiAJCQkJQ0Q5NEE1Q0QxRjcxQ0I2OTAwRjUyNUM1IC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24uaCAqLywKKwkJCQlDRDhEMzA2RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAg
Ki8sCisJCQkJQ0Q4RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLywKIAkJ
CQlDRDk0QTVEMzFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggKi8sCiAJ
CQkJQ0Q5NEE1RDYxRjcxQ0I2RDAwRjUyNUM1IC8qIENETU1lc3NhZ2VUeXBlLmggKi8sCiAJCQkJ
Q0QzQ0UxMUMyNDA0NTFBRjAwNEJBMDFEIC8qIENETVByaXZhdGUuY3BwICovLApAQCAtMjYzNzks
OCArMjYzODksNiBAQAogCQkJCUNEOTRBNUNDMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJl
bWVudC5oICovLAogCQkJCUNEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlv
bnMuaCAqLywKIAkJCQlDRDk0QTVENTFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUu
aCAqLywKLQkJCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovLAot
CQkJCUNEOEQzMDZFMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gZW5jcnlwdGVkbWVkaWE7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMjkzNjIsNiArMjkzNzAsNyBAQAogCQkJCUNEM0NFMEZCMjQwMUFBRDkwMDRCQTAxRCAvKiBD
RE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMEZDMjQwMUFBRDkw
MDRCQTAxRCAvKiBDRE1LZXlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMEZEMjQw
MUFBRDkwMDRCQTAxRCAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRDhEMzA2RjIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0QzQ0UwRkUyNDAxQUFEOTAwNEJBMDFEIC8qIENETU1lZGlhQ2FwYWJpbGl0
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQ0UwRkYyNDAxQUFEQTAwNEJBMDFEIC8qIENETU1l
c3NhZ2VUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNDRTEwMDI0MDFBQURBMDA0QkEwMUQg
LyogQ0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTkwNCw2ICsyOTkxMyw3IEBACiAJ
CQkJQThDNEE4MDcwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0QUU3QzFBMTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MEFBOTYxQzY4NDIwODAwQTI2NUNDIC8qIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTE5NDY1NjI0
MTgxRUExMDA0NjZDMTEgLyogRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDZBMkIxRTE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxM0JDRTFDMjM1RTNCRTUwMEZDMzlFNSAvKiBFbGVtZW50
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVCN0ExNzExN0MxMEFDMDAwRTRBQTBBIC8q
IEVsZW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNDMxLDcgKzMwNDQxLDYgQEAKIAkJ
CQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk0MTc5MjE2NkU4NTVGMDA5NDE2QzIgLyog
SW5iYW5kVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk0MTc5NDE2NkVBMDRFMDA5
NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0Q4
RDMwNkYyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3QjQ0MkQ3MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwN0FBNkI2QzE2NkQyQzEzMDBENDU2NzEgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Q0U3N0Q1MTY3MTJB
NkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTMzMDI3LDYgKzMzMDM2LDcgQEAKIAkJCQlBQTQ3OEE3RjE2Q0Q3MEMzMDA3RDFCQjQg
LyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEM0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMDI1RUQzMUY5OUYwQ0UwMDRBMjUwQyAvKiBX
ZWJBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcxMDhFRUU2MjQxOEVENUEwMDVDM0RB
NyAvKiBXZWJBbmltYXRpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEzMjQ0NTEyMDEw
OURBNTAwQUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE4NTM2ODQxRjRFNDgxNDAwRkUwOTFCIC8qIFdlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0
dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEMzNTQ0MUY3MTk3MEMwMEZG
NjMyRCAvKiBXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXli
YWNrRXZlbnRJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJh
Y2tFdmVudEluaXQuaAppbmRleCBlZjcxNGM4NmNmY2Q2NmVjYzNjODJmMjc4N2VjYThiMDc3ZmRk
NGUyLi5jYjI0MzM4MDI3NTMzYjZkYWIwZWZhMzM0OTBlMDAyOGIzMDA2YjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudEluaXQu
aApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFdmVudEluaXQu
aCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXZWJBbmlt
YXRpb25UeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDVlODc0YTQzYTczZWNiOGEx
ZTdmNjFlMDBlNDhjMTk3MTQxNGQ4NWEuLjFiY2YxZGVlMGFiY2Q4YjE3YWYyOGI4Njk0ZjUwMWU4
MTA1MjNhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25U
aW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmNwcApAQCAtMTAxLDUzICsxMDEsMjkgQEAgT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25U
aW1lbGluZTo6YmluZGluZ3NDdXJyZW50VGltZSgpCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVt
ZW50JiBlbGVtZW50KQogewotICAgIFsmXSAoKSAtPiBFbGVtZW50VG9BbmltYXRpb25zTWFwJiB7
Ci0gICAgICAgIGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PENT
U1RyYW5zaXRpb24+KGFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0
dXJuIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXA7Ci0gICAgICAgIGlmIChpczxDU1NBbmlt
YXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24pLm93
bmluZ0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2VsZW1lbnRUb0NTU0FuaW1hdGlv
bnNNYXA7Ci0gICAgICAgIHJldHVybiBtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXA7Ci0gICAgfSgp
LmVuc3VyZSgmZWxlbWVudCwgW10gewotICAgICAgICByZXR1cm4gQW5pbWF0aW9uQ29sbGVjdGlv
biB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgmYW5pbWF0aW9uKTsKKyAgICBpZiAo
aXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3duY2FzdDxDU1NUcmFuc2l0aW9uPihh
bmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSkKKyAgICAgICAgZWxlbWVudC50cmFuc2l0aW9ucygp
LmFkZCgmYW5pbWF0aW9uKTsKKyAgICBlbHNlIGlmIChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlv
bikgJiYgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSkK
KyAgICAgICAgZWxlbWVudC5jc3NBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24pOworICAgIGVs
c2UKKyAgICAgICAgZWxlbWVudC53ZWJBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24pOwogfQog
Ci1zdGF0aWMgaW5saW5lIGJvb2wgcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAoQ1NTVHJhbnNp
dGlvbiYgdHJhbnNpdGlvbiwgRWxlbWVudCYgZWxlbWVudCwgSGFzaE1hcDxFbGVtZW50KiwgQW5p
bWF0aW9uVGltZWxpbmU6OlByb3BlcnR5VG9UcmFuc2l0aW9uTWFwPiYgbWFwKQorc3RhdGljIGlu
bGluZSBib29sIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKENTU1RyYW5zaXRpb24mIHRyYW5z
aXRpb24sIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkp
CiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1hcC5maW5kKCZlbGVtZW50KTsKLSAgICBpZiAoaXRl
cmF0b3IgPT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBj
c3NUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBpdGVyYXRvci0+dmFsdWU7Ci0KICAgICBhdXRvIHRy
YW5zaXRpb25JdGVyYXRvciA9IGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0eS5maW5kKHRyYW5zaXRp
b24ucHJvcGVydHkoKSk7CiAgICAgaWYgKHRyYW5zaXRpb25JdGVyYXRvciA9PSBjc3NUcmFuc2l0
aW9uc0J5UHJvcGVydHkuZW5kKCkgfHwgdHJhbnNpdGlvbkl0ZXJhdG9yLT52YWx1ZSAhPSAmdHJh
bnNpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY3NzVHJhbnNpdGlvbnNCeVBy
b3BlcnR5LnJlbW92ZSh0cmFuc2l0aW9uSXRlcmF0b3IpOwotCi0gICAgaWYgKGNzc1RyYW5zaXRp
b25zQnlQcm9wZXJ0eS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5yZW1vdmUoJmVsZW1lbnQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlQW5pbWF0aW9u
RnJvbU1hcEZvckVsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEFuaW1hdGlvblRpbWVs
aW5lOjpFbGVtZW50VG9BbmltYXRpb25zTWFwJiBtYXAsIEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1hcC5maW5kKCZlbGVtZW50KTsKLSAgICBpZiAoaXRlcmF0b3Ig
PT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBhbmltYXRpb25zID0g
aXRlcmF0b3ItPnZhbHVlOwotICAgIGFuaW1hdGlvbnMucmVtb3ZlKCZhbmltYXRpb24pOwotICAg
IGlmICghYW5pbWF0aW9ucy5zaXplKCkpCi0gICAgICAgIG1hcC5yZW1vdmUoaXRlcmF0b3IpOwot
fQotCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1l
bnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmVt
b3ZlQW5pbWF0aW9uRnJvbU1hcEZvckVsZW1lbnQoYW5pbWF0aW9uLCBtX2VsZW1lbnRUb0NTU1Ry
YW5zaXRpb25zTWFwLCBlbGVtZW50KTsKLSAgICByZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9yRWxl
bWVudChhbmltYXRpb24sIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcCwgZWxlbWVudCk7Ci0g
ICAgcmVtb3ZlQW5pbWF0aW9uRnJvbU1hcEZvckVsZW1lbnQoYW5pbWF0aW9uLCBtX2VsZW1lbnRU
b0FuaW1hdGlvbnNNYXAsIGVsZW1lbnQpOworICAgIGVsZW1lbnQudHJhbnNpdGlvbnMoKS5yZW1v
dmUoJmFuaW1hdGlvbik7CisgICAgZWxlbWVudC5jc3NBbmltYXRpb25zKCkucmVtb3ZlKCZhbmlt
YXRpb24pOworICAgIGVsZW1lbnQud2ViQW5pbWF0aW9ucygpLnJlbW92ZSgmYW5pbWF0aW9uKTsK
IAogICAgIC8vIE5vdywgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgQ1NTIFRyYW5zaXRpb24sIHdl
IHJlbW92ZSBpdCBmcm9tIHRoZSBtX2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQ
cm9wZXJ0eUlEIG1hcC4KICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIHRoaXMgZm9yIENTUyBB
bmltYXRpb25zIGJlY2F1c2UgdGhlaXIgdGltaW5nIGNhbiBiZSBzZXQgdmlhIENTUyB0byBlbmQs
IHdoaWNoIHdvdWxkIGNhdXNlIHRoaXMKQEAgLTE2Myw4ICsxMzksOCBAQCB2b2lkIEFuaW1hdGlv
blRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0Vs
ZW1lbnQoV2ViQQogCiAgICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikpIHsKICAg
ICAgICAgYXV0byYgdHJhbnNpdGlvbiA9IGRvd25jYXN0PENTU1RyYW5zaXRpb24+KGFuaW1hdGlv
bik7Ci0gICAgICAgIGlmICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwg
ZWxlbWVudCwgbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRCkp
Ci0gICAgICAgICAgICByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVt
ZW50LCBtX2VsZW1lbnRUb0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQpOwor
ICAgICAgICBpZiAoIXJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIGVsZW1l
bnQucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkKKyAgICAgICAgICAgIHJlbW92ZUNT
U1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIGVsZW1lbnQuY29tcGxldGVkVHJhbnNpdGlv
bkJ5UHJvcGVydHkoKSk7CiAgICAgfQogfQogCkBAIC0xNzgsMTggKzE1NCwxMiBAQCBWZWN0b3I8
UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25zRm9yRWxl
bWVudChFbGVtZW50JiBlbAogICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKGVmZmVj
dC0+YW5pbWF0aW9uKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG1f
ZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXAuY29udGFpbnMoJmVsZW1lbnQpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9ucyA9IG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlv
bnNNYXAuZ2V0KCZlbGVtZW50KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFuZ2Uo
Y3NzVHJhbnNpdGlvbnMuYmVnaW4oKSwgY3NzVHJhbnNpdGlvbnMuZW5kKCkpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAuY29udGFpbnMoJmVsZW1l
bnQpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBjc3NBbmltYXRpb25zID0gbV9lbGVtZW50
VG9DU1NBbmltYXRpb25zTWFwLmdldCgmZWxlbWVudCk7Ci0gICAgICAgICAgICBhbmltYXRpb25z
LmFwcGVuZFJhbmdlKGNzc0FuaW1hdGlvbnMuYmVnaW4oKSwgY3NzQW5pbWF0aW9ucy5lbmQoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5jb250YWlu
cygmZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIHdlYkFuaW1hdGlvbnMgPSBt
X2VsZW1lbnRUb0FuaW1hdGlvbnNNYXAuZ2V0KCZlbGVtZW50KTsKLSAgICAgICAgICAgIGFuaW1h
dGlvbnMuYXBwZW5kUmFuZ2Uod2ViQW5pbWF0aW9ucy5iZWdpbigpLCB3ZWJBbmltYXRpb25zLmVu
ZCgpKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9ucyA9IGVs
ZW1lbnQudHJhbnNpdGlvbnMoKTsKKyAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmRSYW5nZShjc3NU
cmFuc2l0aW9ucy5iZWdpbigpLCBjc3NUcmFuc2l0aW9ucy5lbmQoKSk7CisgICAgICAgIGNvbnN0
IGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBlbGVtZW50LmNzc0FuaW1hdGlvbnMoKTsKKyAgICAgICAg
YW5pbWF0aW9ucy5hcHBlbmRSYW5nZShjc3NBbmltYXRpb25zLmJlZ2luKCksIGNzc0FuaW1hdGlv
bnMuZW5kKCkpOworICAgICAgICBjb25zdCBhdXRvJiB3ZWJBbmltYXRpb25zID0gZWxlbWVudC53
ZWJBbmltYXRpb25zKCk7CisgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFuZ2Uod2ViQW5pbWF0
aW9ucy5iZWdpbigpLCB3ZWJBbmltYXRpb25zLmVuZCgpKTsKICAgICB9CiAKICAgICByZXR1cm4g
YW5pbWF0aW9uczsKQEAgLTE5NywxMyArMTY3LDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRp
b24+PiBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWwK
IAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFy
a3VwKEVsZW1lbnQmIGVsZW1lbnQsIENTU0FuaW1hdGlvbiYgY3NzQW5pbWF0aW9uKQogewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBN
YXAuZmluZCgmZWxlbWVudCk7Ci0gICAgaWYgKGl0ZXJhdG9yICE9IG1fZWxlbWVudFRvQ1NTQW5p
bWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5lbmQoKSkgewotICAgICAgICBhdXRvJiBjc3NBbmlt
YXRpb25zID0gaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBjc3NBbmltYXRpb25zLnJlbW92ZSgm
Y3NzQW5pbWF0aW9uKTsKLSAgICAgICAgaWYgKCFjc3NBbmltYXRpb25zLnNpemUoKSkKLSAgICAg
ICAgICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUo
aXRlcmF0b3IpOwotICAgIH0KKyAgICBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAo
KS5yZW1vdmUoJmNzc0FuaW1hdGlvbik7CiAKICAgICBpZiAoIWVsZW1lbnQuaGFzS2V5ZnJhbWVF
ZmZlY3RzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNiwxMCArMTkwLDEwIEBAIHZvaWQgQW5p
bWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChFbGVtZW50
JiBlbGVtZW50LCBDU1NBCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxEZXN0cm95UmVu
ZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChhdXRvJiBjc3NU
cmFuc2l0aW9uIDogbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5nZXQoJmVsZW1lbnQpKQor
ICAgIGZvciAoYXV0byYgY3NzVHJhbnNpdGlvbiA6IGVsZW1lbnQudHJhbnNpdGlvbnMoKSkKICAg
ICAgICAgY3NzVHJhbnNpdGlvbi0+Y2FuY2VsKFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Olllcyk7
CiAKLSAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9u
c01hcC5nZXQoJmVsZW1lbnQpKSB7CisgICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBlbGVt
ZW50LmNzc0FuaW1hdGlvbnMoKSkgewogICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihjc3NB
bmltYXRpb24pKQogICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3Vw
KGVsZW1lbnQsIGRvd25jYXN0PENTU0FuaW1hdGlvbj4oKmNzc0FuaW1hdGlvbikpOwogICAgICAg
ICBjc3NBbmltYXRpb24tPmNhbmNlbChXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOwpAQCAt
MjM5LDEyICsyMDMsNiBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsRGVzdHJveVJlbmRl
cmVyRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6
ZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICB3aWxsRGVzdHJveVJl
bmRlcmVyRm9yRWxlbWVudChlbGVtZW50KTsKLQotICAgIG1fZWxlbWVudFRvQW5pbWF0aW9uc01h
cC5yZW1vdmUoJmVsZW1lbnQpOwotICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5yZW1v
dmUoJmVsZW1lbnQpOwotICAgIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXAucmVtb3ZlKCZl
bGVtZW50KTsKLSAgICBtX2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0
eUlELnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwTWFwLnJlbW92ZSgmZWxlbWVudCk7CiB9CiAKIHZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OnJlbW92ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0yNjEs
OSArMjE5LDkgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6d2lsbENoYW5nZVJlbmRlcmVyRm9y
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpjYW5j
ZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0g
ICAgZm9yIChhdXRvJiBjc3NUcmFuc2l0aW9uIDogbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01h
cC5nZXQoJmVsZW1lbnQpKQorICAgIGZvciAoYXV0byYgY3NzVHJhbnNpdGlvbiA6IGVsZW1lbnQu
dHJhbnNpdGlvbnMoKSkKICAgICAgICAgY3NzVHJhbnNpdGlvbi0+Y2FuY2VsKCk7Ci0gICAgZm9y
IChhdXRvJiBjc3NBbmltYXRpb24gOiBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAuZ2V0KCZl
bGVtZW50KSkgeworICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5jc3NBbmlt
YXRpb25zKCkpIHsKICAgICAgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4oY3NzQW5pbWF0aW9uKSkK
ICAgICAgICAgICAgIHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChlbGVtZW50LCBk
b3duY2FzdDxDU1NBbmltYXRpb24+KCpjc3NBbmltYXRpb24pKTsKICAgICAgICAgY3NzQW5pbWF0
aW9uLT5jYW5jZWwoKTsKQEAgLTI5MywxMyArMjUxLDggQEAgdm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
UmUKIAogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlz
cGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBk
aXNyZWdhcmQgbmV3IG9uZXMuCiAgICAgaWYgKGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUt
PmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0eWxlLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9l
bGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwLmZpbmQoJmVsZW1lbnQpOwot
ICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5
TWFya3VwTWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiBjc3NBbmltYXRpb25zID0gaXRl
cmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBjc3NB
bmltYXRpb25zKQotICAgICAgICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxl
KCk7Ci0gICAgICAgICAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBN
YXAucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGNzc0Fu
aW1hdGlvbiA6IGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpKQorICAgICAgICAg
ICAgY3NzQW5pbWF0aW9uLT5jYW5jZWxGcm9tU3R5bGUoKTsKICAgICAgICAga2V5ZnJhbWVFZmZl
Y3RTdGFjay5zZXRDU1NBbmltYXRpb25MaXN0KG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMzEwLDkgKzI2Myw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNT
U0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAgICAgICAg
IHJldHVybjsKIAogICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKLSAg
ICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMgPSBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVh
dGVkQnlNYXJrdXBNYXAuZW5zdXJlKCZlbGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBDU1NB
bmltYXRpb25Db2xsZWN0aW9uIHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0
byYgcHJldmlvdXNBbmltYXRpb25zID0gZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3Vw
KCk7CiAKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWFuaW1hdGlvbnMtMS8jYW5p
bWF0aW9ucwogICAgIC8vIFRoZSBzYW1lIEBrZXlmcmFtZXMgcnVsZSBuYW1lIG1heSBiZSByZXBl
YXRlZCB3aXRoaW4gYW4gYW5pbWF0aW9uLW5hbWUuIENoYW5nZXMgdG8gdGhlIGFuaW1hdGlvbi1u
YW1lIHVwZGF0ZSBleGlzdGluZwpAQCAtMzU2LDEwICszMDcsNyBAQCB2b2lkIEFuaW1hdGlvblRp
bWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBSZQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG5ld0FuaW1hdGlvbnMuaXNFbXB0
eSgpKQotICAgICAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAu
cmVtb3ZlKCZlbGVtZW50KTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5zZXQoJmVsZW1lbnQsIFdURk1vdmUobmV3QW5pbWF0aW9u
cykpOworICAgIGVsZW1lbnQuc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChXVEZNb3ZlKG5l
d0FuaW1hdGlvbnMpKTsKIAogICAgIGtleWZyYW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0aW9u
TGlzdChjdXJyZW50QW5pbWF0aW9uTGlzdCk7CiB9CkBAIC0zNzcsNyArMzI1LDcgQEAgc3RhdGlj
IEtleWZyYW1lRWZmZWN0KiBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVt
ZW50JiBlbGVtZW50LCBDU1MKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIGJvb2wg
cHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQW5pbWF0aW9uVGltZWxpbmU6
OlByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiB0cmFuc2l0aW9ucykKK3N0YXRpYyBib29sIHByb3Bl
cnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFw
JiB0cmFuc2l0aW9ucykKIHsKICAgICBpZiAoYXV0byogdHJhbnNpdGlvbiA9IHRyYW5zaXRpb25z
LmdldChwcm9wZXJ0eSkpIHsKICAgICAgICAgaWYgKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9w
ZXJ0aWVzRXF1YWwocHJvcGVydHksICZzdHlsZSwgJnRyYW5zaXRpb24tPnRhcmdldFN0eWxlKCkp
KQpAQCAtNDEwLDEzICszNTgsNiBAQCBzdGF0aWMgYm9vbCB0cmFuc2l0aW9uTWF0Y2hlc1Byb3Bl
cnR5KGNvbnN0IEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgQ1NTUHJvcGVydHlJRAogICAgIHJldHVy
biB0cnVlOwogfQogCi1BbmltYXRpb25UaW1lbGluZTo6UHJvcGVydHlUb1RyYW5zaXRpb25NYXAm
IEFuaW1hdGlvblRpbWVsaW5lOjplbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KEVs
ZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5z
aXRpb25CeUNTU1Byb3BlcnR5SUQuZW5zdXJlKCZlbGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVy
biBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwot
fQotCiBzdGF0aWMgdm9pZCBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgdHJhbnNpdGlvblBy
b3BlcnRpZXMsIGJvb2wmIHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCkKIHsKICAgICBp
ZiAodHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKQpAQCAtNDQ0LDcgKzM4NSw3IEBAIHN0
YXRpYyB2b2lkIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBIYXNoU2V0CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5l
Ojp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVt
ZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgQW5pbWF0aW9uVGltZWxp
bmU6OlByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5
LCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
LCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lKQordm9pZCBBbmltYXRpb25UaW1l
bGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYg
ZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIFByb3BlcnR5VG9U
cmFuc2l0aW9uTWFwJiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5LCBjb25zdCBNb25vdG9u
aWNUaW1lIGdlbmVyYXRpb25UaW1lKQogewogICAgIGNvbnN0IEFuaW1hdGlvbiogbWF0Y2hpbmdC
YWNraW5nQW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICBpZiAoYXV0byogdHJhbnNpdGlvbnMgPSBh
ZnRlckNoYW5nZVN0eWxlLnRyYW5zaXRpb25zKCkpIHsKQEAgLTU3NCw3ICs1MTUsNyBAQCB2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9w
ZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICAgICAgYXV0byBkZWxheSA9IG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSA8IDAgPyBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1h
dGlvbi0+ZGVsYXkoKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yIDogU2Vjb25kcyhtYXRj
aGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkpOwogICAgICAgICAgICAgYXV0byBkdXJhdGlv
biA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKSAqIHJldmVy
c2luZ1Nob3J0ZW5pbmdGYWN0b3I7CiAKLSAgICAgICAgICAgIGVuc3VyZVJ1bm5pbmdUcmFuc2l0
aW9uc0J5UHJvcGVydHkoZWxlbWVudCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVh
dGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNo
YW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwg
cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOworICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVh
dGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNo
YW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwg
cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gNC4gT3RoZXJ3aXNlLCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5p
bmcgdHJhbnNpdGlvbgogICAgICAgICAgICAgcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5j
YW5jZWxGcm9tU3R5bGUoKTsKQEAgLTU5MCw3ICs1MzEsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBl
bGVtZQogICAgICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5n
QW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKICAgICAgICAgICAgIGF1dG8mIHJldmVyc2luZ0FkanVz
dGVkU3RhcnRTdHlsZSA9IGN1cnJlbnRTdHlsZTsKICAgICAgICAgICAgIGF1dG8gcmV2ZXJzaW5n
U2hvcnRlbmluZ0ZhY3RvciA9IDE7Ci0gICAgICAgICAgICBlbnN1cmVSdW5uaW5nVHJhbnNpdGlv
bnNCeVByb3BlcnR5KGVsZW1lbnQpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRl
KGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1h
dGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFu
Z2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJl
dmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgICAgIGVsZW1lbnQucnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRl
KGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1h
dGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFu
Z2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJl
dmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU5OSwy
MSArNTQwLDE4IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25z
Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiB7CiAgICAgLy8gSW4gY2FzZSB0
aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRv
IGNhbmNlbCBhbGwgb2YgaXRzIHRyYW5zaXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCiAg
ICAgaWYgKGN1cnJlbnRTdHlsZS5oYXNUcmFuc2l0aW9ucygpICYmIGN1cnJlbnRTdHlsZS5kaXNw
bGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgYWZ0ZXJDaGFuZ2VTdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6Ok5vbmUpIHsKLSAgICAgICAgaWYgKG1fZWxlbWVudFRvUnVubmluZ0NT
U1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQuY29udGFpbnMoJmVsZW1lbnQpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRl
bSA6IG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQudGFrZSgm
ZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURN
YXBJdGVtLnZhbHVlLT5jYW5jZWxGcm9tU3R5bGUoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRv
JiBydW5uaW5nVHJhbnNpdGlvbnMgPSBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVy
dHlJRE1hcEl0ZW0gOiBydW5uaW5nVHJhbnNpdGlvbnMpCisgICAgICAgICAgICBjc3NUcmFuc2l0
aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0udmFsdWUtPmNhbmNlbEZyb21TdHlsZSgpOworICAg
ICAgICBydW5uaW5nVHJhbnNpdGlvbnMuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIFNlY3Rpb24gMyAiU3RhcnRpbmcgb2YgdHJhbnNpdGlvbnMiIGZyb20gdGhlIENT
UyBUcmFuc2l0aW9ucyBMZXZlbCAxIHNwZWNpZmljYXRpb24uCiAgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy10cmFuc2l0aW9ucy0xLyNzdGFydGluZwogCi0gICAgYXV0byYgcnVu
bmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSA9IGVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJv
cGVydHkoZWxlbWVudCk7Ci0KLSAgICBhdXRvJiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVy
dHkgPSBtX2VsZW1lbnRUb0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQuZW5z
dXJlKCZlbGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1h
cCB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHJ1bm5pbmdUcmFuc2l0
aW9uc0J5UHJvcGVydHkgPSBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsK
KyAgICBhdXRvJiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBlbGVtZW50LmNvbXBs
ZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCk7CiAKICAgICBhdXRvIGdlbmVyYXRpb25UaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmgKaW5kZXggMmM4ZDIzMGNhNDkyNjhkMWRiMDZiY2EzOWNjNDkwNTAzMzk3
YWM5Yy4uZmYwZjYxMWM2NDdkYWZmZjliZDgyMzgwYjc0ZWRlYzQwYmY5YjlkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTc1LDEwICs3NSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYg
YWZ0ZXJDaGFuZ2VTdHlsZSk7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1l
bnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKIAotICAgIHVzaW5nIEFuaW1hdGlvbkNvbGxlY3Rp
b24gPSBMaXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj47Ci0gICAgdXNpbmcgRWxlbWVu
dFRvQW5pbWF0aW9uc01hcCA9IEhhc2hNYXA8RWxlbWVudCosIEFuaW1hdGlvbkNvbGxlY3Rpb24+
OwotICAgIHVzaW5nIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwID0gSGFzaE1hcDxDU1NQcm9wZXJ0
eUlELCBSZWZQdHI8Q1NTVHJhbnNpdGlvbj4+OwotCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uVGlt
ZWxpbmUoKTsKIAogcHJvdGVjdGVkOgpAQCAtODYsMjMgKzgyLDEyIEBAIHByb3RlY3RlZDoKIAog
ICAgIFZlY3RvcjxXZWFrUHRyPFdlYkFuaW1hdGlvbj4+IG1fYWxsQW5pbWF0aW9uczsKICAgICBB
bmltYXRpb25Db2xsZWN0aW9uIG1fYW5pbWF0aW9uczsKLSAgICBIYXNoTWFwPEVsZW1lbnQqLCBQ
cm9wZXJ0eVRvVHJhbnNpdGlvbk1hcD4gbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9u
QnlDU1NQcm9wZXJ0eUlEOwogCiBwcml2YXRlOgotICAgIHVzaW5nIENTU0FuaW1hdGlvbkNvbGxl
Y3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQdHI8Q1NTQW5pbWF0aW9uPj47Ci0gICAgdXNpbmcgRWxl
bWVudFRvQ1NTQW5pbWF0aW9uc01hcCA9IEhhc2hNYXA8RWxlbWVudCosIENTU0FuaW1hdGlvbkNv
bGxlY3Rpb24+OwotCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQb3NpdGlvbihXZWJBbmltYXRpb24m
KTsKLSAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eShFbGVtZW50Jik7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVs
ZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5
bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIFBy
b3BlcnR5VG9UcmFuc2l0aW9uTWFwJiwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmLCBjb25zdCBN
b25vdG9uaWNUaW1lKTsKICAgICB2b2lkIHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1
cChFbGVtZW50JiwgQ1NTQW5pbWF0aW9uJik7CiAKLSAgICBFbGVtZW50VG9BbmltYXRpb25zTWFw
IG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcDsKLSAgICBFbGVtZW50VG9BbmltYXRpb25zTWFwIG1f
ZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcDsKLSAgICBFbGVtZW50VG9BbmltYXRpb25zTWFwIG1f
ZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXA7Ci0gICAgRWxlbWVudFRvQ1NTQW5pbWF0aW9uc01h
cCBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXA7Ci0gICAgSGFzaE1h
cDxFbGVtZW50KiwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXA+IG1fZWxlbWVudFRvUnVubmluZ0NT
U1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQ7Ci0KICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNv
bmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5oIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmgKaW5kZXggNTdhYWJhMWVhNTM4
NTAwNmY1NjY2NDNmMGUxMjE4NGQ3NDRjZjhhMy4uOTE5ZmFkZjFjZDQxZjdhOTk4ZTMzOTE3ZjZh
YjgwZTY4N2IzOWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1
dGVkRWZmZWN0VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVk
RWZmZWN0VGltaW5nLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkVm
ZmVjdFBoYXNlLmgiCiAjaW5jbHVkZSAiRWZmZWN0VGltaW5nLmgiCi0jaW5jbHVkZSAiV2ViQW5p
bWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAKaW5kZXggYTMwZDNmMGVlOTVlMWU5YmVhNDgxMmIwNzFlNTcxOTQ3MDMzNDJl
NS4uZjJmNTVmNDBkZjcwODU1Y2E3Y2RiZjRhZWU2ODcyNGQ0MjQ5MzE1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtNTQ2LDExICs1NDYs
OCBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21wbGV0ZShSZWZQdHI8
Q1NTVHJhbnNpdGlvbj4gdHJhbnNpdGlvbikKICAgICBBU1NFUlQodHJhbnNpdGlvbik7CiAgICAg
cmVtb3ZlQW5pbWF0aW9uKCp0cmFuc2l0aW9uKTsKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+
KHRyYW5zaXRpb24tPmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KHRyYW5zaXRpb24tPmVmZmVjdCgpKS0+dGFyZ2V0KCkpIHsK
LSAgICAgICAgICAgIG1fZWxlbWVudFRvQ29tcGxldGVkQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVy
dHlJRC5lbnN1cmUodGFyZ2V0LCBbXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEhhc2hNYXA8
Q1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1RyYW5zaXRpb24+PiB7IH07Ci0gICAgICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWUuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRyYW5zaXRpb24p
OwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb3duY2FzdDxLZXlmcmFt
ZUVmZmVjdD4odHJhbnNpdGlvbi0+ZWZmZWN0KCkpLT50YXJnZXQoKSkKKyAgICAgICAgICAgIHRh
cmdldC0+Y29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkoKS5zZXQodHJhbnNpdGlvbi0+cHJv
cGVydHkoKSwgdHJhbnNpdGlvbik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4
M2ExM2UwODZmZDFlNzU1ZDQ1MDQ1MmYzODI4OTA0MWVhZjA2OGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oIgorCisjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhKCkKK3sKK30KKworRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjp+RWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhKCkKK3sKK30KKworS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhOjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkKK3sKKyAgICBpZiAoIW1f
a2V5ZnJhbWVFZmZlY3RTdGFjaykKKyAgICAgICAgbV9rZXlmcmFtZUVmZmVjdFN0YWNrID0gbWFr
ZVVuaXF1ZTxLZXlmcmFtZUVmZmVjdFN0YWNrPigpOworICAgIHJldHVybiAqbV9rZXlmcmFtZUVm
ZmVjdFN0YWNrLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTJkYzY0NDZjNjQ4MjQ0NDlkMzE0YWJiNGM5MDhiMWE4ZWU5ODM0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdFN0YWNr
LmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDU1NBbmltYXRpb247CitjbGFzcyBDU1NUcmFuc2l0aW9uOworY2xhc3MgV2Vi
QW5pbWF0aW9uOworCitjbGFzcyBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YSgpOworICAgIH5FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKTsKKworICAgIEtl
eWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSB7IHJldHVybiBtX2tleWZy
YW1lRWZmZWN0U3RhY2suZ2V0KCk7IH0KKyAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVL
ZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uJiB3ZWJBbmlt
YXRpb25zKCkgeyByZXR1cm4gbV93ZWJBbmltYXRpb25zOyB9CisgICAgQW5pbWF0aW9uQ29sbGVj
dGlvbiYgY3NzQW5pbWF0aW9ucygpIHsgcmV0dXJuIG1fY3NzQW5pbWF0aW9uczsgfQorICAgIEFu
aW1hdGlvbkNvbGxlY3Rpb24mIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gbV90cmFuc2l0aW9uczsg
fQorICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAo
KSB7IHJldHVybiBtX2FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXA7IH0KKyAgICB2b2lkIHNldEFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmIGFuaW1hdGlv
bnMpIHsgbV9hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwID0gV1RGTW92ZShhbmltYXRpb25zKTsg
fQorICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9w
ZXJ0eSgpIHsgcmV0dXJuIG1fY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHk7IH0KKyAgICBQ
cm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpIHsg
cmV0dXJuIG1fcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eTsgfQorCitwcml2YXRlOgorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEtleWZyYW1lRWZmZWN0U3RhY2s+IG1fa2V5ZnJhbWVFZmZlY3RT
dGFjazsKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fd2ViQW5pbWF0aW9uczsKKyAgICBBbmlt
YXRpb25Db2xsZWN0aW9uIG1fY3NzQW5pbWF0aW9uczsKKyAgICBBbmltYXRpb25Db2xsZWN0aW9u
IG1fdHJhbnNpdGlvbnM7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBtX2FuaW1hdGlvbnND
cmVhdGVkQnlNYXJrdXA7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9jb21wbGV0ZWRU
cmFuc2l0aW9uQnlQcm9wZXJ0eTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCBtX3J1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5kZXggNTdhMTc3NDlk
MDgzNDBlOTdhNDBkYTY5MDlmYTQ1MDEyMjYwZjJmNC4uYmU4YjZkOWY0YzlkODcyZThiMDk1MzIx
MzM0NWVkZTM0OTdkZmZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgotI2luY2x1
ZGUgIldlYkFuaW1hdGlvblV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oCmluZGV4IDE2NjMy
ZDk0MjNkN2I2MDQ4Yjc4MjgzMTM5ODk5NGZmZWE2NDIxMjQuLjc2ZDA5YmFiZmRhMmU0ZDU1MWFi
Mzg4NmRjNWNhMjNhMmI1ODY1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9PcHRpb25hbEVmZmVjdFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9P
cHRpb25hbEVmZmVjdFRpbWluZy5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJGaWxs
TW9kZS5oIgogI2luY2x1ZGUgIlBsYXliYWNrRGlyZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViQW5p
bWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5kZXggZjljMzkzMWVlOTZlMTU4
ZDQwNWI0NzM2YjVhNWI2ODc4OTBkOWJiMy4uMTA4ZDNkOWQwMWVkNzgzM2E5YzJlNGM0ZDYyYWZj
OWI2Zjg1ZWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIldlYkFuaW1hdGlvblV0
aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b25UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGYyYjg0ZjdhZDk0OGQ1NzlkMTk2N2YyMmQ2MTM1MjIyNWEwOTdmZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25UeXBl
cy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTWFya2FibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbmltYXRp
b25MaXN0OworY2xhc3MgQ1NTQW5pbWF0aW9uOworY2xhc3MgQ1NTVHJhbnNpdGlvbjsKK2NsYXNz
IFdlYkFuaW1hdGlvbjsKKworc3RydWN0IFdlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0
cyB7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGRvdWJsZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGQ6OmlzbmFuKHZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29u
c3RleHByIGRvdWJsZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIH0KK307CisKK3VzaW5nIE1h
cmthYmxlRG91YmxlID0gTWFya2FibGU8ZG91YmxlLCBXZWJBbmltYXRpb25zTWFya2FibGVEb3Vi
bGVUcmFpdHM+OworCit1c2luZyBBbmltYXRpb25Db2xsZWN0aW9uID0gTGlzdEhhc2hTZXQ8UmVm
UHRyPFdlYkFuaW1hdGlvbj4+OwordXNpbmcgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgPSBIYXNo
TWFwPENTU1Byb3BlcnR5SUQsIFJlZlB0cjxDU1NUcmFuc2l0aW9uPj47Cit1c2luZyBDU1NBbmlt
YXRpb25Db2xsZWN0aW9uID0gTGlzdEhhc2hTZXQ8UmVmUHRyPENTU0FuaW1hdGlvbj4+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvblV0aWxpdGllcy5oCmluZGV4IDJiNGIzZTMyZWMzZWI3MzAwMDI2YWY3MjJk
ODgwOTNjMTUzYzc3YjguLmZiOTEzNzAxMGFlOWE2YTMzZTMxODdjODFhODY0ZmFjYzNiMjkyZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVz
LmgKQEAgLTUwLDIwICs1MCw2IEBAIGlubGluZSBkb3VibGUgc2Vjb25kc1RvV2ViQW5pbWF0aW9u
c0FQSVRpbWUoY29uc3QgU2Vjb25kcyB0aW1lKQogCiBjb25zdCBhdXRvIHRpbWVFcHNpbG9uID0g
U2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygwLjAwMSk7CiAKLXN0cnVjdCBXZWJBbmltYXRpb25z
TWFya2FibGVEb3VibGVUcmFpdHMgewotICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShkb3Vi
bGUgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjppc25hbih2YWx1ZSk7Ci0gICAg
fQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgZW1wdHlWYWx1ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKLSAg
ICB9Ci19OwotCi11c2luZyBNYXJrYWJsZURvdWJsZSA9IE1hcmthYmxlPGRvdWJsZSwgV2ViQW5p
bWF0aW9uc01hcmthYmxlRG91YmxlVHJhaXRzPjsKLQogYm9vbCBjb21wYXJlQW5pbWF0aW9uc0J5
Q29tcG9zaXRlT3JkZXIoV2ViQW5pbWF0aW9uJiwgV2ViQW5pbWF0aW9uJiwgY29uc3QgQW5pbWF0
aW9uTGlzdCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggYjVmYzkxMDA5MmE0YjM4NmY4MGM1MjU4NGI0YTNjYjc1OGEzNzUyMi4uYTBjODJjMjJl
NjE5ZjM0ZDA3MzZiOTM4Y2IxNTI2ODZlMzZiMjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKICNpbmNsdWRlICJFZGl0aW5nLmgiCisjaW5j
bHVkZSAiRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiRXZlbnREaXNw
YXRjaGVyLmgiCkBAIC0zNzM4LDI2ICszNzM5LDM1IEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0
YSogRWxlbWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKQogCiAjZW5kaWYK
IAorRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBFbGVtZW50OjphbmltYXRpb25SYXJlRGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+
ZWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKCkgOiBudWxscHRyOworfQorCitFbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEmIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK3sKKyAgICBy
ZXR1cm4gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKTsK
K30KKwogS2V5ZnJhbWVFZmZlY3RTdGFjayogRWxlbWVudDo6a2V5ZnJhbWVFZmZlY3RTdGFjaygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+
a2V5ZnJhbWVFZmZlY3RTdGFjaygpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byogYW5pbWF0aW9u
RGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRh
LT5rZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEtleWZy
YW1lRWZmZWN0U3RhY2smIEVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKQogewot
ICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Ci0gICAgaWYgKCFy
YXJlRGF0YS5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldEtleWZy
YW1lRWZmZWN0U3RhY2sobWFrZVVuaXF1ZTxLZXlmcmFtZUVmZmVjdFN0YWNrPigpKTsKLSAgICBy
ZXR1cm4gKnJhcmVEYXRhLmtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICByZXR1cm4gZW5zdXJl
QW5pbWF0aW9uUmFyZURhdGEoKS5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CiB9CiAKIGJv
b2wgRWxlbWVudDo6aGFzS2V5ZnJhbWVFZmZlY3RzKCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIGtleWZyYW1lRWZm
ZWN0U3RhY2sgPSBlbGVtZW50UmFyZURhdGEoKS0+a2V5ZnJhbWVFZmZlY3RTdGFjaygpOwotICAg
IHJldHVybiBrZXlmcmFtZUVmZmVjdFN0YWNrICYmIGtleWZyYW1lRWZmZWN0U3RhY2stPmhhc0Vm
ZmVjdHMoKTsKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRh
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBhbmltYXRpb25E
YXRhLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCisgICAgICAgICAgICByZXR1cm4ga2V5ZnJhbWVF
ZmZlY3RTdGFjay0+aGFzRWZmZWN0cygpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3Rz
KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKQEAgLTM3NzgsNiArMzc4OCw0MSBAQCBPcHRpb25T
ZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJT
dHlsZSYgdGFyZ2V0U3R5bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAKK0FuaW1hdGlvbkNvbGxl
Y3Rpb24mIEVsZW1lbnQ6OndlYkFuaW1hdGlvbnMoKQoreworICAgIHJldHVybiBlbnN1cmVBbmlt
YXRpb25SYXJlRGF0YSgpLndlYkFuaW1hdGlvbnMoKTsKK30KKworQW5pbWF0aW9uQ29sbGVjdGlv
biYgRWxlbWVudDo6Y3NzQW5pbWF0aW9ucygpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlv
blJhcmVEYXRhKCkuY3NzQW5pbWF0aW9ucygpOworfQorCitBbmltYXRpb25Db2xsZWN0aW9uJiBF
bGVtZW50Ojp0cmFuc2l0aW9ucygpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVE
YXRhKCkudHJhbnNpdGlvbnMoKTsKK30KKworQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVu
dDo6YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1h
dGlvblJhcmVEYXRhKCkuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpOworfQorCit2b2lkIEVs
ZW1lbnQ6OnNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlv
biYmIGFuaW1hdGlvbnMpCit7CisgICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5zZXRBbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOworfQorCitQcm9wZXJ0
eVRvVHJhbnNpdGlvbk1hcCYgRWxlbWVudDo6Y29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHko
KQoreworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmNvbXBsZXRlZFRyYW5z
aXRpb25CeVByb3BlcnR5KCk7Cit9CisKK1Byb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBFbGVtZW50
OjpydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkKK3sKKyAgICByZXR1cm4gZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEoKS5ydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7Cit9CisKICNp
ZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQogCiB2b2lkIEVsZW1lbnQ6OmRpc2Nvbm5lY3RGcm9t
UmVzaXplT2JzZXJ2ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZmZDU5OTNlNmJkZmUyZDIy
MjdhYmQ5MzA1MmMyMGRlZmM4NzI4OTcuLjFjNmJiMTIxY2IzYjlhZjFiNjA3M2FmMzhjNDhhZmEy
NzY5MzVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IlNoYWRvd1Jvb3RNb2RlLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmgiCiAj
aW5jbHVkZSAiU3R5bGVDaGFuZ2UuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIERhdGFzZXRET01TdHJpbmdNYXA7CiBjbGFzcyBET01S
ZWN0OwogY2xhc3MgRE9NUmVjdExpc3Q7CiBjbGFzcyBET01Ub2tlbkxpc3Q7CitjbGFzcyBFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE7CiBjbGFzcyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEhUTUxEb2N1bWVudDsKQEAgLTQ5MSw2ICs0OTMsMTQgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzS2V5ZnJhbWVFZmZlY3RzKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0PEFuaW1hdGlv
bkltcGFjdD4gYXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmKTsKIAorICAgIEFuaW1h
dGlvbkNvbGxlY3Rpb24mIHdlYkFuaW1hdGlvbnMoKTsKKyAgICBBbmltYXRpb25Db2xsZWN0aW9u
JiBjc3NBbmltYXRpb25zKCk7CisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgdHJhbnNpdGlvbnMo
KTsKKyAgICBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiBhbmltYXRpb25zQ3JlYXRlZEJ5TWFya3Vw
KCk7CisgICAgdm9pZCBzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKENTU0FuaW1hdGlvbkNv
bGxlY3Rpb24mJik7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIGNvbXBsZXRlZFRyYW5z
aXRpb25CeVByb3BlcnR5KCk7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIHJ1bm5pbmdU
cmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdDsK
ICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCk7CkBAIC03MDUsNiAr
NzE1LDkgQEAgcHJpdmF0ZToKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRSYXJlRGF0YSgp
IGNvbnN0OwogICAgIEVsZW1lbnRSYXJlRGF0YSYgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAK
KyAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIGFuaW1hdGlvblJhcmVEYXRhKCkgY29uc3Q7
CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgp
OworCiAgICAgdmlydHVhbCBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29uc3Q7CiAKICAgICB2b2lk
IGRldGFjaEFsbEF0dHJOb2Rlc0Zyb21FbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKaW5kZXggYjdhNjg2MzUzZDdjNjg4NDlhMjJiYjZmOTgxMGUwZWY2ZTIzYjQ5MC4u
ZmNjYWI1MTE3MzQ4MjFhNGJkNmVjYzBhMDYzODNhZmUyMDRkOTg0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVk
ZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oIgogI2luY2x1ZGUgIkludGVyc2VjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiS2V5
ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgpAQCAtMTAxLDgg
KzEwMiw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NTU0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ1NTQW5pbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRIYXNDU1NBbmltYXRpb24oYm9v
bCB2YWx1ZSkgeyBtX2hhc0NTU0FuaW1hdGlvbiA9IHZhbHVlOyB9CiAKLSAgICBLZXlmcmFtZUVm
ZmVjdFN0YWNrKiBrZXlmcmFtZUVmZmVjdFN0YWNrKCkgeyByZXR1cm4gbV9rZXlmcmFtZUVmZmVj
dFN0YWNrLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRLZXlmcmFtZUVmZmVjdFN0YWNrKHN0ZDo6dW5p
cXVlX3B0cjxLZXlmcmFtZUVmZmVjdFN0YWNrPiYmIGtleWZyYW1lRWZmZWN0U3RhY2spIHsgbV9r
ZXlmcmFtZUVmZmVjdFN0YWNrID0gV1RGTW92ZShrZXlmcmFtZUVmZmVjdFN0YWNrKTsgfQorICAg
IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogZWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKCkgeyBy
ZXR1cm4gbV9hbmltYXRpb25SYXJlRGF0YS5nZXQoKTsgfQorICAgIEVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKTsKIAogICAgIGJvb2wgaGFzRWxlbWVu
dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0VsZW1lbnRJZGVudGlmaWVyOyB9CiAg
ICAgdm9pZCBzZXRIYXNFbGVtZW50SWRlbnRpZmllcihib29sIHZhbHVlKSB7IG1faGFzRWxlbWVu
dElkZW50aWZpZXIgPSB2YWx1ZTsgfQpAQCAtMTU4LDYgKzE1OSw4IEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8IG1fYWZ0ZXJQc2V1ZG9FbGVt
ZW50KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQc2V1ZG9FbGVtZW50cyk7Cisg
ICAgICAgIGlmIChtX2FuaW1hdGlvblJhcmVEYXRhKQorICAgICAgICAgICAgcmVzdWx0LmFkZChV
c2VUeXBlOjpBbmltYXRpb25zKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5k
aWYKQEAgLTE5MCw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNp
emVPYnNlcnZlckRhdGE+IG1fcmVzaXplT2JzZXJ2ZXJEYXRhOwogI2VuZGlmCiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8S2V5ZnJhbWVFZmZlY3RTdGFjaz4gbV9rZXlmcmFtZUVmZmVjdFN0YWNrOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+IG1fYW5pbWF0aW9u
UmFyZURhdGE7CiAKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9FbGVt
ZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxlbWVudDsKQEAg
LTI0OSw0ICsyNTIsMTEgQEAgaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldFN0eWxl
UmVsYXRpb25zKCkKICAgICBzZXRDaGlsZEluZGV4KDApOwogfQogCitpbmxpbmUgRWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRh
KCkKK3sKKyAgICBpZiAoIW1fYW5pbWF0aW9uUmFyZURhdGEpCisgICAgICAgIG1fYW5pbWF0aW9u
UmFyZURhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4oKTsKKyAgICBy
ZXR1cm4gKm1fYW5pbWF0aW9uUmFyZURhdGEuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCAyNzEyZDFlNmQ1N2M1NmJhZWEy
Y2Q0OTYxZDMxMjM1ZWRlYjJkM2VhLi40YmRiMTI2MjJjZmQ4NmU5MjY0MjUzYmFlMzhlYzlhZWNm
MDFkNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNDgsNyArMjQ4LDYgQEAg
cHVibGljOgogICAgICAgICBDb25uZWN0ZWRGcmFtZUNvdW50ID0gMSA8PCAwLAogICAgICAgICBO
b2RlTGlzdCA9IDEgPDwgMSwKICAgICAgICAgTXV0YXRpb25PYnNlcnZlciA9IDEgPDwgMiwKLQog
ICAgICAgICBUYWJJbmRleCA9IDEgPDwgMywKICAgICAgICAgTWluaW11bVNpemUgPSAxIDw8IDQs
CiAgICAgICAgIFNjcm9sbGluZ1Bvc2l0aW9uID0gMSA8PCA1LApAQCAtMjYwLDYgKzI1OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMSwKICAgICAgICAgSW50ZXJh
Y3Rpb25PYnNlcnZlciA9IDEgPDwgMTIsCiAgICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8PCAx
MywKKyAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCiAgICAgfTsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393231</attachid>
            <date>2020-03-11 06:14:18 -0700</date>
            <delta_ts>2020-03-11 06:27:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208079-20200311141416.patch</filename>
            <type>text/plain</type>
            <size>54249</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY2ZDY0N2ZhNGIyMjdl
ZmIwZjFiZWZkZjI3NjFlYWY1OGFhOGUxOC4uNzNmODU5MjBkN2I5YjY3YzM2YmNhN2Q3ZjExYWQx
YjM3ZWQzN2JjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIwLTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIEFuaW1hdGlvblRpbWVs
aW5lIHNob3VsZCBub3QgaGF2ZSBtdWx0aXBsZSBIYXNoTWFwcyB3aXRoIHJhdyBFbGVtZW50KiBr
ZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTA2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJvZHVjZSBhIG5ldyBFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEgY2xhc3MgdGhhdCBob2xkcyB0aGUgS2V5ZnJhbWVFZmZlY3RTdGFj
ayBwcmV2aW91c2x5IG93bmVkIGJ5IEVsZW1lbnRSYXJlRGF0YSBhcyB3ZWxsIGFzIGEgZmV3IG1h
cHMgYW5kIGxpc3RzCisgICAgICAgIG93bmVkIGJ5IEFuaW1hdGlvblRpbWVsaW5lIHdoaWNoIHdv
dWxkIHVzZSByYXcgRWxlbWVudCBwb2ludGVycyBhcyBrZXlzLiBTcGVjaWZpY2FsbHksIHRoaXMg
aXMgd2hhdCBjaGFuZ2VkOgorCisgICAgICAgIC0gQW5pbWF0aW9uVGltZWxpbmU6Om1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg4oaSIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YTo6cnVubmluZ1RyYW5zaXRpb25CeVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmlt
YXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9w
ZXJ0eUlEIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9DU1NB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6
OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5l
OjptX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGE6OnRyYW5zaXRpb25zKCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50
VG9DU1NBbmltYXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1h
dGlvbnMoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5lOjptX2VsZW1lbnRUb0FuaW1hdGlv
bnNNYXAg4oaSIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucygpCisKKyAg
ICAgICAgRm9yIGNvbnZlbmllbmNlLCB0aGVzZSBuZXcgbWVtYmVycyBhcmUgZXhwb3NlZCB2aWEg
RWxlbWVudCBkaXJlY3RseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXApOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25G
cm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp3aWxsRGVzdHJveVJlbmRlcmVyRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdh
c1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERl
Y2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JFbGVtZW50QW5kUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpy
ZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmg6Cisg
ICAgICAgICogYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmg6CisgICAgICAgICogYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBhbmltYXRpb24vRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmguCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGE6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6On5FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjplbnN1cmVL
ZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKiBhbmltYXRpb24vRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhOjprZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpzZXRBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YTo6Y29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KToK
KyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKiBhbmltYXRp
b24vT3B0aW9uYWxFZmZlY3RUaW1pbmcuaDoKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0czo6aXNFbXB0
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRy
YWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uc01hcmthYmxlRG91YmxlVHJh
aXRzOjppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0
aW9uc01hcmthYmxlRG91YmxlVHJhaXRzOjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphbmltYXRpb25S
YXJlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBbmltYXRp
b25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzS2V5ZnJhbWVFZmZlY3Rz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYkFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3NzQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojphbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29t
cGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjprZXlmcmFtZUVmZmVjdFN0YWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0S2V5ZnJhbWVFZmZlY3RTdGFjayk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorCiAyMDIwLTAzLTEwICBUb21v
a2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgogCiAgICAgICAgIFtPcGVuU1NMXSBJbXBs
ZW1lbnQgV2ViQ3J5cHRvIEFQSXMgZm9yIEFFUy1DVFIgYW5kIEFFUy1LVwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMjViYTQ2MzMxNTg1Y2IxYmYzZWMxMWI0MGIzMmQ2MGQ1M2QwMGM3Ni4uOWY1NTY1
NDZmOGQ2ZGM4MTdkYmQ0ZDg2MzMzZWIxNDU4YTgyY2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xODUsNiArMTg1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGFuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbk9wdGlvbnMuaAogICAgIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdE9wdGlvbnMuaAogICAgIGFuaW1hdGlvbi9QbGF5YmFja0RpcmVjdGlvbi5o
CisgICAgYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmgKIAogICAgIGJpbmRpbmdzL0lETFR5
cGVzLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1NTNmOTY0NmNiODkyMWE5NTdkYTg3N2VkYjY3MGRm
N2U1ZmY5NThkLi4wZDQ1MzJmMTYzZGNmYWZjOGRmM2U3MzViNGVjN2MwMTI2YWZjNTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3Bw
CiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1h
dGlvbi5jcHAKIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorYW5pbWF0aW9uL0VsZW1l
bnRBbmltYXRpb25SYXJlRGF0YS5jcHAKIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKIGFu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2ZDYyNWVlMDQ1Mzk2MzVhOTdmZTBkOWIyMWE2YjJkOTcwZWYyZGRmLi5iNmIzY2Q4
YTM1YmIwM2IwZGFmYzZmZGYxNTY3ZmM1NDliMmFiNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDg0LDEyICsyMDg0LDE0
IEBACiAJCTcxMDI1RURFMUY5OUYxRUMwMDRBMjUwQyAvKiBKU0FuaW1hdGlvblRpbWVsaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVEOTFG
OTlGMUE3MDA0QTI1MEMgLyogSlNBbmltYXRpb25UaW1lbGluZS5oICovOyB9OwogCQk3MTAyNUVF
MDFGOTlGMUVDMDA0QTI1MEMgLyogSlNEb2N1bWVudFRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVEQzFGOTlGMUE4MDA0QTI1MEMg
LyogSlNEb2N1bWVudFRpbWVsaW5lLmggKi87IH07CiAJCTcxMDI1RUUyMUY5OUYxRUMwMDRBMjUw
QyAvKiBKU1dlYkFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzEwMjVFRDgxRjk5RjFBNjAwNEEyNTBDIC8qIEpTV2ViQW5pbWF0aW9uLmgg
Ki87IH07CisJCTcxMDhFRUU2MjQxOEVENUEwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25UeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEwOEVFRTQy
NDE4RUQ1MzAwNUMzREE3IC8qIFdlYkFuaW1hdGlvblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExMTI0M0UyMTZGQTcxMTAwRUI3QjY3
IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzExMTI0M0IyMTZGQTZFMDAwRUI3QjY3IC8qIENvbXBvc2l0
ZU9wZXJhdGlvbk9yQXV0by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxMTEyNDQxMjE2RkE3Q0QwMEVCN0I2NyAvKiBKU0NvbXBvc2l0ZU9wZXJh
dGlvbk9yQXV0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzExMTI0NDAyMTZGQTdCRTAwRUI3QjY3IC8qIEpTQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEx
NkUyQ0MxRkVENzVEQzAwQzA2RkRFIC8qIENvbXB1dGVkRWZmZWN0VGltaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE2RTJDQjFGRUQ3NUQxMDBD
MDZGREUgLyogQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE2RTJDRjFGRUQ3NjVCMDBDMDZGREUgLyogSlND
b21wdXRlZEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzExNkUyQ0UxRkVENzY1MjAwQzA2RkRFIC8qIEpTQ29tcHV0ZWRFZmZlY3RU
aW1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MTE3NDQ1OTE0QkMzNEVDMDBFRTVGQzggLyogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE3NDQ1NzE0QkMz
NEUyMDBFRTVGQzggLyogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmggKi87IH07CiAJCTcxMThGRUQ1
MTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE4RkVEMzE1Njg1Q0M2MDAzMEI3OUEgLyogSlNT
VkdWaWV3U3BlYy5oICovOyB9OworCQk3MTE5NDY1NjI0MTgxRUExMDA0NjZDMTEgLyogRWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MTE5NDY1MzI0MTgxRTgzMDA0NjZDMTEgLyogRWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzExQUQxMjYyMzZEODZFNTAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExQUQxMjMyMzZEODZE
MzAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMjA3MzQwMjE2REZCMDAwMEM3ODMyOSAvKiBP
cHRpb25hbEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzEyMDczM0QyMTZERkFGMTAwQzc4MzI5IC8qIE9wdGlvbmFsRWZmZWN0VGlt
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzEyMDczNDMyMTZERkI0MTAwQzc4MzI5IC8qIEpTT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMjA3MzQxMjE2REZC
MzEwMEM3ODMyOSAvKiBKU09wdGlvbmFsRWZmZWN0VGltaW5nLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MTksNiArOTQyMSw3IEBACiAJCTcx
MDI1RURBMUY5OUYxQTcwMDRBMjUwQyAvKiBKU0FuaW1hdGlvblRpbWVsaW5lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQW5pbWF0aW9uVGltZWxpbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTAyNUVEQjFGOTlGMUE4MDA0QTI1MEMgLyog
SlNEb2N1bWVudFRpbWVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRG9jdW1lbnRUaW1lbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxMDI1RURDMUY5OUYxQTgwMDRBMjUwQyAvKiBKU0RvY3VtZW50VGltZWxpbmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudFRpbWVsaW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMDhFRUU0MjQxOEVENTMwMDVDM0RBNyAvKiBXZWJBbmlt
YXRpb25UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbmltYXRp
b25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTBGQTc0QjFERUU1NzZE
MDA0QzcxNUUgLyogY29udHJvbHMtYmFyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gImNvbnRyb2xzLWJhci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcxMEZBNzRDMURFRTU3N0UwMDRDNzE1RSAvKiBjb250cm9scy12aXNpYmlsaXR5LXN1cHBv
cnQuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiY29udHJvbHMt
dmlzaWJpbGl0eS1zdXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEx
MTI0M0IyMTZGQTZFMDAwRUI3QjY3IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0MzMsNiArOTQzNiw4IEBACiAJCTcxMTc0
NDU3MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMThGRUQyMTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1Zp
ZXdTcGVjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHVmll
d1NwZWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE4RkVEMzE1Njg1Q0M2
MDAzMEI3OUEgLyogSlNTVkdWaWV3U3BlYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR1ZpZXdTcGVjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMTk0
NjUzMjQxODFFODMwMDQ2NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMTk0NjU1MjQxODFFODQwMDQ2NkMxMSAvKiBF
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzExQUQxMjMyMzZEODZEMzAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25FdmVudEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExQUQxMjUyMzZEODZENDAwNkZGMzdD
IC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBbmltYXRpb25FdmVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTFGQjA3NTFEQzc2ODhGMDBDNEM3MDggLyogcGxhY2FyZC1zdXBwb3J0LmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInBsYWNhcmQtc3VwcG9ydC5qcyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA0Niw2ICsyMTA1MSw4IEBACiAJCQkJ
NzE3MjlGNzkyMEYzQkEzOTAwODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRpb25zLmlkbCAq
LywKIAkJCQk3MTJCRTQ3QzFGRTg2NDQ4MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5nLmggKi8sCiAJ
CQkJNzEyQkU0N0ExRkU4NjQ0NzAwMjAzMUNDIC8qIEVmZmVjdFRpbWluZy5pZGwgKi8sCisJCQkJ
NzExOTQ2NTUyNDE4MUU4NDAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHAg
Ki8sCisJCQkJNzExOTQ2NTMyNDE4MUU4MzAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oICovLAogCQkJCTcxMkJFNDgxMUZFODY1RDQwMDIwMzFDQyAvKiBGaWxsTW9kZS5oICov
LAogCQkJCTcxMkJFNDgyMUZFODY1RDUwMDIwMzFDQyAvKiBGaWxsTW9kZS5pZGwgKi8sCiAJCQkJ
NzEzRjFENTkyM0RGMUQ3RDAwM0Y1RUZBIC8qIEdldEFuaW1hdGlvbnNPcHRpb25zLmggKi8sCkBA
IC0yMTA2OCw2ICsyMTA3NSw3IEBACiAJCQkJNzEwMjVFQzMxRjk5RjA5NjAwNEEyNTBDIC8qIFdl
YkFuaW1hdGlvbi5jcHAgKi8sCiAJCQkJNzEwMjVFQzIxRjk5RjA5NjAwNEEyNTBDIC8qIFdlYkFu
aW1hdGlvbi5oICovLAogCQkJCTcxMDI1RUM4MUY5OUYwOTYwMDRBMjUwQyAvKiBXZWJBbmltYXRp
b24uaWRsICovLAorCQkJCTcxMDhFRUU0MjQxOEVENTMwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25U
eXBlcy5oICovLAogCQkJCTcxQzI1QUY1MjM5MkJGM0MwMEQ1QzA5OCAvKiBXZWJBbmltYXRpb25V
dGlsaXRpZXMuY3BwICovLAogCQkJCTcxMzI0NDRGMjAxMDlEOUIwMEFFN0ZCMiAvKiBXZWJBbmlt
YXRpb25VdGlsaXRpZXMuaCAqLywKIAkJCSk7CkBAIC0yNjM3MCw2ICsyNjM3OCw4IEBACiAJCQkJ
Q0Q5RDM3NUEyMTUxNjNFNDAwNDk2NTdCIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oICovLAogCQkJ
CUNEOTRBNUQ0MUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1LZXlTdGF0dXMuaCAqLywKIAkJCQlDRDk0
QTVDRDFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovLAor
CQkJCUNEOEQzMDZFMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLywKKwkJCQlD
RDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovLAogCQkJCUNEOTRBNUQz
MUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCAqLywKIAkJCQlDRDk0QTVE
NjFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNTWVzc2FnZVR5cGUuaCAqLywKIAkJCQlDRDNDRTExQzI0
MDQ1MUFGMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5jcHAgKi8sCkBAIC0yNjM3OSw4ICsyNjM4OSw2
IEBACiAJCQkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi8s
CiAJCQkJQ0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1IC8qIENETVJlc3RyaWN0aW9ucy5oICovLAog
CQkJCUNEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICovLAotCQkJ
CUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi8sCi0JCQkJQ0Q4RDMw
NkUyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBlbmNyeXB0ZWRtZWRpYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTM2Miw2
ICsyOTM3MCw3IEBACiAJCQkJQ0QzQ0UwRkIyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNl
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8q
IENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
OEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2
YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI5OTA0LDYgKzI5OTEzLDcgQEAKIAkJCQlBOEM0QTgw
NzA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRTdD
MUExN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQwQUE5NjFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxMTk0NjU2MjQxODFFQTEwMDQ2
NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFBMEEgLyogRWxlbWVudERh
dGEuaCBpbiBIZWFkZXJzICovLApAQCAtMzA0MzEsNyArMzA0NDEsNiBAQAogCQkJCTA3RTlFMTJF
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OTQxNzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAvKiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRDhEMzA2RjIzQUQ0
RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNDQyRDcx
NjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3QUE2QjZDMTY2RDJDMTMwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3
IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzMw
MjcsNiArMzMwMzYsNyBAQAogCQkJCUFBNDc4QTdGMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzRUY0NDgx
OTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzEwMjVFRDMxRjk5RjBDRTAwNEEyNTBDIC8qIFdlYkFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzEwOEVFRTYyNDE4RUQ1QTAwNUMzREE3IC8qIFdlYkFu
aW1hdGlvblR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTMyNDQ1MTIwMTA5REE1MDBBRTdG
QjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg1MzY4
NDFGNEU0ODE0MDBGRTA5MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0
cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdl
YkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudElu
aXQuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5p
dC5oCmluZGV4IGVmNzE0Yzg2Y2ZjZDY2ZWNjM2M4MmYyNzg3ZWNhOGIwNzdmZGQ0ZTIuLmNiMjQz
MzgwMjc1MzNiNmRhYjBlZmEzMzQ5MGUwMDI4YjMwMDZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV2ZW50SW5pdC5oIgotI2luY2x1
ZGUgIldlYkFuaW1hdGlvblV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVz
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggNWU4NzRhNDNhNzNlY2I4YTFlN2Y2MWUwMGU0
OGMxOTcxNDE0ZDg1YS4uMWJjZjFkZWUwYWJjZDhiMTdhZjI4Yjg2OTRmNTAxZTgxMDUyM2FmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCkBA
IC0xMDEsNTMgKzEwMSwyOSBAQCBPcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblRpbWVsaW5lOjpi
aW5kaW5nc0N1cnJlbnRUaW1lKCkKIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9u
V2FzQWRkZWRUb0VsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1l
bnQpCiB7Ci0gICAgWyZdICgpIC0+IEVsZW1lbnRUb0FuaW1hdGlvbnNNYXAmIHsKLSAgICAgICAg
aWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8Q1NTVHJhbnNpdGlv
bj4oYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9lbGVt
ZW50VG9DU1NUcmFuc2l0aW9uc01hcDsKLSAgICAgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4oYW5p
bWF0aW9uKSAmJiBkb3duY2FzdDxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikub3duaW5nRWxlbWVu
dCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcDsKLSAg
ICAgICAgcmV0dXJuIG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcDsKLSAgICB9KCkuZW5zdXJlKCZl
bGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBBbmltYXRpb25Db2xsZWN0aW9uIHsgfTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCZhbmltYXRpb24pOworICAgIGlmIChpczxDU1NUcmFu
c2l0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbiku
b3duaW5nRWxlbWVudCgpKQorICAgICAgICBlbGVtZW50LnRyYW5zaXRpb25zKCkuYWRkKCZhbmlt
YXRpb24pOworICAgIGVsc2UgaWYgKGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3du
Y2FzdDxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpKQorICAgICAgICBl
bGVtZW50LmNzc0FuaW1hdGlvbnMoKS5hZGQoJmFuaW1hdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBlbGVtZW50LndlYkFuaW1hdGlvbnMoKS5hZGQoJmFuaW1hdGlvbik7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9uJiB0cmFu
c2l0aW9uLCBFbGVtZW50JiBlbGVtZW50LCBIYXNoTWFwPEVsZW1lbnQqLCBBbmltYXRpb25UaW1l
bGluZTo6UHJvcGVydHlUb1RyYW5zaXRpb25NYXA+JiBtYXApCitzdGF0aWMgaW5saW5lIGJvb2wg
cmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiwgUHJv
cGVydHlUb1RyYW5zaXRpb25NYXAmIGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0eSkKIHsKLSAgICBh
dXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQoJmVsZW1lbnQpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
YXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIGNzc1RyYW5zaXRp
b25zQnlQcm9wZXJ0eSA9IGl0ZXJhdG9yLT52YWx1ZTsKLQogICAgIGF1dG8gdHJhbnNpdGlvbkl0
ZXJhdG9yID0gY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LmZpbmQodHJhbnNpdGlvbi5wcm9wZXJ0
eSgpKTsKICAgICBpZiAodHJhbnNpdGlvbkl0ZXJhdG9yID09IGNzc1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eS5lbmQoKSB8fCB0cmFuc2l0aW9uSXRlcmF0b3ItPnZhbHVlICE9ICZ0cmFuc2l0aW9uKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkucmVt
b3ZlKHRyYW5zaXRpb25JdGVyYXRvcik7Ci0KLSAgICBpZiAoY3NzVHJhbnNpdGlvbnNCeVByb3Bl
cnR5LmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLnJlbW92ZSgmZWxlbWVudCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9y
RWxlbWVudChXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwgQW5pbWF0aW9uVGltZWxpbmU6OkVsZW1l
bnRUb0FuaW1hdGlvbnNNYXAmIG1hcCwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbWFwLmZpbmQoJmVsZW1lbnQpOwotICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGFuaW1hdGlvbnMgPSBpdGVyYXRvci0+
dmFsdWU7Ci0gICAgYW5pbWF0aW9ucy5yZW1vdmUoJmFuaW1hdGlvbik7Ci0gICAgaWYgKCFhbmlt
YXRpb25zLnNpemUoKSkKLSAgICAgICAgbWFwLnJlbW92ZShpdGVyYXRvcik7Ci19Ci0KIHZvaWQg
QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudChXZWJBbmlt
YXRpb24mIGFuaW1hdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZW1vdmVBbmltYXRp
b25Gcm9tTWFwRm9yRWxlbWVudChhbmltYXRpb24sIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNN
YXAsIGVsZW1lbnQpOwotICAgIHJlbW92ZUFuaW1hdGlvbkZyb21NYXBGb3JFbGVtZW50KGFuaW1h
dGlvbiwgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLCBlbGVtZW50KTsKLSAgICByZW1vdmVB
bmltYXRpb25Gcm9tTWFwRm9yRWxlbWVudChhbmltYXRpb24sIG1fZWxlbWVudFRvQW5pbWF0aW9u
c01hcCwgZWxlbWVudCk7CisgICAgZWxlbWVudC50cmFuc2l0aW9ucygpLnJlbW92ZSgmYW5pbWF0
aW9uKTsKKyAgICBlbGVtZW50LmNzc0FuaW1hdGlvbnMoKS5yZW1vdmUoJmFuaW1hdGlvbik7Cisg
ICAgZWxlbWVudC53ZWJBbmltYXRpb25zKCkucmVtb3ZlKCZhbmltYXRpb24pOwogCiAgICAgLy8g
Tm93LCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBDU1MgVHJhbnNpdGlvbiwgd2UgcmVtb3ZlIGl0
IGZyb20gdGhlIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg
bWFwLgogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gdGhpcyBmb3IgQ1NTIEFuaW1hdGlvbnMg
YmVjYXVzZSB0aGVpciB0aW1pbmcgY2FuIGJlIHNldCB2aWEgQ1NTIHRvIGVuZCwgd2hpY2ggd291
bGQgY2F1c2UgdGhpcwpAQCAtMTYzLDggKzEzOSw4IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJB
CiAKICAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSkgewogICAgICAgICBhdXRv
JiB0cmFuc2l0aW9uID0gZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKTsKLSAgICAg
ICAgaWYgKCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVtZW50LCBt
X2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlEKSkKLSAgICAgICAg
ICAgIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIGVsZW1lbnQsIG1fZWxl
bWVudFRvQ29tcGxldGVkQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRCk7CisgICAgICAgIGlm
ICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5ydW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5KCkpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTVHJhbnNpdGlv
bkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5jb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0
eSgpKTsKICAgICB9CiB9CiAKQEAgLTE3OCwxOCArMTU0LDEyIEBAIFZlY3RvcjxSZWZQdHI8V2Vi
QW5pbWF0aW9uPj4gQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1l
bnQmIGVsCiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRp
b24oKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9lbGVtZW50VG9D
U1NUcmFuc2l0aW9uc01hcC5jb250YWlucygmZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGNzc1RyYW5zaXRpb25zID0gbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5nZXQo
JmVsZW1lbnQpOwotICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmRSYW5nZShjc3NUcmFuc2l0
aW9ucy5iZWdpbigpLCBjc3NUcmFuc2l0aW9ucy5lbmQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5jb250YWlucygmZWxlbWVudCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBtX2VsZW1lbnRUb0NTU0FuaW1h
dGlvbnNNYXAuZ2V0KCZlbGVtZW50KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFu
Z2UoY3NzQW5pbWF0aW9ucy5iZWdpbigpLCBjc3NBbmltYXRpb25zLmVuZCgpKTsKLSAgICAgICAg
fQotICAgICAgICBpZiAobV9lbGVtZW50VG9BbmltYXRpb25zTWFwLmNvbnRhaW5zKCZlbGVtZW50
KSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgd2ViQW5pbWF0aW9ucyA9IG1fZWxlbWVudFRv
QW5pbWF0aW9uc01hcC5nZXQoJmVsZW1lbnQpOwotICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBl
bmRSYW5nZSh3ZWJBbmltYXRpb25zLmJlZ2luKCksIHdlYkFuaW1hdGlvbnMuZW5kKCkpOwotICAg
ICAgICB9CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zID0gZWxlbWVudC50cmFu
c2l0aW9ucygpOworICAgICAgICBhbmltYXRpb25zLmFwcGVuZFJhbmdlKGNzc1RyYW5zaXRpb25z
LmJlZ2luKCksIGNzc1RyYW5zaXRpb25zLmVuZCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgY3Nz
QW5pbWF0aW9ucyA9IGVsZW1lbnQuY3NzQW5pbWF0aW9ucygpOworICAgICAgICBhbmltYXRpb25z
LmFwcGVuZFJhbmdlKGNzc0FuaW1hdGlvbnMuYmVnaW4oKSwgY3NzQW5pbWF0aW9ucy5lbmQoKSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIHdlYkFuaW1hdGlvbnMgPSBlbGVtZW50LndlYkFuaW1hdGlv
bnMoKTsKKyAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmRSYW5nZSh3ZWJBbmltYXRpb25zLmJlZ2lu
KCksIHdlYkFuaW1hdGlvbnMuZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiBhbmltYXRpb25z
OwpAQCAtMTk3LDEzICsxNjcsNyBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEFuaW1h
dGlvblRpbWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbAogCiB2b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoRWxlbWVu
dCYgZWxlbWVudCwgQ1NTQW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCiB7Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5maW5kKCZl
bGVtZW50KTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3Jl
YXRlZEJ5TWFya3VwTWFwLmVuZCgpKSB7Ci0gICAgICAgIGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBp
dGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGNzc0FuaW1hdGlvbnMucmVtb3ZlKCZjc3NBbmltYXRp
b24pOwotICAgICAgICBpZiAoIWNzc0FuaW1hdGlvbnMuc2l6ZSgpKQotICAgICAgICAgICAgbV9l
bGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwLnJlbW92ZShpdGVyYXRvcik7
Ci0gICAgfQorICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpLnJlbW92ZSgm
Y3NzQW5pbWF0aW9uKTsKIAogICAgIGlmICghZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI2LDEwICsxOTAsMTAgQEAgdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKEVsZW1lbnQmIGVsZW1lbnQs
IENTU0EKIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6d2lsbERlc3Ryb3lSZW5kZXJlckZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBmb3IgKGF1dG8mIGNzc1RyYW5zaXRpb24g
OiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwLmdldCgmZWxlbWVudCkpCisgICAgZm9yIChh
dXRvJiBjc3NUcmFuc2l0aW9uIDogZWxlbWVudC50cmFuc2l0aW9ucygpKQogICAgICAgICBjc3NU
cmFuc2l0aW9uLT5jYW5jZWwoV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKIAotICAgIGZv
ciAoYXV0byYgY3NzQW5pbWF0aW9uIDogbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLmdldCgm
ZWxlbWVudCkpIHsKKyAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IGVsZW1lbnQuY3NzQW5p
bWF0aW9ucygpKSB7CiAgICAgICAgIGlmIChpczxDU1NBbmltYXRpb24+KGNzc0FuaW1hdGlvbikp
CiAgICAgICAgICAgICByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoZWxlbWVudCwg
ZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqY3NzQW5pbWF0aW9uKSk7CiAgICAgICAgIGNzc0FuaW1h
dGlvbi0+Y2FuY2VsKFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Olllcyk7CkBAIC0yMzksMTIgKzIw
Myw2IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxEZXN0cm95UmVuZGVyZXJGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjplbGVtZW50V2Fz
UmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQogewogICAgIHdpbGxEZXN0cm95UmVuZGVyZXJGb3JF
bGVtZW50KGVsZW1lbnQpOwotCi0gICAgbV9lbGVtZW50VG9BbmltYXRpb25zTWFwLnJlbW92ZSgm
ZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLnJlbW92ZSgmZWxlbWVu
dCk7Ci0gICAgbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5yZW1vdmUoJmVsZW1lbnQpOwot
ICAgIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQucmVtb3Zl
KCZlbGVtZW50KTsKLSAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBN
YXAucmVtb3ZlKCZlbGVtZW50KTsKIH0KIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6cmVtb3Zl
QW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKQEAgLTI2MSw5ICsyMTksOSBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQpCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERlY2xhcmF0
aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBmb3IgKGF1
dG8mIGNzc1RyYW5zaXRpb24gOiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwLmdldCgmZWxl
bWVudCkpCisgICAgZm9yIChhdXRvJiBjc3NUcmFuc2l0aW9uIDogZWxlbWVudC50cmFuc2l0aW9u
cygpKQogICAgICAgICBjc3NUcmFuc2l0aW9uLT5jYW5jZWwoKTsKLSAgICBmb3IgKGF1dG8mIGNz
c0FuaW1hdGlvbiA6IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5nZXQoJmVsZW1lbnQpKSB7
CisgICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBlbGVtZW50LmNzc0FuaW1hdGlvbnMoKSkg
ewogICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihjc3NBbmltYXRpb24pKQogICAgICAgICAg
ICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKGVsZW1lbnQsIGRvd25jYXN0PENT
U0FuaW1hdGlvbj4oKmNzc0FuaW1hdGlvbikpOwogICAgICAgICBjc3NBbmltYXRpb24tPmNhbmNl
bCgpOwpAQCAtMjkzLDEzICsyNTEsOCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogCiAgICAg
Ly8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25l
IiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlvbnMgYW5kIGRpc3JlZ2FyZCBu
ZXcgb25lcy4KICAgICBpZiAoY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+ZGlzcGxheSgp
ICE9IERpc3BsYXlUeXBlOjpOb25lICYmIGFmdGVyQ2hhbmdlU3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpOb25lKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VsZW1lbnRUb0NT
U0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAuZmluZCgmZWxlbWVudCk7Ci0gICAgICAgIGlm
IChpdGVyYXRvciAhPSBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAu
ZW5kKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBpdGVyYXRvci0+dmFs
dWU7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IGNzc0FuaW1hdGlvbnMp
Ci0gICAgICAgICAgICAgICAgY3NzQW5pbWF0aW9uLT5jYW5jZWxGcm9tU3R5bGUoKTsKLSAgICAg
ICAgICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUo
aXRlcmF0b3IpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDog
ZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkpCisgICAgICAgICAgICBjc3NBbmlt
YXRpb24tPmNhbmNlbEZyb21TdHlsZSgpOwogICAgICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNl
dENTU0FuaW1hdGlvbkxpc3QobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
MTAsOSArMjYzLDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9u
c0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmUKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBuZXdBbmltYXRpb25zOwotICAgIGF1dG8mIHBy
ZXZpb3VzQW5pbWF0aW9ucyA9IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1
cE1hcC5lbnN1cmUoJmVsZW1lbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvbkNv
bGxlY3Rpb24geyB9OwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBwcmV2aW91
c0FuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKIAogICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtYW5pbWF0aW9ucy0xLyNhbmltYXRpb25zCiAg
ICAgLy8gVGhlIHNhbWUgQGtleWZyYW1lcyBydWxlIG5hbWUgbWF5IGJlIHJlcGVhdGVkIHdpdGhp
biBhbiBhbmltYXRpb24tbmFtZS4gQ2hhbmdlcyB0byB0aGUgYW5pbWF0aW9uLW5hbWUgdXBkYXRl
IGV4aXN0aW5nCkBAIC0zNTYsMTAgKzMwNyw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobmV3QW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUoJmVs
ZW1lbnQpOwotICAgIGVsc2UKLSAgICAgICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwTWFwLnNldCgmZWxlbWVudCwgV1RGTW92ZShuZXdBbmltYXRpb25zKSk7CisgICAg
ZWxlbWVudC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUobmV3QW5pbWF0aW9u
cykpOwogCiAgICAga2V5ZnJhbWVFZmZlY3RTdGFjay5zZXRDU1NBbmltYXRpb25MaXN0KGN1cnJl
bnRBbmltYXRpb25MaXN0KTsKIH0KQEAgLTM3Nyw3ICszMjUsNyBAQCBzdGF0aWMgS2V5ZnJhbWVF
ZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1l
bnQsIENTUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgYm9vbCBwcm9wZXJ0eUlu
U3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBBbmltYXRpb25UaW1lbGluZTo6UHJvcGVydHlU
b1RyYW5zaXRpb25NYXAmIHRyYW5zaXRpb25zKQorc3RhdGljIGJvb2wgcHJvcGVydHlJblN0eWxl
TWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIHRyYW5zaXRp
b25zKQogewogICAgIGlmIChhdXRvKiB0cmFuc2l0aW9uID0gdHJhbnNpdGlvbnMuZ2V0KHByb3Bl
cnR5KSkgewogICAgICAgICBpZiAoQ1NTUHJvcGVydHlBbmltYXRpb246OnByb3BlcnRpZXNFcXVh
bChwcm9wZXJ0eSwgJnN0eWxlLCAmdHJhbnNpdGlvbi0+dGFyZ2V0U3R5bGUoKSkpCkBAIC00MTAs
MTMgKzM1OCw2IEBAIHN0YXRpYyBib29sIHRyYW5zaXRpb25NYXRjaGVzUHJvcGVydHkoY29uc3Qg
QW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBDU1NQcm9wZXJ0eUlECiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUFuaW1hdGlvblRpbWVsaW5lOjpQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgQW5pbWF0aW9u
VGltZWxpbmU6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoRWxlbWVudCYgZWxl
bWVudCkKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NT
UHJvcGVydHlJRC5lbnN1cmUoJmVsZW1lbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwIHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KIHN0YXRp
YyB2b2lkIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiB0cmFuc2l0aW9uUHJvcGVydGllcywg
Ym9vbCYgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKQogewogICAgIGlmICh0cmFuc2l0
aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpCkBAIC00NDQsNyArMzg1LDcgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIEhhc2hTZXQKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNT
U1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1By
b3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBBbmltYXRpb25UaW1lbGluZTo6UHJvcGVy
dHlUb1RyYW5zaXRpb25NYXAmIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHksIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHksIGNvbnN0IE1v
bm90b25pY1RpbWUgZ2VuZXJhdGlvblRpbWUpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZW50LCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgUHJvcGVydHlUb1RyYW5zaXRpb25N
YXAmIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHksIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFw
JiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHksIGNvbnN0IE1vbm90b25pY1RpbWUgZ2Vu
ZXJhdGlvblRpbWUpCiB7CiAgICAgY29uc3QgQW5pbWF0aW9uKiBtYXRjaGluZ0JhY2tpbmdBbmlt
YXRpb24gPSBudWxscHRyOwogICAgIGlmIChhdXRvKiB0cmFuc2l0aW9ucyA9IGFmdGVyQ2hhbmdl
U3R5bGUudHJhbnNpdGlvbnMoKSkgewpAQCAtNTc0LDcgKzUxNSw3IEBAIHZvaWQgQW5pbWF0aW9u
VGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1l
bnQmIGVsZW1lCiAgICAgICAgICAgICBhdXRvIGRlbGF5ID0gbWF0Y2hpbmdCYWNraW5nQW5pbWF0
aW9uLT5kZWxheSgpIDwgMCA/IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kZWxh
eSgpKSAqIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgOiBTZWNvbmRzKG1hdGNoaW5nQmFja2lu
Z0FuaW1hdGlvbi0+ZGVsYXkoKSk7CiAgICAgICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vjb25k
cyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9uKCkpICogcmV2ZXJzaW5nU2hvcnRl
bmluZ0ZhY3RvcjsKIAotICAgICAgICAgICAgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eShlbGVtZW50KS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50
LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZw
cmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUs
IGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdT
aG9ydGVuaW5nRmFjdG9yKSk7CisgICAgICAgICAgICBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9u
c0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50
LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZw
cmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUs
IGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdT
aG9ydGVuaW5nRmFjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyA0LiBP
dGhlcndpc2UsIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0aGUgcnVubmluZyB0cmFuc2l0
aW9uCiAgICAgICAgICAgICBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPmNhbmNlbEZyb21T
dHlsZSgpOwpAQCAtNTkwLDcgKzUzMSw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAg
ICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24t
PmR1cmF0aW9uKCkpOwogICAgICAgICAgICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0
eWxlID0gY3VycmVudFN0eWxlOwogICAgICAgICAgICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5n
RmFjdG9yID0gMTsKLSAgICAgICAgICAgIGVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoZWxlbWVudCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwg
cHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBk
ZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOworICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nVHJhbnNpdGlvbnNC
eVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwg
cHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBk
ZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTk5LDIxICs1NDAsMTgg
QEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFIKIHsKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVu
dCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFs
bCBvZiBpdHMgdHJhbnNpdGlvbnMgYW5kIGRpc3JlZ2FyZCBuZXcgb25lcy4KICAgICBpZiAoY3Vy
cmVudFN0eWxlLmhhc1RyYW5zaXRpb25zKCkgJiYgY3VycmVudFN0eWxlLmRpc3BsYXkoKSAhPSBE
aXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Tm9uZSkgewotICAgICAgICBpZiAobV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlv
bkJ5Q1NTUHJvcGVydHlJRC5jb250YWlucygmZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtIDogbV9lbGVt
ZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC50YWtlKCZlbGVtZW50KSkK
LSAgICAgICAgICAgICAgICBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0udmFs
dWUtPmNhbmNlbEZyb21TdHlsZSgpOwotICAgICAgICB9CisgICAgICAgIGF1dG8mIHJ1bm5pbmdU
cmFuc2l0aW9ucyA9IGVsZW1lbnQucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRl
bSA6IHJ1bm5pbmdUcmFuc2l0aW9ucykKKyAgICAgICAgICAgIGNzc1RyYW5zaXRpb25zQnlDU1NQ
cm9wZXJ0eUlETWFwSXRlbS52YWx1ZS0+Y2FuY2VsRnJvbVN0eWxlKCk7CisgICAgICAgIHJ1bm5p
bmdUcmFuc2l0aW9ucy5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8g
U2VjdGlvbiAzICJTdGFydGluZyBvZiB0cmFuc2l0aW9ucyIgZnJvbSB0aGUgQ1NTIFRyYW5zaXRp
b25zIExldmVsIDEgc3BlY2lmaWNhdGlvbi4KICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLXRyYW5zaXRpb25zLTEvI3N0YXJ0aW5nCiAKLSAgICBhdXRvJiBydW5uaW5nVHJhbnNp
dGlvbnNCeVByb3BlcnR5ID0gZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShlbGVt
ZW50KTsKLQotICAgIGF1dG8mIGNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSA9IG1fZWxl
bWVudFRvQ29tcGxldGVkQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC5lbnN1cmUoJmVsZW1l
bnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwIHsgfTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eSA9IGVsZW1lbnQucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOworICAgIGF1dG8m
IGNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSA9IGVsZW1lbnQuY29tcGxldGVkVHJhbnNp
dGlvbkJ5UHJvcGVydHkoKTsKIAogICAgIGF1dG8gZ2VuZXJhdGlvblRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxp
bmUuaAppbmRleCAyYzhkMjMwY2E0OTI2OGQxZGIwNmJjYTM5Y2M0OTA1MDMzOTdhYzljLi5mZjBm
NjExYzY0N2RhZmZmOWJkODIzODBiNzRlZGVjNDBiZjliOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaApAQCAtNzUsMTAgKzc1LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0
IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5n
ZVN0eWxlKTsKICAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50
JiwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFm
dGVyQ2hhbmdlU3R5bGUpOwogCi0gICAgdXNpbmcgQW5pbWF0aW9uQ29sbGVjdGlvbiA9IExpc3RI
YXNoU2V0PFJlZlB0cjxXZWJBbmltYXRpb24+PjsKLSAgICB1c2luZyBFbGVtZW50VG9BbmltYXRp
b25zTWFwID0gSGFzaE1hcDxFbGVtZW50KiwgQW5pbWF0aW9uQ29sbGVjdGlvbj47Ci0gICAgdXNp
bmcgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgPSBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIFJlZlB0
cjxDU1NUcmFuc2l0aW9uPj47Ci0KICAgICB2aXJ0dWFsIH5BbmltYXRpb25UaW1lbGluZSgpOwog
CiBwcm90ZWN0ZWQ6CkBAIC04NiwyMyArODIsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgVmVjdG9y
PFdlYWtQdHI8V2ViQW5pbWF0aW9uPj4gbV9hbGxBbmltYXRpb25zOwogICAgIEFuaW1hdGlvbkNv
bGxlY3Rpb24gbV9hbmltYXRpb25zOwotICAgIEhhc2hNYXA8RWxlbWVudCosIFByb3BlcnR5VG9U
cmFuc2l0aW9uTWFwPiBtX2VsZW1lbnRUb0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3Bl
cnR5SUQ7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiA9IExp
c3RIYXNoU2V0PFJlZlB0cjxDU1NBbmltYXRpb24+PjsKLSAgICB1c2luZyBFbGVtZW50VG9DU1NB
bmltYXRpb25zTWFwID0gSGFzaE1hcDxFbGVtZW50KiwgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbj47
Ci0KICAgICB2b2lkIHVwZGF0ZUdsb2JhbFBvc2l0aW9uKFdlYkFuaW1hdGlvbiYpOwotICAgIFBy
b3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBlbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5
KEVsZW1lbnQmKTsKICAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFBy
b3BlcnR5KEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgUHJvcGVydHlUb1Ry
YW5zaXRpb25NYXAmLCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYsIGNvbnN0IE1vbm90b25pY1Rp
bWUpOwogICAgIHZvaWQgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKEVsZW1lbnQm
LCBDU1NBbmltYXRpb24mKTsKIAotICAgIEVsZW1lbnRUb0FuaW1hdGlvbnNNYXAgbV9lbGVtZW50
VG9BbmltYXRpb25zTWFwOwotICAgIEVsZW1lbnRUb0FuaW1hdGlvbnNNYXAgbV9lbGVtZW50VG9D
U1NBbmltYXRpb25zTWFwOwotICAgIEVsZW1lbnRUb0FuaW1hdGlvbnNNYXAgbV9lbGVtZW50VG9D
U1NUcmFuc2l0aW9uc01hcDsKLSAgICBFbGVtZW50VG9DU1NBbmltYXRpb25zTWFwIG1fZWxlbWVu
dFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcDsKLSAgICBIYXNoTWFwPEVsZW1lbnQq
LCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcD4gbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlv
bkJ5Q1NTUHJvcGVydHlJRDsKLQogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmth
YmxlVHJhaXRzPiBtX2N1cnJlbnRUaW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaAppbmRleCA1N2FhYmExZWE1Mzg1MDA2ZjU2NjY0
M2YwZTEyMTg0ZDc0NGNmOGEzLi45MTlmYWRmMWNkNDFmN2E5OThlMzM5MTdmNmFiODBlNjg3YjM5
ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RU
aW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1p
bmcuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2Uu
aCIKICNpbmNsdWRlICJFZmZlY3RUaW1pbmcuaCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25VdGls
aXRpZXMuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRp
bWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNw
cAppbmRleCBhMzBkM2YwZWU5NWUxZTliZWE0ODEyYjA3MWU1NzE5NDcwMzM0MmU1Li5mMmY1NWY0
MGRmNzA4NTVjYTdjZGJmNGFlZTY4NzI0ZDQyNDkzMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC01NDYsMTEgKzU0Niw4IEBAIHZvaWQg
RG9jdW1lbnRUaW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKFJlZlB0cjxDU1NUcmFuc2l0
aW9uPiB0cmFuc2l0aW9uKQogICAgIEFTU0VSVCh0cmFuc2l0aW9uKTsKICAgICByZW1vdmVBbmlt
YXRpb24oKnRyYW5zaXRpb24pOwogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlv
bi0+ZWZmZWN0KCkpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb3duY2FzdDxLZXlm
cmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+ZWZmZWN0KCkpLT50YXJnZXQoKSkgewotICAgICAgICAg
ICAgbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmVuc3Vy
ZSh0YXJnZXQsIFtdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gSGFzaE1hcDxDU1NQcm9wZXJ0
eUlELCBSZWZQdHI8Q1NTVHJhbnNpdGlvbj4+IHsgfTsKLSAgICAgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5zZXQodHJhbnNpdGlvbi0+cHJvcGVydHkoKSwgdHJhbnNpdGlvbik7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pih0
cmFuc2l0aW9uLT5lZmZlY3QoKSktPnRhcmdldCgpKQorICAgICAgICAgICAgdGFyZ2V0LT5jb21w
bGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eSgpLnNldCh0cmFuc2l0aW9uLT5wcm9wZXJ0eSgpLCB0
cmFuc2l0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgzYTEzZTA4NmZk
MWU3NTVkNDUwNDUyZjM4Mjg5MDQxZWFmMDY4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgiCisK
KyNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdFN0YWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKQor
eworfQorCitFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6On5FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEoKQoreworfQorCitLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGE6OmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKQoreworICAgIGlmICghbV9rZXlmcmFtZUVm
ZmVjdFN0YWNrKQorICAgICAgICBtX2tleWZyYW1lRWZmZWN0U3RhY2sgPSBtYWtlVW5pcXVlPEtl
eWZyYW1lRWZmZWN0U3RhY2s+KCk7CisgICAgcmV0dXJuICptX2tleWZyYW1lRWZmZWN0U3RhY2su
Z2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmRj
NjQ0NmM2NDgyNDQ0OWQzMTRhYmI0YzkwOGIxYThlZTk4MzRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKKyNpbmNs
dWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENTU0FuaW1hdGlvbjsKK2NsYXNzIENTU1RyYW5zaXRpb247CitjbGFzcyBXZWJBbmltYXRpb247
CisKK2NsYXNzIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
KCk7CisgICAgfkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpOworCisgICAgS2V5ZnJhbWVFZmZl
Y3RTdGFjayoga2V5ZnJhbWVFZmZlY3RTdGFjaygpIHsgcmV0dXJuIG1fa2V5ZnJhbWVFZmZlY3RT
dGFjay5nZXQoKTsgfQorICAgIEtleWZyYW1lRWZmZWN0U3RhY2smIGVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKTsKKworICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24mIHdlYkFuaW1hdGlvbnMoKSB7
IHJldHVybiBtX3dlYkFuaW1hdGlvbnM7IH0KKyAgICBBbmltYXRpb25Db2xsZWN0aW9uJiBjc3NB
bmltYXRpb25zKCkgeyByZXR1cm4gbV9jc3NBbmltYXRpb25zOyB9CisgICAgQW5pbWF0aW9uQ29s
bGVjdGlvbiYgdHJhbnNpdGlvbnMoKSB7IHJldHVybiBtX3RyYW5zaXRpb25zOyB9CisgICAgQ1NT
QW5pbWF0aW9uQ29sbGVjdGlvbiYgYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpIHsgcmV0dXJu
IG1fYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cDsgfQorICAgIHZvaWQgc2V0QW5pbWF0aW9uc0Ny
ZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykgeyBtX2Fu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAgPSBXVEZNb3ZlKGFuaW1hdGlvbnMpOyB9CisgICAgUHJv
cGVydHlUb1RyYW5zaXRpb25NYXAmIGNvbXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCkgeyBy
ZXR1cm4gbV9jb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eTsgfQorICAgIFByb3BlcnR5VG9U
cmFuc2l0aW9uTWFwJiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkgeyByZXR1cm4gbV9y
dW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5OyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8S2V5ZnJhbWVFZmZlY3RTdGFjaz4gbV9rZXlmcmFtZUVmZmVjdFN0YWNrOworICAg
IEFuaW1hdGlvbkNvbGxlY3Rpb24gbV93ZWJBbmltYXRpb25zOworICAgIEFuaW1hdGlvbkNvbGxl
Y3Rpb24gbV9jc3NBbmltYXRpb25zOworICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24gbV90cmFuc2l0
aW9uczsKKyAgICBDU1NBbmltYXRpb25Db2xsZWN0aW9uIG1fYW5pbWF0aW9uc0NyZWF0ZWRCeU1h
cmt1cDsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCBtX2NvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5OworICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwIG1fcnVubmluZ1RyYW5zaXRp
b25zQnlQcm9wZXJ0eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCA1N2ExNzc0OWQwODM0MGU5N2E0
MGRhNjkwOWZhNDUwMTIyNjBmMmY0Li5iZThiNmQ5ZjRjOWQ4NzJlOGIwOTUzMjEzMzQ1ZWRlMzQ5
N2RmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAt
MzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiV2ViQW5p
bWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgKaW5kZXggMTY2MzJkOTQyM2Q3YjYw
NDhiNzgyODMxMzk4OTk0ZmZlYTY0MjEyNC4uNzZkMDliYWJmZGEyZTRkNTUxYWIzODg2ZGM1Y2Ey
M2EyYjU4NjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFs
RWZmZWN0VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZm
ZWN0VGltaW5nLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAj
aW5jbHVkZSAiUGxheWJhY2tEaXJlY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25VdGls
aXRpZXMuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAppbmRleCBmOWMzOTMxZWU5NmUxNThkNDA1YjQ3MzZi
NWE1YjY4Nzg5MGQ5YmIzLi4xMDhkM2Q5ZDAxZWQ3ODMzYTljMmU0YzRkNjJhZmM5YjZmODVlZGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgog
I2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVHlwZXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNjk1MTgyMmQ1NTUzZjg0ZTM4MDU0N2RhNTAwYzAwODFkMWNkMmNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmgKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYXJr
YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFuaW1hdGlvbkxpc3Q7Citj
bGFzcyBDU1NBbmltYXRpb247CitjbGFzcyBDU1NUcmFuc2l0aW9uOworY2xhc3MgV2ViQW5pbWF0
aW9uOworCitzdHJ1Y3QgV2ViQW5pbWF0aW9uc01hcmthYmxlRG91YmxlVHJhaXRzIHsKKyAgICBz
dGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6aXNuYW4odmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgZG91
YmxlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CisgICAgfQorfTsKKwordXNpbmcgTWFya2FibGVEb3Vi
bGUgPSBNYXJrYWJsZTxkb3VibGUsIFdlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0cz47
CisKK3VzaW5nIEFuaW1hdGlvbkNvbGxlY3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQdHI8V2ViQW5p
bWF0aW9uPj47Cit1c2luZyBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCA9IEhhc2hNYXA8Q1NTUHJv
cGVydHlJRCwgUmVmUHRyPENTU1RyYW5zaXRpb24+PjsKK3VzaW5nIENTU0FuaW1hdGlvbkNvbGxl
Y3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQdHI8Q1NTQW5pbWF0aW9uPj47CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0
aW9uVXRpbGl0aWVzLmgKaW5kZXggMmI0YjNlMzJlYzNlYjczMDAwMjZhZjcyMmQ4ODA5M2MxNTNj
NzdiOC4uZmI5MTM3MDEwYWU5YTZhMzNlMzE4N2M4MWE4NjRmYWNjM2IyOTJkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaApAQCAtNTAs
MjAgKzUwLDYgQEAgaW5saW5lIGRvdWJsZSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShj
b25zdCBTZWNvbmRzIHRpbWUpCiAKIGNvbnN0IGF1dG8gdGltZUVwc2lsb24gPSBTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKDAuMDAxKTsKIAotc3RydWN0IFdlYkFuaW1hdGlvbnNNYXJrYWJsZURv
dWJsZVRyYWl0cyB7Ci0gICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGRvdWJsZSB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmlzbmFuKHZhbHVlKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBlbXB0eVZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwotICAgIH0KLX07Ci0K
LXVzaW5nIE1hcmthYmxlRG91YmxlID0gTWFya2FibGU8ZG91YmxlLCBXZWJBbmltYXRpb25zTWFy
a2FibGVEb3VibGVUcmFpdHM+OwotCiBib29sIGNvbXBhcmVBbmltYXRpb25zQnlDb21wb3NpdGVP
cmRlcihXZWJBbmltYXRpb24mLCBXZWJBbmltYXRpb24mLCBjb25zdCBBbmltYXRpb25MaXN0Kik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiNWZj
OTEwMDkyYTRiMzg2ZjgwYzUyNTg0YjRhM2NiNzU4YTM3NTIyLi5hMGM4MmMyMmU2MTlmMzRkMDcz
NmI5MzhjYjE1MjY4NmUzNmIyMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00Niw2ICs0
Niw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRUaW1lbGluZS5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKKyNpbmNsdWRlICJFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJFbGVtZW50UmFyZURhdGEuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIK
QEAgLTM3MzgsMjYgKzM3MzksMzUgQEAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKiBFbGVtZW50
OjppbnRlcnNlY3Rpb25PYnNlcnZlckRhdGFJZkV4aXN0cygpCiAKICNlbmRpZgogCitFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5lbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEoKSA6IG51bGxwdHI7Cit9CisKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0
YSYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKQoreworICAgIHJldHVybiBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKS5lbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpOworfQorCiBLZXlm
cmFtZUVmZmVjdFN0YWNrKiBFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0YWNrKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5rZXlmcmFtZUVm
ZmVjdFN0YWNrKCkgOiBudWxscHRyOworICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0gYW5p
bWF0aW9uUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEtPmtleWZyYW1l
RWZmZWN0U3RhY2soKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogS2V5ZnJhbWVFZmZlY3RT
dGFjayYgRWxlbWVudDo6ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpCiB7Ci0gICAgYXV0byYg
cmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBpZiAoIXJhcmVEYXRhLmtl
eWZyYW1lRWZmZWN0U3RhY2soKSkKLSAgICAgICAgcmFyZURhdGEuc2V0S2V5ZnJhbWVFZmZlY3RT
dGFjayhtYWtlVW5pcXVlPEtleWZyYW1lRWZmZWN0U3RhY2s+KCkpOwotICAgIHJldHVybiAqcmFy
ZURhdGEua2V5ZnJhbWVFZmZlY3RTdGFjaygpOworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25S
YXJlRGF0YSgpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKIH0KIAogYm9vbCBFbGVtZW50
OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdAogewotICAgIGlmICghaGFzUmFyZURhdGEoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9
IGVsZW1lbnRSYXJlRGF0YSgpLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCk7Ci0gICAgcmV0dXJuIGtl
eWZyYW1lRWZmZWN0U3RhY2sgJiYga2V5ZnJhbWVFZmZlY3RTdGFjay0+aGFzRWZmZWN0cygpOwor
ICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkgeworICAg
ICAgICBpZiAoYXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGFuaW1hdGlvbkRhdGEtPmtleWZy
YW1lRWZmZWN0U3RhY2soKSkKKyAgICAgICAgICAgIHJldHVybiBrZXlmcmFtZUVmZmVjdFN0YWNr
LT5oYXNFZmZlY3RzKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogT3B0aW9uU2V0
PEFuaW1hdGlvbkltcGFjdD4gRWxlbWVudDo6YXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5
bGUmIHRhcmdldFN0eWxlKQpAQCAtMzc3OCw2ICszNzg4LDQxIEBAIE9wdGlvblNldDxBbmltYXRp
b25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJn
ZXRTdHlsCiAgICAgcmV0dXJuIGltcGFjdDsKIH0KIAorQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxl
bWVudDo6d2ViQW5pbWF0aW9ucygpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVE
YXRhKCkud2ViQW5pbWF0aW9ucygpOworfQorCitBbmltYXRpb25Db2xsZWN0aW9uJiBFbGVtZW50
Ojpjc3NBbmltYXRpb25zKCkKK3sKKyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEo
KS5jc3NBbmltYXRpb25zKCk7Cit9CisKK0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OnRy
YW5zaXRpb25zKCkKK3sKKyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS50cmFu
c2l0aW9ucygpOworfQorCitDU1NBbmltYXRpb25Db2xsZWN0aW9uJiBFbGVtZW50OjphbmltYXRp
b25zQ3JlYXRlZEJ5TWFya3VwKCkKK3sKKyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURh
dGEoKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0
QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0
aW9ucykKK3sKKyAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnNldEFuaW1hdGlvbnNDcmVh
dGVkQnlNYXJrdXAoV1RGTW92ZShhbmltYXRpb25zKSk7Cit9CisKK1Byb3BlcnR5VG9UcmFuc2l0
aW9uTWFwJiBFbGVtZW50Ojpjb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eSgpCit7CisgICAg
cmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkuY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJv
cGVydHkoKTsKK30KKworUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OnJ1bm5pbmdU
cmFuc2l0aW9uc0J5UHJvcGVydHkoKQoreworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJl
RGF0YSgpLnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKK30KKwogI2lmIEVOQUJMRShS
RVNJWkVfT0JTRVJWRVIpCiAKIHZvaWQgRWxlbWVudDo6ZGlzY29ubmVjdEZyb21SZXNpemVPYnNl
cnZlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNmZkNTk5M2U2YmRmZTJkMjIyN2FiZDkzMDUy
YzIwZGVmYzg3Mjg5Ny4uMWM2YmIxMjFjYjNiOWFmMWI2MDczYWYzOGM0OGFmYTI3NjkzNWQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9v
dE1vZGUuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJT
dHlsZUNoYW5nZS5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDYg
KzQyLDcgQEAgY2xhc3MgRGF0YXNldERPTVN0cmluZ01hcDsKIGNsYXNzIERPTVJlY3Q7CiBjbGFz
cyBET01SZWN0TGlzdDsKIGNsYXNzIERPTVRva2VuTGlzdDsKK2NsYXNzIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YTsKIGNsYXNzIEVsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SFRNTERvY3VtZW50OwpAQCAtNDkxLDYgKzQ5MywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNL
ZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsKICAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
cHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYpOwogCisgICAgQW5pbWF0aW9uQ29sbGVj
dGlvbiYgd2ViQW5pbWF0aW9ucygpOworICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24mIGNzc0FuaW1h
dGlvbnMoKTsKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uJiB0cmFuc2l0aW9ucygpOworICAgIENT
U0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKKyAgICB2
b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYm
KTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJv
cGVydHkoKTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpOworCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sKTsKQEAgLTcwNSw2ICs3MTUsOSBAQCBw
cml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVudFJhcmVEYXRhKCkgY29uc3Q7CiAg
ICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKIAorICAgIEVsZW1l
bnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURhdGEoKSBjb25zdDsKKyAgICBFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEmIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCk7CisKICAgICB2
aXJ0dWFsIGludCBkZWZhdWx0VGFiSW5kZXgoKSBjb25zdDsKIAogICAgIHZvaWQgZGV0YWNoQWxs
QXR0ck5vZGVzRnJvbUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApp
bmRleCBiN2E2ODYzNTNkN2M2ODg0OWEyMmJiNmY5ODEwZTBlZjZlMjNiNDkwLi5mY2NhYjUxMTcz
NDgyMWE0YmQ2ZWNjMGEwNjM4M2FmZTIwNGQ5ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRS
YXJlRGF0YS5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEYXRhc2V0
RE9NU3RyaW5nTWFwLmgiCisjaW5jbHVkZSAiRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgiCiAj
aW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVj
dFN0YWNrLmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCkBAIC0xMDEsOCArMTAyLDggQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ1NTQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXND
U1NBbmltYXRpb247IH0KICAgICB2b2lkIHNldEhhc0NTU0FuaW1hdGlvbihib29sIHZhbHVlKSB7
IG1faGFzQ1NTQW5pbWF0aW9uID0gdmFsdWU7IH0KIAotICAgIEtleWZyYW1lRWZmZWN0U3RhY2sq
IGtleWZyYW1lRWZmZWN0U3RhY2soKSB7IHJldHVybiBtX2tleWZyYW1lRWZmZWN0U3RhY2suZ2V0
KCk7IH0KLSAgICB2b2lkIHNldEtleWZyYW1lRWZmZWN0U3RhY2soc3RkOjp1bmlxdWVfcHRyPEtl
eWZyYW1lRWZmZWN0U3RhY2s+JiYga2V5ZnJhbWVFZmZlY3RTdGFjaykgeyBtX2tleWZyYW1lRWZm
ZWN0U3RhY2sgPSBXVEZNb3ZlKGtleWZyYW1lRWZmZWN0U3RhY2spOyB9CisgICAgRWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhKiBlbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2Fu
aW1hdGlvblJhcmVEYXRhLmdldCgpOyB9CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBl
bnN1cmVBbmltYXRpb25SYXJlRGF0YSgpOwogCiAgICAgYm9vbCBoYXNFbGVtZW50SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRWxlbWVudElkZW50aWZpZXI7IH0KICAgICB2b2lkIHNl
dEhhc0VsZW1lbnRJZGVudGlmaWVyKGJvb2wgdmFsdWUpIHsgbV9oYXNFbGVtZW50SWRlbnRpZmll
ciA9IHZhbHVlOyB9CkBAIC0xNTgsNiArMTU5LDggQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAg
IGlmIChtX2JlZm9yZVBzZXVkb0VsZW1lbnQgfHwgbV9hZnRlclBzZXVkb0VsZW1lbnQpCiAgICAg
ICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBzZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgaWYg
KG1fYW5pbWF0aW9uUmFyZURhdGEpCisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OkFu
aW1hdGlvbnMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgpAQCAtMTkw
LDcgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc2l6ZU9ic2VydmVy
RGF0YT4gbV9yZXNpemVPYnNlcnZlckRhdGE7CiAjZW5kaWYKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxLZXlmcmFtZUVmZmVjdFN0YWNrPiBtX2tleWZyYW1lRWZmZWN0U3RhY2s7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4gbV9hbmltYXRpb25SYXJlRGF0YTsK
IAogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2JlZm9yZVBzZXVkb0VsZW1lbnQ7CiAgICAg
UmVmUHRyPFBzZXVkb0VsZW1lbnQ+IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50OwpAQCAtMjQ5LDQgKzI1
MiwxMSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0U3R5bGVSZWxhdGlvbnMo
KQogICAgIHNldENoaWxkSW5kZXgoMCk7CiB9CiAKK2lubGluZSBFbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEmIEVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKQoreworICAg
IGlmICghbV9hbmltYXRpb25SYXJlRGF0YSkKKyAgICAgICAgbV9hbmltYXRpb25SYXJlRGF0YSA9
IG1ha2VVbmlxdWU8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhPigpOworICAgIHJldHVybiAqbV9h
bmltYXRpb25SYXJlRGF0YS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDI3MTJkMWU2ZDU3YzU2YmFlYTJjZDQ5NjFkMzEy
MzVlZGViMmQzZWEuLjRiZGIxMjYyMmNmZDg2ZTkyNjQyNTNiYWUzOGVjOWFlY2YwMWQ1YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI0OCw3ICsyNDgsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIENvbm5lY3RlZEZyYW1lQ291bnQgPSAxIDw8IDAsCiAgICAgICAgIE5vZGVMaXN0ID0g
MSA8PCAxLAogICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0gMSA8PCAyLAotCiAgICAgICAgIFRh
YkluZGV4ID0gMSA8PCAzLAogICAgICAgICBNaW5pbXVtU2l6ZSA9IDEgPDwgNCwKICAgICAgICAg
U2Nyb2xsaW5nUG9zaXRpb24gPSAxIDw8IDUsCkBAIC0yNjAsNiArMjU5LDcgQEAgcHVibGljOgog
ICAgICAgICBBdHRyaWJ1dGVNYXAgPSAxIDw8IDExLAogICAgICAgICBJbnRlcmFjdGlvbk9ic2Vy
dmVyID0gMSA8PCAxMiwKICAgICAgICAgUHNldWRvRWxlbWVudHMgPSAxIDw8IDEzLAorICAgICAg
ICBBbmltYXRpb25zID0gMSA8PCAxNCwKICAgICB9OwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393233</attachid>
            <date>2020-03-11 06:27:35 -0700</date>
            <delta_ts>2020-03-11 09:37:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208079-20200311142733.patch</filename>
            <type>text/plain</type>
            <size>54211</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY2ZDY0N2ZhNGIyMjdl
ZmIwZjFiZWZkZjI3NjFlYWY1OGFhOGUxOC4uNzNmODU5MjBkN2I5YjY3YzM2YmNhN2Q3ZjExYWQx
YjM3ZWQzN2JjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIwLTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIEFuaW1hdGlvblRpbWVs
aW5lIHNob3VsZCBub3QgaGF2ZSBtdWx0aXBsZSBIYXNoTWFwcyB3aXRoIHJhdyBFbGVtZW50KiBr
ZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTA2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJvZHVjZSBhIG5ldyBFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEgY2xhc3MgdGhhdCBob2xkcyB0aGUgS2V5ZnJhbWVFZmZlY3RTdGFj
ayBwcmV2aW91c2x5IG93bmVkIGJ5IEVsZW1lbnRSYXJlRGF0YSBhcyB3ZWxsIGFzIGEgZmV3IG1h
cHMgYW5kIGxpc3RzCisgICAgICAgIG93bmVkIGJ5IEFuaW1hdGlvblRpbWVsaW5lIHdoaWNoIHdv
dWxkIHVzZSByYXcgRWxlbWVudCBwb2ludGVycyBhcyBrZXlzLiBTcGVjaWZpY2FsbHksIHRoaXMg
aXMgd2hhdCBjaGFuZ2VkOgorCisgICAgICAgIC0gQW5pbWF0aW9uVGltZWxpbmU6Om1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg4oaSIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YTo6cnVubmluZ1RyYW5zaXRpb25CeVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmlt
YXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9w
ZXJ0eUlEIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9DU1NB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6
OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5l
OjptX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGE6OnRyYW5zaXRpb25zKCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50
VG9DU1NBbmltYXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1h
dGlvbnMoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5lOjptX2VsZW1lbnRUb0FuaW1hdGlv
bnNNYXAg4oaSIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucygpCisKKyAg
ICAgICAgRm9yIGNvbnZlbmllbmNlLCB0aGVzZSBuZXcgbWVtYmVycyBhcmUgZXhwb3NlZCB2aWEg
RWxlbWVudCBkaXJlY3RseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXApOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25G
cm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp3aWxsRGVzdHJveVJlbmRlcmVyRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdh
c1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERl
Y2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JFbGVtZW50QW5kUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpy
ZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmg6Cisg
ICAgICAgICogYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmg6CisgICAgICAgICogYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBhbmltYXRpb24vRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmguCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGE6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6On5FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjplbnN1cmVL
ZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKiBhbmltYXRpb24vRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhOjprZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpzZXRBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YTo6Y29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KToK
KyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKiBhbmltYXRp
b24vT3B0aW9uYWxFZmZlY3RUaW1pbmcuaDoKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0czo6aXNFbXB0
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRy
YWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uc01hcmthYmxlRG91YmxlVHJh
aXRzOjppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0
aW9uc01hcmthYmxlRG91YmxlVHJhaXRzOjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphbmltYXRpb25S
YXJlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBbmltYXRp
b25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzS2V5ZnJhbWVFZmZlY3Rz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYkFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3NzQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojphbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29t
cGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjprZXlmcmFtZUVmZmVjdFN0YWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0S2V5ZnJhbWVFZmZlY3RTdGFjayk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorCiAyMDIwLTAzLTEwICBUb21v
a2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgogCiAgICAgICAgIFtPcGVuU1NMXSBJbXBs
ZW1lbnQgV2ViQ3J5cHRvIEFQSXMgZm9yIEFFUy1DVFIgYW5kIEFFUy1LVwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggMjViYTQ2MzMxNTg1Y2IxYmYzZWMxMWI0MGIzMmQ2MGQ1M2QwMGM3Ni4uOWY1NTY1
NDZmOGQ2ZGM4MTdkYmQ0ZDg2MzMzZWIxNDU4YTgyY2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xODUsNiArMTg1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIGFuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbk9wdGlvbnMuaAogICAgIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdE9wdGlvbnMuaAogICAgIGFuaW1hdGlvbi9QbGF5YmFja0RpcmVjdGlvbi5o
CisgICAgYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmgKIAogICAgIGJpbmRpbmdzL0lETFR5
cGVzLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1NTNmOTY0NmNiODkyMWE5NTdkYTg3N2VkYjY3MGRm
N2U1ZmY5NThkLi4wZDQ1MzJmMTYzZGNmYWZjOGRmM2U3MzViNGVjN2MwMTI2YWZjNTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3Bw
CiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1h
dGlvbi5jcHAKIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorYW5pbWF0aW9uL0VsZW1l
bnRBbmltYXRpb25SYXJlRGF0YS5jcHAKIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKIGFu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2ZDYyNWVlMDQ1Mzk2MzVhOTdmZTBkOWIyMWE2YjJkOTcwZWYyZGRmLi5iNmIzY2Q4
YTM1YmIwM2IwZGFmYzZmZGYxNTY3ZmM1NDliMmFiNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDg0LDEyICsyMDg0LDE0
IEBACiAJCTcxMDI1RURFMUY5OUYxRUMwMDRBMjUwQyAvKiBKU0FuaW1hdGlvblRpbWVsaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVEOTFG
OTlGMUE3MDA0QTI1MEMgLyogSlNBbmltYXRpb25UaW1lbGluZS5oICovOyB9OwogCQk3MTAyNUVF
MDFGOTlGMUVDMDA0QTI1MEMgLyogSlNEb2N1bWVudFRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVEQzFGOTlGMUE4MDA0QTI1MEMg
LyogSlNEb2N1bWVudFRpbWVsaW5lLmggKi87IH07CiAJCTcxMDI1RUUyMUY5OUYxRUMwMDRBMjUw
QyAvKiBKU1dlYkFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzEwMjVFRDgxRjk5RjFBNjAwNEEyNTBDIC8qIEpTV2ViQW5pbWF0aW9uLmgg
Ki87IH07CisJCTcxMDhFRUU2MjQxOEVENUEwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25UeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEwOEVFRTQy
NDE4RUQ1MzAwNUMzREE3IC8qIFdlYkFuaW1hdGlvblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExMTI0M0UyMTZGQTcxMTAwRUI3QjY3
IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzExMTI0M0IyMTZGQTZFMDAwRUI3QjY3IC8qIENvbXBvc2l0
ZU9wZXJhdGlvbk9yQXV0by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxMTEyNDQxMjE2RkE3Q0QwMEVCN0I2NyAvKiBKU0NvbXBvc2l0ZU9wZXJh
dGlvbk9yQXV0by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzExMTI0NDAyMTZGQTdCRTAwRUI3QjY3IC8qIEpTQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEx
NkUyQ0MxRkVENzVEQzAwQzA2RkRFIC8qIENvbXB1dGVkRWZmZWN0VGltaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE2RTJDQjFGRUQ3NUQxMDBD
MDZGREUgLyogQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTE2RTJDRjFGRUQ3NjVCMDBDMDZGREUgLyogSlND
b21wdXRlZEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzExNkUyQ0UxRkVENzY1MjAwQzA2RkRFIC8qIEpTQ29tcHV0ZWRFZmZlY3RU
aW1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MTE3NDQ1OTE0QkMzNEVDMDBFRTVGQzggLyogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE3NDQ1NzE0QkMz
NEUyMDBFRTVGQzggLyogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmggKi87IH07CiAJCTcxMThGRUQ1
MTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE4RkVEMzE1Njg1Q0M2MDAzMEI3OUEgLyogSlNT
VkdWaWV3U3BlYy5oICovOyB9OworCQk3MTE5NDY1NjI0MTgxRUExMDA0NjZDMTEgLyogRWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MTE5NDY1MzI0MTgxRTgzMDA0NjZDMTEgLyogRWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzExQUQxMjYyMzZEODZFNTAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExQUQxMjMyMzZEODZE
MzAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMjA3MzQwMjE2REZCMDAwMEM3ODMyOSAvKiBP
cHRpb25hbEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzEyMDczM0QyMTZERkFGMTAwQzc4MzI5IC8qIE9wdGlvbmFsRWZmZWN0VGlt
aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzEyMDczNDMyMTZERkI0MTAwQzc4MzI5IC8qIEpTT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMjA3MzQxMjE2REZC
MzEwMEM3ODMyOSAvKiBKU09wdGlvbmFsRWZmZWN0VGltaW5nLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MTksNiArOTQyMSw3IEBACiAJCTcx
MDI1RURBMUY5OUYxQTcwMDRBMjUwQyAvKiBKU0FuaW1hdGlvblRpbWVsaW5lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQW5pbWF0aW9uVGltZWxpbmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTAyNUVEQjFGOTlGMUE4MDA0QTI1MEMgLyog
SlNEb2N1bWVudFRpbWVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRG9jdW1lbnRUaW1lbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxMDI1RURDMUY5OUYxQTgwMDRBMjUwQyAvKiBKU0RvY3VtZW50VGltZWxpbmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudFRpbWVsaW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMDhFRUU0MjQxOEVENTMwMDVDM0RBNyAvKiBXZWJBbmlt
YXRpb25UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbmltYXRp
b25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTBGQTc0QjFERUU1NzZE
MDA0QzcxNUUgLyogY29udHJvbHMtYmFyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gImNvbnRyb2xzLWJhci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcxMEZBNzRDMURFRTU3N0UwMDRDNzE1RSAvKiBjb250cm9scy12aXNpYmlsaXR5LXN1cHBv
cnQuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiY29udHJvbHMt
dmlzaWJpbGl0eS1zdXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEx
MTI0M0IyMTZGQTZFMDAwRUI3QjY3IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0MzMsNiArOTQzNiw4IEBACiAJCTcxMTc0
NDU3MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMThGRUQyMTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1Zp
ZXdTcGVjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHVmll
d1NwZWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE4RkVEMzE1Njg1Q0M2
MDAzMEI3OUEgLyogSlNTVkdWaWV3U3BlYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR1ZpZXdTcGVjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMTk0
NjUzMjQxODFFODMwMDQ2NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMTk0NjU1MjQxODFFODQwMDQ2NkMxMSAvKiBF
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzExQUQxMjMyMzZEODZEMzAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbmltYXRpb25FdmVudEJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExQUQxMjUyMzZEODZENDAwNkZGMzdD
IC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBbmltYXRpb25FdmVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTFGQjA3NTFEQzc2ODhGMDBDNEM3MDggLyogcGxhY2FyZC1zdXBwb3J0LmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInBsYWNhcmQtc3VwcG9ydC5qcyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA0Niw2ICsyMTA1MSw4IEBACiAJCQkJ
NzE3MjlGNzkyMEYzQkEzOTAwODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRpb25zLmlkbCAq
LywKIAkJCQk3MTJCRTQ3QzFGRTg2NDQ4MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5nLmggKi8sCiAJ
CQkJNzEyQkU0N0ExRkU4NjQ0NzAwMjAzMUNDIC8qIEVmZmVjdFRpbWluZy5pZGwgKi8sCisJCQkJ
NzExOTQ2NTUyNDE4MUU4NDAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHAg
Ki8sCisJCQkJNzExOTQ2NTMyNDE4MUU4MzAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oICovLAogCQkJCTcxMkJFNDgxMUZFODY1RDQwMDIwMzFDQyAvKiBGaWxsTW9kZS5oICov
LAogCQkJCTcxMkJFNDgyMUZFODY1RDUwMDIwMzFDQyAvKiBGaWxsTW9kZS5pZGwgKi8sCiAJCQkJ
NzEzRjFENTkyM0RGMUQ3RDAwM0Y1RUZBIC8qIEdldEFuaW1hdGlvbnNPcHRpb25zLmggKi8sCkBA
IC0yMTA2OCw2ICsyMTA3NSw3IEBACiAJCQkJNzEwMjVFQzMxRjk5RjA5NjAwNEEyNTBDIC8qIFdl
YkFuaW1hdGlvbi5jcHAgKi8sCiAJCQkJNzEwMjVFQzIxRjk5RjA5NjAwNEEyNTBDIC8qIFdlYkFu
aW1hdGlvbi5oICovLAogCQkJCTcxMDI1RUM4MUY5OUYwOTYwMDRBMjUwQyAvKiBXZWJBbmltYXRp
b24uaWRsICovLAorCQkJCTcxMDhFRUU0MjQxOEVENTMwMDVDM0RBNyAvKiBXZWJBbmltYXRpb25U
eXBlcy5oICovLAogCQkJCTcxQzI1QUY1MjM5MkJGM0MwMEQ1QzA5OCAvKiBXZWJBbmltYXRpb25V
dGlsaXRpZXMuY3BwICovLAogCQkJCTcxMzI0NDRGMjAxMDlEOUIwMEFFN0ZCMiAvKiBXZWJBbmlt
YXRpb25VdGlsaXRpZXMuaCAqLywKIAkJCSk7CkBAIC0yNjM3MCw2ICsyNjM3OCw4IEBACiAJCQkJ
Q0Q5RDM3NUEyMTUxNjNFNDAwNDk2NTdCIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oICovLAogCQkJ
CUNEOTRBNUQ0MUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1LZXlTdGF0dXMuaCAqLywKIAkJCQlDRDk0
QTVDRDFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oICovLAor
CQkJCUNEOEQzMDZFMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLywKKwkJCQlD
RDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovLAogCQkJCUNEOTRBNUQz
MUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNhcGFiaWxpdHkuaCAqLywKIAkJCQlDRDk0QTVE
NjFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNTWVzc2FnZVR5cGUuaCAqLywKIAkJCQlDRDNDRTExQzI0
MDQ1MUFGMDA0QkEwMUQgLyogQ0RNUHJpdmF0ZS5jcHAgKi8sCkBAIC0yNjM3OSw4ICsyNjM4OSw2
IEBACiAJCQkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi8s
CiAJCQkJQ0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1IC8qIENETVJlc3RyaWN0aW9ucy5oICovLAog
CQkJCUNEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICovLAotCQkJ
CUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi8sCi0JCQkJQ0Q4RDMw
NkUyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBlbmNyeXB0ZWRtZWRpYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTM2Miw2
ICsyOTM3MCw3IEBACiAJCQkJQ0QzQ0UwRkIyNDAxQUFEOTAwNEJBMDFEIC8qIENETUluc3RhbmNl
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQ0UwRkMyNDAxQUFEOTAwNEJBMDFEIC8q
IENETUtleVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQ0UwRkQyNDAxQUFEOTAwNEJB
MDFEIC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
OEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyogQ0RNTWVzc2FnZVR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMTAwMjQwMUFBREEwMDRCQTAxRCAvKiBDRE1Qcml2
YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI5OTA0LDYgKzI5OTEzLDcgQEAKIAkJCQlBOEM0QTgw
NzA5RDU2MzI3MDAwM0FDOEQgLyogRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRTdD
MUExN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQwQUE5NjFDNjg0MjA4MDBBMjY1Q0MgLyogRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxMTk0NjU2MjQxODFFQTEwMDQ2
NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzEzQkNFMUMyMzVFM0JFNTAwRkMzOUU1IC8qIEVsZW1lbnRDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNUI3QTE3MTE3QzEwQUMwMDBFNEFBMEEgLyogRWxlbWVudERh
dGEuaCBpbiBIZWFkZXJzICovLApAQCAtMzA0MzEsNyArMzA0NDEsNiBAQAogCQkJCTA3RTlFMTJF
MThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OTQxNzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAvKiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRDhEMzA2RjIzQUQ0
RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNDQyRDcx
NjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3QUE2QjZDMTY2RDJDMTMwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3
IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzMw
MjcsNiArMzMwMzYsNyBAQAogCQkJCUFBNDc4QTdGMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzRUY0NDgx
OTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNzEwMjVFRDMxRjk5RjBDRTAwNEEyNTBDIC8qIFdlYkFuaW1hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzEwOEVFRTYyNDE4RUQ1QTAwNUMzREE3IC8qIFdlYkFu
aW1hdGlvblR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTMyNDQ1MTIwMTA5REE1MDBBRTdG
QjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg1MzY4
NDFGNEU0ODE0MDBGRTA5MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0
cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdl
YkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudElu
aXQuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5p
dC5oCmluZGV4IGVmNzE0Yzg2Y2ZjZDY2ZWNjM2M4MmYyNzg3ZWNhOGIwNzdmZGQ0ZTIuLmNiMjQz
MzgwMjc1MzNiNmRhYjBlZmEzMzQ5MGUwMDI4YjMwMDZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV2ZW50SW5pdC5oIgotI2luY2x1
ZGUgIldlYkFuaW1hdGlvblV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVz
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggNWU4NzRhNDNhNzNlY2I4YTFlN2Y2MWUwMGU0
OGMxOTcxNDE0ZDg1YS4uMDVlY2Y3ZDFhNmNmNDYzYzMxYTg5N2ZiYjQzNGRjZWEwZTUxZDQ3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCkBA
IC0xMDEsNTMgKzEwMSwyOSBAQCBPcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblRpbWVsaW5lOjpi
aW5kaW5nc0N1cnJlbnRUaW1lKCkKIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9u
V2FzQWRkZWRUb0VsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1l
bnQpCiB7Ci0gICAgWyZdICgpIC0+IEVsZW1lbnRUb0FuaW1hdGlvbnNNYXAmIHsKLSAgICAgICAg
aWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8Q1NTVHJhbnNpdGlv
bj4oYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9lbGVt
ZW50VG9DU1NUcmFuc2l0aW9uc01hcDsKLSAgICAgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4oYW5p
bWF0aW9uKSAmJiBkb3duY2FzdDxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikub3duaW5nRWxlbWVu
dCgpKQotICAgICAgICAgICAgcmV0dXJuIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcDsKLSAg
ICAgICAgcmV0dXJuIG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcDsKLSAgICB9KCkuZW5zdXJlKCZl
bGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBBbmltYXRpb25Db2xsZWN0aW9uIHsgfTsKLSAg
ICB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCZhbmltYXRpb24pOworICAgIGlmIChpczxDU1NUcmFu
c2l0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbiku
b3duaW5nRWxlbWVudCgpKQorICAgICAgICBlbGVtZW50LnRyYW5zaXRpb25zKCkuYWRkKCZhbmlt
YXRpb24pOworICAgIGVsc2UgaWYgKGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3du
Y2FzdDxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpKQorICAgICAgICBl
bGVtZW50LmNzc0FuaW1hdGlvbnMoKS5hZGQoJmFuaW1hdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBlbGVtZW50LndlYkFuaW1hdGlvbnMoKS5hZGQoJmFuaW1hdGlvbik7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9uJiB0cmFu
c2l0aW9uLCBFbGVtZW50JiBlbGVtZW50LCBIYXNoTWFwPEVsZW1lbnQqLCBBbmltYXRpb25UaW1l
bGluZTo6UHJvcGVydHlUb1RyYW5zaXRpb25NYXA+JiBtYXApCitzdGF0aWMgaW5saW5lIGJvb2wg
cmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiwgUHJv
cGVydHlUb1RyYW5zaXRpb25NYXAmIGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0eSkKIHsKLSAgICBh
dXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQoJmVsZW1lbnQpOwotICAgIGlmIChpdGVyYXRvciA9PSBt
YXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIGNzc1RyYW5zaXRp
b25zQnlQcm9wZXJ0eSA9IGl0ZXJhdG9yLT52YWx1ZTsKLQogICAgIGF1dG8gdHJhbnNpdGlvbkl0
ZXJhdG9yID0gY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LmZpbmQodHJhbnNpdGlvbi5wcm9wZXJ0
eSgpKTsKICAgICBpZiAodHJhbnNpdGlvbkl0ZXJhdG9yID09IGNzc1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eS5lbmQoKSB8fCB0cmFuc2l0aW9uSXRlcmF0b3ItPnZhbHVlICE9ICZ0cmFuc2l0aW9uKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkucmVt
b3ZlKHRyYW5zaXRpb25JdGVyYXRvcik7Ci0KLSAgICBpZiAoY3NzVHJhbnNpdGlvbnNCeVByb3Bl
cnR5LmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLnJlbW92ZSgmZWxlbWVudCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9y
RWxlbWVudChXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwgQW5pbWF0aW9uVGltZWxpbmU6OkVsZW1l
bnRUb0FuaW1hdGlvbnNNYXAmIG1hcCwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBhdXRvIGl0
ZXJhdG9yID0gbWFwLmZpbmQoJmVsZW1lbnQpOwotICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGFuaW1hdGlvbnMgPSBpdGVyYXRvci0+
dmFsdWU7Ci0gICAgYW5pbWF0aW9ucy5yZW1vdmUoJmFuaW1hdGlvbik7Ci0gICAgaWYgKCFhbmlt
YXRpb25zLnNpemUoKSkKLSAgICAgICAgbWFwLnJlbW92ZShpdGVyYXRvcik7Ci19Ci0KIHZvaWQg
QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudChXZWJBbmlt
YXRpb24mIGFuaW1hdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZW1vdmVBbmltYXRp
b25Gcm9tTWFwRm9yRWxlbWVudChhbmltYXRpb24sIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNN
YXAsIGVsZW1lbnQpOwotICAgIHJlbW92ZUFuaW1hdGlvbkZyb21NYXBGb3JFbGVtZW50KGFuaW1h
dGlvbiwgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLCBlbGVtZW50KTsKLSAgICByZW1vdmVB
bmltYXRpb25Gcm9tTWFwRm9yRWxlbWVudChhbmltYXRpb24sIG1fZWxlbWVudFRvQW5pbWF0aW9u
c01hcCwgZWxlbWVudCk7CisgICAgZWxlbWVudC50cmFuc2l0aW9ucygpLnJlbW92ZSgmYW5pbWF0
aW9uKTsKKyAgICBlbGVtZW50LmNzc0FuaW1hdGlvbnMoKS5yZW1vdmUoJmFuaW1hdGlvbik7Cisg
ICAgZWxlbWVudC53ZWJBbmltYXRpb25zKCkucmVtb3ZlKCZhbmltYXRpb24pOwogCiAgICAgLy8g
Tm93LCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBDU1MgVHJhbnNpdGlvbiwgd2UgcmVtb3ZlIGl0
IGZyb20gdGhlIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg
bWFwLgogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gdGhpcyBmb3IgQ1NTIEFuaW1hdGlvbnMg
YmVjYXVzZSB0aGVpciB0aW1pbmcgY2FuIGJlIHNldCB2aWEgQ1NTIHRvIGVuZCwgd2hpY2ggd291
bGQgY2F1c2UgdGhpcwpAQCAtMTYzLDggKzEzOSw4IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJB
CiAKICAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSkgewogICAgICAgICBhdXRv
JiB0cmFuc2l0aW9uID0gZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKTsKLSAgICAg
ICAgaWYgKCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVtZW50LCBt
X2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlEKSkKLSAgICAgICAg
ICAgIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIGVsZW1lbnQsIG1fZWxl
bWVudFRvQ29tcGxldGVkQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRCk7CisgICAgICAgIGlm
ICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5ydW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5KCkpKQorICAgICAgICAgICAgcmVtb3ZlQ1NTVHJhbnNpdGlv
bkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5jb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0
eSgpKTsKICAgICB9CiB9CiAKQEAgLTE3OCwxOCArMTU0LDEyIEBAIFZlY3RvcjxSZWZQdHI8V2Vi
QW5pbWF0aW9uPj4gQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1l
bnQmIGVsCiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRp
b24oKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9lbGVtZW50VG9D
U1NUcmFuc2l0aW9uc01hcC5jb250YWlucygmZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGNzc1RyYW5zaXRpb25zID0gbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5nZXQo
JmVsZW1lbnQpOwotICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmRSYW5nZShjc3NUcmFuc2l0
aW9ucy5iZWdpbigpLCBjc3NUcmFuc2l0aW9ucy5lbmQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5jb250YWlucygmZWxlbWVudCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBtX2VsZW1lbnRUb0NTU0FuaW1h
dGlvbnNNYXAuZ2V0KCZlbGVtZW50KTsKLSAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFu
Z2UoY3NzQW5pbWF0aW9ucy5iZWdpbigpLCBjc3NBbmltYXRpb25zLmVuZCgpKTsKLSAgICAgICAg
fQotICAgICAgICBpZiAobV9lbGVtZW50VG9BbmltYXRpb25zTWFwLmNvbnRhaW5zKCZlbGVtZW50
KSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgd2ViQW5pbWF0aW9ucyA9IG1fZWxlbWVudFRv
QW5pbWF0aW9uc01hcC5nZXQoJmVsZW1lbnQpOwotICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBl
bmRSYW5nZSh3ZWJBbmltYXRpb25zLmJlZ2luKCksIHdlYkFuaW1hdGlvbnMuZW5kKCkpOwotICAg
ICAgICB9CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zID0gZWxlbWVudC50cmFu
c2l0aW9ucygpOworICAgICAgICBhbmltYXRpb25zLmFwcGVuZFJhbmdlKGNzc1RyYW5zaXRpb25z
LmJlZ2luKCksIGNzc1RyYW5zaXRpb25zLmVuZCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgY3Nz
QW5pbWF0aW9ucyA9IGVsZW1lbnQuY3NzQW5pbWF0aW9ucygpOworICAgICAgICBhbmltYXRpb25z
LmFwcGVuZFJhbmdlKGNzc0FuaW1hdGlvbnMuYmVnaW4oKSwgY3NzQW5pbWF0aW9ucy5lbmQoKSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIHdlYkFuaW1hdGlvbnMgPSBlbGVtZW50LndlYkFuaW1hdGlv
bnMoKTsKKyAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmRSYW5nZSh3ZWJBbmltYXRpb25zLmJlZ2lu
KCksIHdlYkFuaW1hdGlvbnMuZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiBhbmltYXRpb25z
OwpAQCAtMTk3LDEzICsxNjcsNyBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEFuaW1h
dGlvblRpbWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbAogCiB2b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoRWxlbWVu
dCYgZWxlbWVudCwgQ1NTQW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCiB7Ci0gICAgYXV0byBpdGVy
YXRvciA9IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5maW5kKCZl
bGVtZW50KTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3Jl
YXRlZEJ5TWFya3VwTWFwLmVuZCgpKSB7Ci0gICAgICAgIGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBp
dGVyYXRvci0+dmFsdWU7Ci0gICAgICAgIGNzc0FuaW1hdGlvbnMucmVtb3ZlKCZjc3NBbmltYXRp
b24pOwotICAgICAgICBpZiAoIWNzc0FuaW1hdGlvbnMuc2l6ZSgpKQotICAgICAgICAgICAgbV9l
bGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwLnJlbW92ZShpdGVyYXRvcik7
Ci0gICAgfQorICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpLnJlbW92ZSgm
Y3NzQW5pbWF0aW9uKTsKIAogICAgIGlmICghZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI2LDEwICsxOTAsMTAgQEAgdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKEVsZW1lbnQmIGVsZW1lbnQs
IENTU0EKIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6d2lsbERlc3Ryb3lSZW5kZXJlckZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBmb3IgKGF1dG8mIGNzc1RyYW5zaXRpb24g
OiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwLmdldCgmZWxlbWVudCkpCisgICAgZm9yIChh
dXRvJiBjc3NUcmFuc2l0aW9uIDogZWxlbWVudC50cmFuc2l0aW9ucygpKQogICAgICAgICBjc3NU
cmFuc2l0aW9uLT5jYW5jZWwoV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKIAotICAgIGZv
ciAoYXV0byYgY3NzQW5pbWF0aW9uIDogbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLmdldCgm
ZWxlbWVudCkpIHsKKyAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IGVsZW1lbnQuY3NzQW5p
bWF0aW9ucygpKSB7CiAgICAgICAgIGlmIChpczxDU1NBbmltYXRpb24+KGNzc0FuaW1hdGlvbikp
CiAgICAgICAgICAgICByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoZWxlbWVudCwg
ZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqY3NzQW5pbWF0aW9uKSk7CiAgICAgICAgIGNzc0FuaW1h
dGlvbi0+Y2FuY2VsKFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Olllcyk7CkBAIC0yMzksMTIgKzIw
Myw2IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxEZXN0cm95UmVuZGVyZXJGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjplbGVtZW50V2Fz
UmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQogewogICAgIHdpbGxEZXN0cm95UmVuZGVyZXJGb3JF
bGVtZW50KGVsZW1lbnQpOwotCi0gICAgbV9lbGVtZW50VG9BbmltYXRpb25zTWFwLnJlbW92ZSgm
ZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLnJlbW92ZSgmZWxlbWVu
dCk7Ci0gICAgbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcC5yZW1vdmUoJmVsZW1lbnQpOwot
ICAgIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQucmVtb3Zl
KCZlbGVtZW50KTsKLSAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBN
YXAucmVtb3ZlKCZlbGVtZW50KTsKIH0KIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6cmVtb3Zl
QW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKQEAgLTI2MSw5ICsyMTksOSBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQpCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERlY2xhcmF0
aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBmb3IgKGF1
dG8mIGNzc1RyYW5zaXRpb24gOiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwLmdldCgmZWxl
bWVudCkpCisgICAgZm9yIChhdXRvJiBjc3NUcmFuc2l0aW9uIDogZWxlbWVudC50cmFuc2l0aW9u
cygpKQogICAgICAgICBjc3NUcmFuc2l0aW9uLT5jYW5jZWwoKTsKLSAgICBmb3IgKGF1dG8mIGNz
c0FuaW1hdGlvbiA6IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcC5nZXQoJmVsZW1lbnQpKSB7
CisgICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBlbGVtZW50LmNzc0FuaW1hdGlvbnMoKSkg
ewogICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihjc3NBbmltYXRpb24pKQogICAgICAgICAg
ICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKGVsZW1lbnQsIGRvd25jYXN0PENT
U0FuaW1hdGlvbj4oKmNzc0FuaW1hdGlvbikpOwogICAgICAgICBjc3NBbmltYXRpb24tPmNhbmNl
bCgpOwpAQCAtMjkzLDEzICsyNTEsOCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogCiAgICAg
Ly8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25l
IiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlvbnMgYW5kIGRpc3JlZ2FyZCBu
ZXcgb25lcy4KICAgICBpZiAoY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+ZGlzcGxheSgp
ICE9IERpc3BsYXlUeXBlOjpOb25lICYmIGFmdGVyQ2hhbmdlU3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpOb25lKSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VsZW1lbnRUb0NT
U0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAuZmluZCgmZWxlbWVudCk7Ci0gICAgICAgIGlm
IChpdGVyYXRvciAhPSBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAu
ZW5kKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGNzc0FuaW1hdGlvbnMgPSBpdGVyYXRvci0+dmFs
dWU7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IGNzc0FuaW1hdGlvbnMp
Ci0gICAgICAgICAgICAgICAgY3NzQW5pbWF0aW9uLT5jYW5jZWxGcm9tU3R5bGUoKTsKLSAgICAg
ICAgICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUo
aXRlcmF0b3IpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDog
ZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkpCisgICAgICAgICAgICBjc3NBbmlt
YXRpb24tPmNhbmNlbEZyb21TdHlsZSgpOwogICAgICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNl
dENTU0FuaW1hdGlvbkxpc3QobnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
MTAsOSArMjYzLDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9u
c0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmUKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBuZXdBbmltYXRpb25zOwotICAgIGF1dG8mIHBy
ZXZpb3VzQW5pbWF0aW9ucyA9IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1
cE1hcC5lbnN1cmUoJmVsZW1lbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIENTU0FuaW1hdGlvbkNv
bGxlY3Rpb24geyB9OwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBwcmV2aW91
c0FuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKIAogICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtYW5pbWF0aW9ucy0xLyNhbmltYXRpb25zCiAg
ICAgLy8gVGhlIHNhbWUgQGtleWZyYW1lcyBydWxlIG5hbWUgbWF5IGJlIHJlcGVhdGVkIHdpdGhp
biBhbiBhbmltYXRpb24tbmFtZS4gQ2hhbmdlcyB0byB0aGUgYW5pbWF0aW9uLW5hbWUgdXBkYXRl
IGV4aXN0aW5nCkBAIC0zNTYsMTAgKzMwNyw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobmV3QW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUoJmVs
ZW1lbnQpOwotICAgIGVsc2UKLSAgICAgICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwTWFwLnNldCgmZWxlbWVudCwgV1RGTW92ZShuZXdBbmltYXRpb25zKSk7CisgICAg
ZWxlbWVudC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUobmV3QW5pbWF0aW9u
cykpOwogCiAgICAga2V5ZnJhbWVFZmZlY3RTdGFjay5zZXRDU1NBbmltYXRpb25MaXN0KGN1cnJl
bnRBbmltYXRpb25MaXN0KTsKIH0KQEAgLTM3Nyw3ICszMjUsNyBAQCBzdGF0aWMgS2V5ZnJhbWVF
ZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1l
bnQsIENTUwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgYm9vbCBwcm9wZXJ0eUlu
U3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBBbmltYXRpb25UaW1lbGluZTo6UHJvcGVydHlU
b1RyYW5zaXRpb25NYXAmIHRyYW5zaXRpb25zKQorc3RhdGljIGJvb2wgcHJvcGVydHlJblN0eWxl
TWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIHRyYW5zaXRp
b25zKQogewogICAgIGlmIChhdXRvKiB0cmFuc2l0aW9uID0gdHJhbnNpdGlvbnMuZ2V0KHByb3Bl
cnR5KSkgewogICAgICAgICBpZiAoQ1NTUHJvcGVydHlBbmltYXRpb246OnByb3BlcnRpZXNFcXVh
bChwcm9wZXJ0eSwgJnN0eWxlLCAmdHJhbnNpdGlvbi0+dGFyZ2V0U3R5bGUoKSkpCkBAIC00MTAs
MTMgKzM1OCw2IEBAIHN0YXRpYyBib29sIHRyYW5zaXRpb25NYXRjaGVzUHJvcGVydHkoY29uc3Qg
QW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBDU1NQcm9wZXJ0eUlECiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUFuaW1hdGlvblRpbWVsaW5lOjpQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgQW5pbWF0aW9u
VGltZWxpbmU6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoRWxlbWVudCYgZWxl
bWVudCkKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NT
UHJvcGVydHlJRC5lbnN1cmUoJmVsZW1lbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwIHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KIHN0YXRp
YyB2b2lkIGNvbXBpbGVUcmFuc2l0aW9uUHJvcGVydGllc0luU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiB0cmFuc2l0aW9uUHJvcGVydGllcywg
Ym9vbCYgdHJhbnNpdGlvblByb3BlcnRpZXNDb250YWluQWxsKQogewogICAgIGlmICh0cmFuc2l0
aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpCkBAIC00NDQsNyArMzg1LDcgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIEhhc2hTZXQKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNT
U1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1By
b3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBBbmltYXRpb25UaW1lbGluZTo6UHJvcGVy
dHlUb1RyYW5zaXRpb25NYXAmIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHksIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHksIGNvbnN0IE1v
bm90b25pY1RpbWUgZ2VuZXJhdGlvblRpbWUpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZW50LCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgUHJvcGVydHlUb1RyYW5zaXRpb25N
YXAmIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHksIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFw
JiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHksIGNvbnN0IE1vbm90b25pY1RpbWUgZ2Vu
ZXJhdGlvblRpbWUpCiB7CiAgICAgY29uc3QgQW5pbWF0aW9uKiBtYXRjaGluZ0JhY2tpbmdBbmlt
YXRpb24gPSBudWxscHRyOwogICAgIGlmIChhdXRvKiB0cmFuc2l0aW9ucyA9IGFmdGVyQ2hhbmdl
U3R5bGUudHJhbnNpdGlvbnMoKSkgewpAQCAtNTc0LDcgKzUxNSw3IEBAIHZvaWQgQW5pbWF0aW9u
VGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1l
bnQmIGVsZW1lCiAgICAgICAgICAgICBhdXRvIGRlbGF5ID0gbWF0Y2hpbmdCYWNraW5nQW5pbWF0
aW9uLT5kZWxheSgpIDwgMCA/IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kZWxh
eSgpKSAqIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgOiBTZWNvbmRzKG1hdGNoaW5nQmFja2lu
Z0FuaW1hdGlvbi0+ZGVsYXkoKSk7CiAgICAgICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vjb25k
cyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9uKCkpICogcmV2ZXJzaW5nU2hvcnRl
bmluZ0ZhY3RvcjsKIAotICAgICAgICAgICAgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eShlbGVtZW50KS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50
LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZw
cmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUs
IGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdT
aG9ydGVuaW5nRmFjdG9yKSk7CisgICAgICAgICAgICBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9u
c0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50
LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZw
cmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUs
IGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdT
aG9ydGVuaW5nRmFjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyA0LiBP
dGhlcndpc2UsIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0aGUgcnVubmluZyB0cmFuc2l0
aW9uCiAgICAgICAgICAgICBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPmNhbmNlbEZyb21T
dHlsZSgpOwpAQCAtNTkwLDcgKzUzMSw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAg
ICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24t
PmR1cmF0aW9uKCkpOwogICAgICAgICAgICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0
eWxlID0gY3VycmVudFN0eWxlOwogICAgICAgICAgICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5n
RmFjdG9yID0gMTsKLSAgICAgICAgICAgIGVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoZWxlbWVudCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwg
cHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBk
ZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOworICAgICAgICAgICAgZWxlbWVudC5ydW5uaW5nVHJhbnNpdGlvbnNC
eVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwg
cHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJl
dmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBk
ZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTk5LDIxICs1NDAsMTcg
QEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFIKIHsKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVu
dCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFs
bCBvZiBpdHMgdHJhbnNpdGlvbnMgYW5kIGRpc3JlZ2FyZCBuZXcgb25lcy4KICAgICBpZiAoY3Vy
cmVudFN0eWxlLmhhc1RyYW5zaXRpb25zKCkgJiYgY3VycmVudFN0eWxlLmRpc3BsYXkoKSAhPSBE
aXNwbGF5VHlwZTo6Tm9uZSAmJiBhZnRlckNoYW5nZVN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Tm9uZSkgewotICAgICAgICBpZiAobV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlv
bkJ5Q1NTUHJvcGVydHlJRC5jb250YWlucygmZWxlbWVudCkpIHsKLSAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtIDogbV9lbGVt
ZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC50YWtlKCZlbGVtZW50KSkK
LSAgICAgICAgICAgICAgICBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0udmFs
dWUtPmNhbmNlbEZyb21TdHlsZSgpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gcnVubmluZ1Ry
YW5zaXRpb25zID0gZWxlbWVudC5ydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVt
IDogcnVubmluZ1RyYW5zaXRpb25zKQorICAgICAgICAgICAgY3NzVHJhbnNpdGlvbnNCeUNTU1By
b3BlcnR5SURNYXBJdGVtLnZhbHVlLT5jYW5jZWxGcm9tU3R5bGUoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIC8vIFNlY3Rpb24gMyAiU3RhcnRpbmcgb2YgdHJhbnNpdGlvbnMiIGZy
b20gdGhlIENTUyBUcmFuc2l0aW9ucyBMZXZlbCAxIHNwZWNpZmljYXRpb24uCiAgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2l0aW9ucy0xLyNzdGFydGluZwogCi0gICAg
YXV0byYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSA9IGVuc3VyZVJ1bm5pbmdUcmFuc2l0
aW9uc0J5UHJvcGVydHkoZWxlbWVudCk7Ci0KLSAgICBhdXRvJiBjb21wbGV0ZWRUcmFuc2l0aW9u
c0J5UHJvcGVydHkgPSBtX2VsZW1lbnRUb0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3Bl
cnR5SUQuZW5zdXJlKCZlbGVtZW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJv
cGVydHkoKTsKKyAgICBhdXRvJiBjb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBlbGVt
ZW50LmNvbXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCk7CiAKICAgICBhdXRvIGdlbmVyYXRp
b25UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKaW5kZXggMmM4ZDIzMGNhNDkyNjhkMWRiMDZiY2EzOWNj
NDkwNTAzMzk3YWM5Yy4uZmYwZjYxMWM2NDdkYWZmZjliZDgyMzgwYjc0ZWRlYzQwYmY5YjlkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTc1
LDEwICs3NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVt
ZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9u
c0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKIAotICAgIHVzaW5nIEFuaW1hdGlv
bkNvbGxlY3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj47Ci0gICAgdXNp
bmcgRWxlbWVudFRvQW5pbWF0aW9uc01hcCA9IEhhc2hNYXA8RWxlbWVudCosIEFuaW1hdGlvbkNv
bGxlY3Rpb24+OwotICAgIHVzaW5nIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwID0gSGFzaE1hcDxD
U1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVHJhbnNpdGlvbj4+OwotCiAgICAgdmlydHVhbCB+QW5p
bWF0aW9uVGltZWxpbmUoKTsKIAogcHJvdGVjdGVkOgpAQCAtODYsMjMgKzgyLDEyIEBAIHByb3Rl
Y3RlZDoKIAogICAgIFZlY3RvcjxXZWFrUHRyPFdlYkFuaW1hdGlvbj4+IG1fYWxsQW5pbWF0aW9u
czsKICAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fYW5pbWF0aW9uczsKLSAgICBIYXNoTWFwPEVs
ZW1lbnQqLCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcD4gbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NU
cmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlEOwogCiBwcml2YXRlOgotICAgIHVzaW5nIENTU0FuaW1h
dGlvbkNvbGxlY3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQdHI8Q1NTQW5pbWF0aW9uPj47Ci0gICAg
dXNpbmcgRWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcCA9IEhhc2hNYXA8RWxlbWVudCosIENTU0Fu
aW1hdGlvbkNvbGxlY3Rpb24+OwotCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQb3NpdGlvbihXZWJB
bmltYXRpb24mKTsKLSAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eShFbGVtZW50Jik7CiAgICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0
aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgY29uc3Qg
UmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdl
U3R5bGUsIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAm
LCBjb25zdCBNb25vdG9uaWNUaW1lKTsKICAgICB2b2lkIHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0
ZWRCeU1hcmt1cChFbGVtZW50JiwgQ1NTQW5pbWF0aW9uJik7CiAKLSAgICBFbGVtZW50VG9Bbmlt
YXRpb25zTWFwIG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcDsKLSAgICBFbGVtZW50VG9BbmltYXRp
b25zTWFwIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcDsKLSAgICBFbGVtZW50VG9BbmltYXRp
b25zTWFwIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXA7Ci0gICAgRWxlbWVudFRvQ1NTQW5p
bWF0aW9uc01hcCBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXA7Ci0g
ICAgSGFzaE1hcDxFbGVtZW50KiwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXA+IG1fZWxlbWVudFRv
UnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQ7Ci0KICAgICBNYXJrYWJsZTxTZWNv
bmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Db21wdXRlZEVmZmVjdFRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmgKaW5kZXggNTdh
YWJhMWVhNTM4NTAwNmY1NjY2NDNmMGUxMjE4NGQ3NDRjZjhhMy4uOTE5ZmFkZjFjZDQxZjdhOTk4
ZTMzOTE3ZjZhYjgwZTY4N2IzOWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NvbXB1dGVkRWZmZWN0VGltaW5nLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFu
aW1hdGlvbkVmZmVjdFBoYXNlLmgiCiAjaW5jbHVkZSAiRWZmZWN0VGltaW5nLmgiCi0jaW5jbHVk
ZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggYTMwZDNmMGVlOTVlMWU5YmVhNDgxMmIwNzFlNTcx
OTQ3MDMzNDJlNS4uZjJmNTVmNDBkZjcwODU1Y2E3Y2RiZjRhZWU2ODcyNGQ0MjQ5MzE1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtNTQ2
LDExICs1NDYsOCBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21wbGV0
ZShSZWZQdHI8Q1NTVHJhbnNpdGlvbj4gdHJhbnNpdGlvbikKICAgICBBU1NFUlQodHJhbnNpdGlv
bik7CiAgICAgcmVtb3ZlQW5pbWF0aW9uKCp0cmFuc2l0aW9uKTsKICAgICBpZiAoaXM8S2V5ZnJh
bWVFZmZlY3Q+KHRyYW5zaXRpb24tPmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFy
Z2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KHRyYW5zaXRpb24tPmVmZmVjdCgpKS0+dGFy
Z2V0KCkpIHsKLSAgICAgICAgICAgIG1fZWxlbWVudFRvQ29tcGxldGVkQ1NTVHJhbnNpdGlvbkJ5
Q1NTUHJvcGVydHlJRC5lbnN1cmUodGFyZ2V0LCBbXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEhhc2hNYXA8Q1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1RyYW5zaXRpb24+PiB7IH07Ci0gICAg
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRy
YW5zaXRpb24pOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiB0YXJnZXQgPSBkb3duY2Fz
dDxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+ZWZmZWN0KCkpLT50YXJnZXQoKSkKKyAgICAg
ICAgICAgIHRhcmdldC0+Y29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkoKS5zZXQodHJhbnNp
dGlvbi0+cHJvcGVydHkoKSwgdHJhbnNpdGlvbik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4M2ExM2UwODZmZDFlNzU1ZDQ1MDQ1MmYzODI4OTA0MWVhZjA2OGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YS5oIgorCisjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6RWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhKCkKK3sKK30KKworRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjp+RWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhKCkKK3sKK30KKworS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhOjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkKK3sKKyAg
ICBpZiAoIW1fa2V5ZnJhbWVFZmZlY3RTdGFjaykKKyAgICAgICAgbV9rZXlmcmFtZUVmZmVjdFN0
YWNrID0gbWFrZVVuaXF1ZTxLZXlmcmFtZUVmZmVjdFN0YWNrPigpOworICAgIHJldHVybiAqbV9r
ZXlmcmFtZUVmZmVjdFN0YWNrLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTJkYzY0NDZjNjQ4MjQ0NDlkMzE0YWJiNGM5MDhiMWE4ZWU5ODM0Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJLZXlmcmFtZUVm
ZmVjdFN0YWNrLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDU1NBbmltYXRpb247CitjbGFzcyBDU1NUcmFuc2l0aW9uOwor
Y2xhc3MgV2ViQW5pbWF0aW9uOworCitjbGFzcyBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEVsZW1l
bnRBbmltYXRpb25SYXJlRGF0YSgpOworICAgIH5FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKTsK
KworICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSB7IHJldHVy
biBtX2tleWZyYW1lRWZmZWN0U3RhY2suZ2V0KCk7IH0KKyAgICBLZXlmcmFtZUVmZmVjdFN0YWNr
JiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisKKyAgICBBbmltYXRpb25Db2xsZWN0aW9u
JiB3ZWJBbmltYXRpb25zKCkgeyByZXR1cm4gbV93ZWJBbmltYXRpb25zOyB9CisgICAgQW5pbWF0
aW9uQ29sbGVjdGlvbiYgY3NzQW5pbWF0aW9ucygpIHsgcmV0dXJuIG1fY3NzQW5pbWF0aW9uczsg
fQorICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24mIHRyYW5zaXRpb25zKCkgeyByZXR1cm4gbV90cmFu
c2l0aW9uczsgfQorICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVk
QnlNYXJrdXAoKSB7IHJldHVybiBtX2FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXA7IH0KKyAgICB2
b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYm
IGFuaW1hdGlvbnMpIHsgbV9hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwID0gV1RGTW92ZShhbmlt
YXRpb25zKTsgfQorICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBjb21wbGV0ZWRUcmFuc2l0
aW9uQnlQcm9wZXJ0eSgpIHsgcmV0dXJuIG1fY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHk7
IH0KKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eSgpIHsgcmV0dXJuIG1fcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eTsgfQorCitwcml2
YXRlOgorCisgICAgc3RkOjp1bmlxdWVfcHRyPEtleWZyYW1lRWZmZWN0U3RhY2s+IG1fa2V5ZnJh
bWVFZmZlY3RTdGFjazsKKyAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fd2ViQW5pbWF0aW9uczsK
KyAgICBBbmltYXRpb25Db2xsZWN0aW9uIG1fY3NzQW5pbWF0aW9uczsKKyAgICBBbmltYXRpb25D
b2xsZWN0aW9uIG1fdHJhbnNpdGlvbnM7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBtX2Fu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXA7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9j
b21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1h
cCBtX3J1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5kZXgg
NTdhMTc3NDlkMDgzNDBlOTdhNDBkYTY5MDlmYTQ1MDEyMjYwZjJmNC4uYmU4YjZkOWY0YzlkODcy
ZThiMDk1MzIxMzM0NWVkZTM0OTdkZmZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJLZXlmcmFtZUxpc3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgotI2luY2x1ZGUgIldlYkFuaW1hdGlvblV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1h
dGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vT3B0aW9uYWxFZmZlY3RUaW1p
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oCmlu
ZGV4IDE2NjMyZDk0MjNkN2I2MDQ4Yjc4MjgzMTM5ODk5NGZmZWE2NDIxMjQuLjc2ZDA5YmFiZmRh
MmU0ZDU1MWFiMzg4NmRjNWNhMjNhMmI1ODY1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9PcHRpb25hbEVmZmVjdFRpbWluZy5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNs
dWRlICJGaWxsTW9kZS5oIgogI2luY2x1ZGUgIlBsYXliYWNrRGlyZWN0aW9uLmgiCi0jaW5jbHVk
ZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMu
aCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5kZXggZjljMzkz
MWVlOTZlMTU4ZDQwNWI0NzM2YjVhNWI2ODc4OTBkOWJiMy4uMTA4ZDNkOWQwMWVkNzgzM2E5YzJl
NGM0ZDYyYWZjOWI2Zjg1ZWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b24uaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIldlYkFu
aW1hdGlvblV0aWxpdGllcy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9X
ZWJBbmltYXRpb25UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
blR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY5NTE4MjJkNTU1M2Y4NGUzODA1NDdkYTUwMGMwMDgxZDFj
ZDJjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb25UeXBlcy5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1ZhbHVlLmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBbmltYXRpb25MaXN0OworY2xhc3MgQ1NTQW5pbWF0aW9uOworY2xhc3MgQ1NTVHJhbnNpdGlv
bjsKK2NsYXNzIFdlYkFuaW1hdGlvbjsKKworc3RydWN0IFdlYkFuaW1hdGlvbnNNYXJrYWJsZURv
dWJsZVRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGRvdWJsZSB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OmlzbmFuKHZhbHVlKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIH0KK307CisK
K3VzaW5nIE1hcmthYmxlRG91YmxlID0gTWFya2FibGU8ZG91YmxlLCBXZWJBbmltYXRpb25zTWFy
a2FibGVEb3VibGVUcmFpdHM+OworCit1c2luZyBBbmltYXRpb25Db2xsZWN0aW9uID0gTGlzdEhh
c2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+OwordXNpbmcgUHJvcGVydHlUb1RyYW5zaXRpb25N
YXAgPSBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIFJlZlB0cjxDU1NUcmFuc2l0aW9uPj47Cit1c2lu
ZyBDU1NBbmltYXRpb25Db2xsZWN0aW9uID0gTGlzdEhhc2hTZXQ8UmVmUHRyPENTU0FuaW1hdGlv
bj4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oCmluZGV4IDJiNGIzZTMyZWMzZWI3MzAw
MDI2YWY3MjJkODgwOTNjMTUzYzc3YjguLmZiOTEzNzAxMGFlOWE2YTMzZTMxODdjODFhODY0ZmFj
YzNiMjkyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b25VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
VXRpbGl0aWVzLmgKQEAgLTUwLDIwICs1MCw2IEBAIGlubGluZSBkb3VibGUgc2Vjb25kc1RvV2Vi
QW5pbWF0aW9uc0FQSVRpbWUoY29uc3QgU2Vjb25kcyB0aW1lKQogCiBjb25zdCBhdXRvIHRpbWVF
cHNpbG9uID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygwLjAwMSk7CiAKLXN0cnVjdCBXZWJB
bmltYXRpb25zTWFya2FibGVEb3VibGVUcmFpdHMgewotICAgIHN0YXRpYyBib29sIGlzRW1wdHlW
YWx1ZShkb3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjppc25hbih2YWx1
ZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgZW1wdHlWYWx1ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKTsKLSAgICB9Ci19OwotCi11c2luZyBNYXJrYWJsZURvdWJsZSA9IE1hcmthYmxlPGRvdWJs
ZSwgV2ViQW5pbWF0aW9uc01hcmthYmxlRG91YmxlVHJhaXRzPjsKLQogYm9vbCBjb21wYXJlQW5p
bWF0aW9uc0J5Q29tcG9zaXRlT3JkZXIoV2ViQW5pbWF0aW9uJiwgV2ViQW5pbWF0aW9uJiwgY29u
c3QgQW5pbWF0aW9uTGlzdCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggYjVmYzkxMDA5MmE0YjM4NmY4MGM1MjU4NGI0YTNjYjc1OGEzNzUyMi4u
YTBjODJjMjJlNjE5ZjM0ZDA3MzZiOTM4Y2IxNTI2ODZlMzZiMjExZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50U2hhcmVkT2JqZWN0
UG9vbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKICNpbmNsdWRlICJFZGl0aW5n
LmgiCisjaW5jbHVkZSAiRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFJhcmVEYXRhLmgiCiAjaW5jbHVkZSAi
RXZlbnREaXNwYXRjaGVyLmgiCkBAIC0zNzM4LDI2ICszNzM5LDM1IEBAIEludGVyc2VjdGlvbk9i
c2VydmVyRGF0YSogRWxlbWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKQog
CiAjZW5kaWYKIAorRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBFbGVtZW50OjphbmltYXRpb25S
YXJlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFy
ZURhdGEoKS0+ZWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKCkgOiBudWxscHRyOworfQorCitFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEmIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkK
K3sKKyAgICByZXR1cm4gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuZW5zdXJlQW5pbWF0aW9uUmFy
ZURhdGEoKTsKK30KKwogS2V5ZnJhbWVFZmZlY3RTdGFjayogRWxlbWVudDo6a2V5ZnJhbWVFZmZl
Y3RTdGFjaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFy
ZURhdGEoKS0+a2V5ZnJhbWVFZmZlY3RTdGFjaygpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byog
YW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgICAgIHJldHVybiBhbmlt
YXRpb25EYXRhLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIEtleWZyYW1lRWZmZWN0U3RhY2smIEVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZmZWN0U3Rh
Y2soKQogewotICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Ci0g
ICAgaWYgKCFyYXJlRGF0YS5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCi0gICAgICAgIHJhcmVEYXRh
LnNldEtleWZyYW1lRWZmZWN0U3RhY2sobWFrZVVuaXF1ZTxLZXlmcmFtZUVmZmVjdFN0YWNrPigp
KTsKLSAgICByZXR1cm4gKnJhcmVEYXRhLmtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICByZXR1
cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
CiB9CiAKIGJvb2wgRWxlbWVudDo6aGFzS2V5ZnJhbWVFZmZlY3RzKCkgY29uc3QKIHsKLSAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIGtl
eWZyYW1lRWZmZWN0U3RhY2sgPSBlbGVtZW50UmFyZURhdGEoKS0+a2V5ZnJhbWVFZmZlY3RTdGFj
aygpOwotICAgIHJldHVybiBrZXlmcmFtZUVmZmVjdFN0YWNrICYmIGtleWZyYW1lRWZmZWN0U3Rh
Y2stPmhhc0VmZmVjdHMoKTsKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlv
blJhcmVEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBh
bmltYXRpb25EYXRhLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCisgICAgICAgICAgICByZXR1cm4g
a2V5ZnJhbWVFZmZlY3RTdGFjay0+aGFzRWZmZWN0cygpOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJh
bWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKQEAgLTM3NzgsNiArMzc4OCw0MSBA
QCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0
cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAKK0FuaW1h
dGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OndlYkFuaW1hdGlvbnMoKQoreworICAgIHJldHVybiBl
bnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLndlYkFuaW1hdGlvbnMoKTsKK30KKworQW5pbWF0aW9u
Q29sbGVjdGlvbiYgRWxlbWVudDo6Y3NzQW5pbWF0aW9ucygpCit7CisgICAgcmV0dXJuIGVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKCkuY3NzQW5pbWF0aW9ucygpOworfQorCitBbmltYXRpb25Db2xs
ZWN0aW9uJiBFbGVtZW50Ojp0cmFuc2l0aW9ucygpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1h
dGlvblJhcmVEYXRhKCkudHJhbnNpdGlvbnMoKTsKK30KKworQ1NTQW5pbWF0aW9uQ29sbGVjdGlv
biYgRWxlbWVudDo6YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpCit7CisgICAgcmV0dXJuIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKCkuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpOworfQor
Cit2b2lkIEVsZW1lbnQ6OnNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9u
Q29sbGVjdGlvbiYmIGFuaW1hdGlvbnMpCit7CisgICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEo
KS5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOworfQor
CitQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgRWxlbWVudDo6Y29tcGxldGVkVHJhbnNpdGlvbkJ5
UHJvcGVydHkoKQoreworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmNvbXBs
ZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCk7Cit9CisKK1Byb3BlcnR5VG9UcmFuc2l0aW9uTWFw
JiBFbGVtZW50OjpydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkKK3sKKyAgICByZXR1cm4g
ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5ydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7
Cit9CisKICNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQogCiB2b2lkIEVsZW1lbnQ6OmRpc2Nv
bm5lY3RGcm9tUmVzaXplT2JzZXJ2ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZmZDU5OTNl
NmJkZmUyZDIyMjdhYmQ5MzA1MmMyMGRlZmM4NzI4OTcuLjFjNmJiMTIxY2IzYjlhZjFiNjA3M2Fm
MzhjNDhhZmEyNzY5MzVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIlNoYWRvd1Jvb3RNb2RlLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2tPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU3R5bGVDaGFuZ2UuaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25U
eXBlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIERhdGFzZXRET01TdHJpbmdNYXA7CiBj
bGFzcyBET01SZWN0OwogY2xhc3MgRE9NUmVjdExpc3Q7CiBjbGFzcyBET01Ub2tlbkxpc3Q7Citj
bGFzcyBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE7CiBjbGFzcyBFbGVtZW50UmFyZURhdGE7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxEb2N1bWVudDsKQEAgLTQ5MSw2ICs0OTMsMTQgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzS2V5ZnJhbWVFZmZlY3RzKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0
PEFuaW1hdGlvbkltcGFjdD4gYXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmKTsKIAor
ICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24mIHdlYkFuaW1hdGlvbnMoKTsKKyAgICBBbmltYXRpb25D
b2xsZWN0aW9uJiBjc3NBbmltYXRpb25zKCk7CisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgdHJh
bnNpdGlvbnMoKTsKKyAgICBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiBhbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwKCk7CisgICAgdm9pZCBzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKENTU0Fu
aW1hdGlvbkNvbGxlY3Rpb24mJik7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIGNvbXBs
ZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCk7CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAm
IHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
KSBjb25zdDsKICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCk7CkBA
IC03MDUsNiArNzE1LDkgQEAgcHJpdmF0ZToKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRS
YXJlRGF0YSgpIGNvbnN0OwogICAgIEVsZW1lbnRSYXJlRGF0YSYgZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCk7CiAKKyAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIGFuaW1hdGlvblJhcmVEYXRh
KCkgY29uc3Q7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25S
YXJlRGF0YSgpOworCiAgICAgdmlydHVhbCBpbnQgZGVmYXVsdFRhYkluZGV4KCkgY29uc3Q7CiAK
ICAgICB2b2lkIGRldGFjaEFsbEF0dHJOb2Rlc0Zyb21FbGVtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKaW5kZXggYjdhNjg2MzUzZDdjNjg4NDlhMjJiYjZmOTgxMGUwZWY2
ZTIzYjQ5MC4uZmNjYWI1MTE3MzQ4MjFhNGJkNmVjYzBhMDYzODNhZmUyMDRkOTg0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0Lmgi
CiAjaW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgorI2luY2x1ZGUgIkVsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YS5oIgogI2luY2x1ZGUgIkludGVyc2VjdGlvbk9ic2VydmVyLmgiCiAjaW5j
bHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgpA
QCAtMTAxLDggKzEwMiw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NTU0FuaW1hdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQ1NTQW5pbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRIYXNDU1NBbmlt
YXRpb24oYm9vbCB2YWx1ZSkgeyBtX2hhc0NTU0FuaW1hdGlvbiA9IHZhbHVlOyB9CiAKLSAgICBL
ZXlmcmFtZUVmZmVjdFN0YWNrKiBrZXlmcmFtZUVmZmVjdFN0YWNrKCkgeyByZXR1cm4gbV9rZXlm
cmFtZUVmZmVjdFN0YWNrLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRLZXlmcmFtZUVmZmVjdFN0YWNr
KHN0ZDo6dW5pcXVlX3B0cjxLZXlmcmFtZUVmZmVjdFN0YWNrPiYmIGtleWZyYW1lRWZmZWN0U3Rh
Y2spIHsgbV9rZXlmcmFtZUVmZmVjdFN0YWNrID0gV1RGTW92ZShrZXlmcmFtZUVmZmVjdFN0YWNr
KTsgfQorICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogZWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhKCkgeyByZXR1cm4gbV9hbmltYXRpb25SYXJlRGF0YS5nZXQoKTsgfQorICAgIEVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKTsKIAogICAgIGJvb2wg
aGFzRWxlbWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0VsZW1lbnRJZGVudGlm
aWVyOyB9CiAgICAgdm9pZCBzZXRIYXNFbGVtZW50SWRlbnRpZmllcihib29sIHZhbHVlKSB7IG1f
aGFzRWxlbWVudElkZW50aWZpZXIgPSB2YWx1ZTsgfQpAQCAtMTU4LDYgKzE1OSw4IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8IG1fYWZ0ZXJQ
c2V1ZG9FbGVtZW50KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQc2V1ZG9FbGVt
ZW50cyk7CisgICAgICAgIGlmIChtX2FuaW1hdGlvblJhcmVEYXRhKQorICAgICAgICAgICAgcmVz
dWx0LmFkZChVc2VUeXBlOjpBbmltYXRpb25zKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAjZW5kaWYKQEAgLTE5MCw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNpemVPYnNlcnZlckRhdGE+IG1fcmVzaXplT2JzZXJ2ZXJEYXRhOwogI2VuZGlmCiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZnJhbWVFZmZlY3RTdGFjaz4gbV9rZXlmcmFtZUVmZmVj
dFN0YWNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+IG1f
YW5pbWF0aW9uUmFyZURhdGE7CiAKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQ
c2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxl
bWVudDsKQEAgLTI0OSw0ICsyNTIsMTEgQEAgaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpy
ZXNldFN0eWxlUmVsYXRpb25zKCkKICAgICBzZXRDaGlsZEluZGV4KDApOwogfQogCitpbmxpbmUg
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlv
blJhcmVEYXRhKCkKK3sKKyAgICBpZiAoIW1fYW5pbWF0aW9uUmFyZURhdGEpCisgICAgICAgIG1f
YW5pbWF0aW9uUmFyZURhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4o
KTsKKyAgICByZXR1cm4gKm1fYW5pbWF0aW9uUmFyZURhdGEuZ2V0KCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCAyNzEyZDFlNmQ1
N2M1NmJhZWEyY2Q0OTYxZDMxMjM1ZWRlYjJkM2VhLi40YmRiMTI2MjJjZmQ4NmU5MjY0MjUzYmFl
MzhlYzlhZWNmMDFkNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNDgsNyAr
MjQ4LDYgQEAgcHVibGljOgogICAgICAgICBDb25uZWN0ZWRGcmFtZUNvdW50ID0gMSA8PCAwLAog
ICAgICAgICBOb2RlTGlzdCA9IDEgPDwgMSwKICAgICAgICAgTXV0YXRpb25PYnNlcnZlciA9IDEg
PDwgMiwKLQogICAgICAgICBUYWJJbmRleCA9IDEgPDwgMywKICAgICAgICAgTWluaW11bVNpemUg
PSAxIDw8IDQsCiAgICAgICAgIFNjcm9sbGluZ1Bvc2l0aW9uID0gMSA8PCA1LApAQCAtMjYwLDYg
KzI1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMSwKICAgICAg
ICAgSW50ZXJhY3Rpb25PYnNlcnZlciA9IDEgPDwgMTIsCiAgICAgICAgIFBzZXVkb0VsZW1lbnRz
ID0gMSA8PCAxMywKKyAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCiAgICAgfTsKICNlbmRp
ZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393252</attachid>
            <date>2020-03-11 09:37:08 -0700</date>
            <delta_ts>2020-03-11 13:15:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208079-20200311173706.patch</filename>
            <type>text/plain</type>
            <size>54840</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY2ZDY0N2ZhNGIyMjdl
ZmIwZjFiZWZkZjI3NjFlYWY1OGFhOGUxOC4uYmExOGI0MGI0ZTVjYzUxMmNkM2Q4MmVhZDc0YTlh
NGZjYmNmMjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIEFuaW1hdGlvblRpbWVs
aW5lIHNob3VsZCBub3QgaGF2ZSBtdWx0aXBsZSBIYXNoTWFwcyB3aXRoIHJhdyBFbGVtZW50KiBr
ZXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgw
NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5Njg3OTA2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGludHJvZHVjZSBhIG5ldyBFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEgY2xhc3MgdGhhdCBob2xkcyB0aGUgS2V5ZnJhbWVFZmZlY3RTdGFj
ayBwcmV2aW91c2x5IG93bmVkIGJ5IEVsZW1lbnRSYXJlRGF0YSBhcyB3ZWxsIGFzIGEgZmV3IG1h
cHMgYW5kIGxpc3RzCisgICAgICAgIG93bmVkIGJ5IEFuaW1hdGlvblRpbWVsaW5lIHdoaWNoIHdv
dWxkIHVzZSByYXcgRWxlbWVudCBwb2ludGVycyBhcyBrZXlzLiBTcGVjaWZpY2FsbHksIHRoaXMg
aXMgd2hhdCBjaGFuZ2VkOgorCisgICAgICAgIC0gQW5pbWF0aW9uVGltZWxpbmU6Om1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQg4oaSIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YTo6cnVubmluZ1RyYW5zaXRpb25CeVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmlt
YXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9w
ZXJ0eUlEIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNvbXBsZXRlZFRyYW5zaXRpb25C
eVByb3BlcnR5KCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50VG9DU1NB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6
OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5l
OjptX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGE6OnRyYW5zaXRpb25zKCkKKyAgICAgICAgLSBBbmltYXRpb25UaW1lbGluZTo6bV9lbGVtZW50
VG9DU1NBbmltYXRpb25zTWFwIOKGkiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1h
dGlvbnMoKQorICAgICAgICAtIEFuaW1hdGlvblRpbWVsaW5lOjptX2VsZW1lbnRUb0FuaW1hdGlv
bnNNYXAg4oaSIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucygpCisKKyAg
ICAgICAgRm9yIGNvbnZlbmllbmNlLCB0aGVzZSBuZXcgbWVtYmVycyBhcmUgZXhwb3NlZCB2aWEg
RWxlbWVudCBkaXJlY3RseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50SW5pdC5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXApOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25G
cm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp3aWxsRGVzdHJveVJlbmRlcmVyRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdh
c1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERl
Y2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JFbGVtZW50QW5kUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpy
ZW1vdmVBbmltYXRpb25Gcm9tTWFwRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmg6Cisg
ICAgICAgICogYW5pbWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmg6CisgICAgICAgICogYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKToKKyAgICAgICAgKiBhbmltYXRpb24vRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NvbXB1dGVkRWZmZWN0VGltaW5nLmguCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGE6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6On5FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjplbnN1cmVL
ZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKiBhbmltYXRpb24vRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhOjprZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YTo6d2ViQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE6OmNzc0FuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpzZXRBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YTo6Y29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KToK
KyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKiBhbmltYXRp
b24vT3B0aW9uYWxFZmZlY3RUaW1pbmcuaDoKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0czo6aXNFbXB0
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRy
YWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uc01hcmthYmxlRG91YmxlVHJh
aXRzOjppc0VtcHR5VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0
aW9uc01hcmthYmxlRG91YmxlVHJhaXRzOjplbXB0eVZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphbmltYXRpb25S
YXJlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBbmltYXRp
b25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0
YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzS2V5ZnJhbWVFZmZlY3Rz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYkFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3NzQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojp0cmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojphbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29t
cGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjprZXlmcmFtZUVmZmVjdFN0YWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0S2V5ZnJhbWVFZmZlY3RTdGFjayk6IERl
bGV0ZWQuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5n
Rm9yUmFyZURhdGFVc2VUeXBlKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisKIDIw
MjAtMDMtMTAgIFRvbW9raSBJbWFpICA8VG9tb2tpLkltYWlAc29ueS5jb20+CiAKICAgICAgICAg
W09wZW5TU0xdIEltcGxlbWVudCBXZWJDcnlwdG8gQVBJcyBmb3IgQUVTLUNUUiBhbmQgQUVTLUtX
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCAyNWJhNDYzMzE1ODVjYjFiZjNlYzExYjQwYjMyZDYwZDUz
ZDAwYzc2Li45ZjU1NjU0NmY4ZDZkYzgxN2RiZDRkODYzMzNlYjE0NThhODJjZWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTE4NSw2ICsxODUsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uT3B0aW9ucy5oCiAg
ICAgYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0T3B0aW9ucy5oCiAgICAgYW5pbWF0aW9uL1BsYXli
YWNrRGlyZWN0aW9uLmgKKyAgICBhbmltYXRpb24vV2ViQW5pbWF0aW9uVHlwZXMuaAogCiAgICAg
YmluZGluZ3MvSURMVHlwZXMuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU1M2Y5NjQ2Y2I4OTIxYTk1
N2RhODc3ZWRiNjcwZGY3ZTVmZjk1OGQuLjBkNDUzMmYxNjNkY2ZhZmM4ZGYzZTczNWI0ZWM3YzAx
MjZhZmM1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00NTUsNiArNDU1LDcgQEAgYW5pbWF0aW9uL0NT
U0FuaW1hdGlvbi5jcHAKIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAogYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmNwcAogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCith
bmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmNwcAogYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmNwcAogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCiBhbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDZkNjI1ZWUwNDUzOTYzNWE5N2ZlMGQ5YjIxYTZiMmQ5NzBl
ZjJkZGYuLmI2YjNjZDhhMzViYjAzYjBkYWZjNmZkZjE1NjdmYzU0OWIyYWI1YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIw
ODQsMTIgKzIwODQsMTQgQEAKIAkJNzEwMjVFREUxRjk5RjFFQzAwNEEyNTBDIC8qIEpTQW5pbWF0
aW9uVGltZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcxMDI1RUQ5MUY5OUYxQTcwMDRBMjUwQyAvKiBKU0FuaW1hdGlvblRpbWVsaW5lLmggKi87
IH07CiAJCTcxMDI1RUUwMUY5OUYxRUMwMDRBMjUwQyAvKiBKU0RvY3VtZW50VGltZWxpbmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMDI1RURDMUY5
OUYxQTgwMDRBMjUwQyAvKiBKU0RvY3VtZW50VGltZWxpbmUuaCAqLzsgfTsKIAkJNzEwMjVFRTIx
Rjk5RjFFQzAwNEEyNTBDIC8qIEpTV2ViQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTAyNUVEODFGOTlGMUE2MDA0QTI1MEMgLyogSlNX
ZWJBbmltYXRpb24uaCAqLzsgfTsKKwkJNzEwOEVFRTYyNDE4RUQ1QTAwNUMzREE3IC8qIFdlYkFu
aW1hdGlvblR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MTA4RUVFNDI0MThFRDUzMDA1QzNEQTcgLyogV2ViQW5pbWF0aW9uVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTExMjQzRTIx
NkZBNzExMDBFQjdCNjcgLyogQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTExMjQzQjIxNkZBNkUwMDBFQjdC
NjcgLyogQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzExMTI0NDEyMTZGQTdDRDAwRUI3QjY3IC8qIEpT
Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MTExMjQ0MDIxNkZBN0JFMDBFQjdCNjcgLyogSlNDb21wb3NpdGVP
cGVyYXRpb25PckF1dG8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MTE2RTJDQzFGRUQ3NURDMDBDMDZGREUgLyogQ29tcHV0ZWRFZmZlY3RUaW1p
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTZF
MkNCMUZFRDc1RDEwMEMwNkZERSAvKiBDb21wdXRlZEVmZmVjdFRpbWluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMTZFMkNGMUZFRDc2NUIw
MEMwNkZERSAvKiBKU0NvbXB1dGVkRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTE2RTJDRTFGRUQ3NjUyMDBDMDZGREUgLyogSlND
b21wdXRlZEVmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcxMTc0NDU5MTRCQzM0RUMwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmlj
c0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcxMTc0NDU3MTRCQzM0RTIwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaCAqLzsg
fTsKIAkJNzExOEZFRDUxNTY4NUNDNjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMThGRUQzMTU2ODVDQzYw
MDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmggKi87IH07CisJCTcxMTk0NjU2MjQxODFFQTEwMDQ2
NkMxMSAvKiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTk0NjUzMjQxODFFODMwMDQ2NkMxMSAvKiBFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MTFBRDEyNjIzNkQ4NkU1MDA2RkYzN0MgLyogQW5pbWF0aW9uRXZl
bnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MTFBRDEyMzIzNkQ4NkQzMDA2RkYzN0MgLyogQW5pbWF0aW9uRXZlbnRCYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEyMDczNDAyMTZERkIw
MDAwQzc4MzI5IC8qIE9wdGlvbmFsRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTIwNzMzRDIxNkRGQUYxMDBDNzgzMjkgLyogT3B0
aW9uYWxFZmZlY3RUaW1pbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MTIwNzM0MzIxNkRGQjQxMDBDNzgzMjkgLyogSlNPcHRpb25hbEVmZmVj
dFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzEyMDczNDEyMTZERkIzMTAwQzc4MzI5IC8qIEpTT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQxOSw2ICs5
NDIxLDcgQEAKIAkJNzEwMjVFREExRjk5RjFBNzAwNEEyNTBDIC8qIEpTQW5pbWF0aW9uVGltZWxp
bmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBbmltYXRpb25U
aW1lbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMDI1RURCMUY5OUYx
QTgwMDRBMjUwQyAvKiBKU0RvY3VtZW50VGltZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudFRpbWVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzEwMjVFREMxRjk5RjFBODAwNEEyNTBDIC8qIEpTRG9jdW1lbnRUaW1l
bGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvY3VtZW50VGltZWxp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzEwOEVFRTQyNDE4RUQ1MzAwNUMz
REE3IC8qIFdlYkFuaW1hdGlvblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkFuaW1hdGlvblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
MEZBNzRCMURFRTU3NkQwMDRDNzE1RSAvKiBjb250cm9scy1iYXIuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiY29udHJvbHMtYmFyLmpzIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzEwRkE3NEMxREVFNTc3RTAwNEM3MTVFIC8qIGNvbnRyb2xzLXZp
c2liaWxpdHktc3VwcG9ydC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9ICJjb250cm9scy12aXNpYmlsaXR5LXN1cHBvcnQuanMiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MTExMjQzQjIxNkZBNkUwMDBFQjdCNjcgLyogQ29tcG9zaXRlT3BlcmF0aW9u
T3JBdXRvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBvc2l0ZU9wZXJh
dGlvbk9yQXV0by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQzMyw2ICs5NDM2
LDggQEAKIAkJNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0TWV0cmljc0J1aWxk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzExOEZFRDIxNTY4NUNDNjAwMzBC
NzlBIC8qIEpTU1ZHVmlld1NwZWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTVkdWaWV3U3BlYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
MThGRUQzMTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdTcGVjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHVmlld1NwZWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzExOTQ2NTMyNDE4MUU4MzAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50QW5pbWF0aW9u
UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzExOTQ2NTUyNDE4MUU4
NDAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTFBRDEyMzIzNkQ4NkQzMDA2RkYzN0MgLyogQW5p
bWF0aW9uRXZlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFuaW1h
dGlvbkV2ZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTFBRDEyNTIz
NkQ4NkQ0MDA2RkYzN0MgLyogQW5pbWF0aW9uRXZlbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFuaW1hdGlvbkV2ZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxMUZCMDc1MURDNzY4OEYwMEM0QzcwOCAvKiBwbGFjYXJkLXN1
cHBvcnQuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAicGxhY2Fy
ZC1zdXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDQ2LDYgKzIx
MDUxLDggQEAKIAkJCQk3MTcyOUY3OTIwRjNCQTM5MDA4MDFDRTYgLyogRG9jdW1lbnRUaW1lbGlu
ZU9wdGlvbnMuaWRsICovLAogCQkJCTcxMkJFNDdDMUZFODY0NDgwMDIwMzFDQyAvKiBFZmZlY3RU
aW1pbmcuaCAqLywKIAkJCQk3MTJCRTQ3QTFGRTg2NDQ3MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5n
LmlkbCAqLywKKwkJCQk3MTE5NDY1NTI0MTgxRTg0MDA0NjZDMTEgLyogRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhLmNwcCAqLywKKwkJCQk3MTE5NDY1MzI0MTgxRTgzMDA0NjZDMTEgLyogRWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhLmggKi8sCiAJCQkJNzEyQkU0ODExRkU4NjVENDAwMjAzMUNDIC8q
IEZpbGxNb2RlLmggKi8sCiAJCQkJNzEyQkU0ODIxRkU4NjVENTAwMjAzMUNDIC8qIEZpbGxNb2Rl
LmlkbCAqLywKIAkJCQk3MTNGMUQ1OTIzREYxRDdEMDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09w
dGlvbnMuaCAqLywKQEAgLTIxMDY4LDYgKzIxMDc1LDcgQEAKIAkJCQk3MTAyNUVDMzFGOTlGMDk2
MDA0QTI1MEMgLyogV2ViQW5pbWF0aW9uLmNwcCAqLywKIAkJCQk3MTAyNUVDMjFGOTlGMDk2MDA0
QTI1MEMgLyogV2ViQW5pbWF0aW9uLmggKi8sCiAJCQkJNzEwMjVFQzgxRjk5RjA5NjAwNEEyNTBD
IC8qIFdlYkFuaW1hdGlvbi5pZGwgKi8sCisJCQkJNzEwOEVFRTQyNDE4RUQ1MzAwNUMzREE3IC8q
IFdlYkFuaW1hdGlvblR5cGVzLmggKi8sCiAJCQkJNzFDMjVBRjUyMzkyQkYzQzAwRDVDMDk4IC8q
IFdlYkFuaW1hdGlvblV0aWxpdGllcy5jcHAgKi8sCiAJCQkJNzEzMjQ0NEYyMDEwOUQ5QjAwQUU3
RkIyIC8qIFdlYkFuaW1hdGlvblV0aWxpdGllcy5oICovLAogCQkJKTsKQEAgLTI2MzcwLDYgKzI2
Mzc4LDggQEAKIAkJCQlDRDlEMzc1QTIxNTE2M0U0MDA0OTY1N0IgLyogQ0RNSW5zdGFuY2VTZXNz
aW9uLmggKi8sCiAJCQkJQ0Q5NEE1RDQxRjcxQ0I2QzAwRjUyNUM1IC8qIENETUtleVN0YXR1cy5o
ICovLAogCQkJCUNEOTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uLmggKi8sCisJCQkJQ0Q4RDMwNkUyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcu
Y3BwICovLAorCQkJCUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi8s
CiAJCQkJQ0Q5NEE1RDMxRjcxQ0I2QzAwRjUyNUM1IC8qIENETU1lZGlhQ2FwYWJpbGl0eS5oICov
LAogCQkJCUNEOTRBNUQ2MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1NZXNzYWdlVHlwZS5oICovLAog
CQkJCUNEM0NFMTFDMjQwNDUxQUYwMDRCQTAxRCAvKiBDRE1Qcml2YXRlLmNwcCAqLywKQEAgLTI2
Mzc5LDggKzI2Mzg5LDYgQEAKIAkJCQlDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVx
dWlyZW1lbnQuaCAqLywKIAkJCQlDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNUmVzdHJp
Y3Rpb25zLmggKi8sCiAJCQkJQ0Q5NEE1RDUxRjcxQ0I2RDAwRjUyNUM1IC8qIENETVNlc3Npb25U
eXBlLmggKi8sCi0JCQkJQ0Q4RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAq
LywKLQkJCQlDRDhEMzA2RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAgKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGVuY3J5cHRlZG1lZGlhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTI5MzYyLDYgKzI5MzcwLDcgQEAKIAkJCQlDRDNDRTBGQjI0MDFBQUQ5MDA0QkEwMUQg
LyogQ0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNDRTBGQzI0MDFB
QUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNDRTBG
RDI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0Q4RDMwNkYyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEM0NFMEZFMjQwMUFBRDkwMDRCQTAxRCAvKiBDRE1NZWRpYUNhcGFi
aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0NFMEZGMjQwMUFBREEwMDRCQTAxRCAvKiBD
RE1NZXNzYWdlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQ0UxMDAyNDAxQUFEQTAwNEJB
MDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjk5MDQsNiArMjk5MTMsNyBA
QAogCQkJCUE4QzRBODA3MDlENTYzMjcwMDAzQUM4RCAvKiBFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDBBQTk2MUM2ODQyMDgwMEEyNjVDQyAvKiBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzExOTQ2
NTYyNDE4MUVBMTAwNDY2QzExIC8qIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQ2QTJCMUUxN0NBNzZCMTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNCQ0UxQzIzNUUzQkU1MDBGQzM5RTUgLyogRWxl
bWVudENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QjdBMTcxMTdDMTBBQzAwMEU0QUEw
QSAvKiBFbGVtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDQzMSw3ICszMDQ0MSw2IEBA
CiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZFODU1RjAwOTQxNkMy
IC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTQxNjZFQTA0
RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUNEOEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0I0NDJENzE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBQTZCNkMxNjZEMkMxMzAwRDQ1NjcxIC8qIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0NFNzdENTE2
NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMzAyNyw2ICszMzAzNiw3IEBACiAJCQkJQUE0NzhBN0YxNkNENzBDMzAwN0Qx
QkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDNFRjQ0ODE5MTc5MTVDMDAwMzQxODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXll
ckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTAyNUVEMzFGOTlGMENFMDA0QTI1MEMg
LyogV2ViQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTA4RUVFNjI0MThFRDVBMDA1
QzNEQTcgLyogV2ViQW5pbWF0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzI0NDUx
MjAxMDlEQTUwMEFFN0ZCMiAvKiBXZWJBbmltYXRpb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxODUzNjg0MUY0RTQ4MTQwMEZFMDkxQiAvKiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9t
TlNBdHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMThDMzU0NDFGNzE5NzBD
MDBGRjYzMkQgLyogV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25Q
bGF5YmFja0V2ZW50SW5pdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBs
YXliYWNrRXZlbnRJbml0LmgKaW5kZXggZWY3MTRjODZjZmNkNjZlY2MzYzgyZjI3ODdlY2E4YjA3
N2ZkZDRlMi4uY2IyNDMzODAyNzUzM2I2ZGFiMGVmYTMzNDkwZTAwMjhiMzAwNmI4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnRJbml0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnRJ
bml0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRXZlbnRJ
bml0LmgiCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2Vi
QW5pbWF0aW9uVHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAppbmRleCA1ZTg3NGE0M2E3M2Vj
YjhhMWU3ZjYxZTAwZTQ4YzE5NzE0MTRkODVhLi4wNWVjZjdkMWE2Y2Y0NjNjMzFhODk3ZmJiNDM0
ZGNlYTBlNTFkNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25U
aW1lbGluZS5jcHAKQEAgLTEwMSw1MyArMTAxLDI5IEBAIE9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0
aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQogCiB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjphbmltYXRpb25XYXNBZGRlZFRvRWxlbWVudChXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwg
RWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBbJl0gKCkgLT4gRWxlbWVudFRvQW5pbWF0aW9uc01h
cCYgewotICAgICAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3duY2Fz
dDxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwOwotICAgICAgICBpZiAoaXM8Q1NT
QW5pbWF0aW9uPihhbmltYXRpb24pICYmIGRvd25jYXN0PENTU0FuaW1hdGlvbj4oYW5pbWF0aW9u
KS5vd25pbmdFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9lbGVtZW50VG9DU1NBbmlt
YXRpb25zTWFwOwotICAgICAgICByZXR1cm4gbV9lbGVtZW50VG9BbmltYXRpb25zTWFwOwotICAg
IH0oKS5lbnN1cmUoJmVsZW1lbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIEFuaW1hdGlvbkNvbGxl
Y3Rpb24geyB9OwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoJmFuaW1hdGlvbik7CisgICAg
aWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8Q1NTVHJhbnNpdGlv
bj4oYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50KCkpCisgICAgICAgIGVsZW1lbnQudHJhbnNpdGlv
bnMoKS5hZGQoJmFuaW1hdGlvbik7CisgICAgZWxzZSBpZiAoaXM8Q1NTQW5pbWF0aW9uPihhbmlt
YXRpb24pICYmIGRvd25jYXN0PENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKS5vd25pbmdFbGVtZW50
KCkpCisgICAgICAgIGVsZW1lbnQuY3NzQW5pbWF0aW9ucygpLmFkZCgmYW5pbWF0aW9uKTsKKyAg
ICBlbHNlCisgICAgICAgIGVsZW1lbnQud2ViQW5pbWF0aW9ucygpLmFkZCgmYW5pbWF0aW9uKTsK
IH0KIAotc3RhdGljIGlubGluZSBib29sIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKENTU1Ry
YW5zaXRpb24mIHRyYW5zaXRpb24sIEVsZW1lbnQmIGVsZW1lbnQsIEhhc2hNYXA8RWxlbWVudCos
IEFuaW1hdGlvblRpbWVsaW5lOjpQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcD4mIG1hcCkKK3N0YXRp
YyBpbmxpbmUgYm9vbCByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9uJiB0
cmFuc2l0aW9uLCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgY3NzVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZCgmZWxlbWVudCk7Ci0gICAgaWYg
KGl0ZXJhdG9yID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0
byYgY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5ID0gaXRlcmF0b3ItPnZhbHVlOwotCiAgICAgYXV0
byB0cmFuc2l0aW9uSXRlcmF0b3IgPSBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkuZmluZCh0cmFu
c2l0aW9uLnByb3BlcnR5KCkpOwogICAgIGlmICh0cmFuc2l0aW9uSXRlcmF0b3IgPT0gY3NzVHJh
bnNpdGlvbnNCeVByb3BlcnR5LmVuZCgpIHx8IHRyYW5zaXRpb25JdGVyYXRvci0+dmFsdWUgIT0g
JnRyYW5zaXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNzc1RyYW5zaXRpb25z
QnlQcm9wZXJ0eS5yZW1vdmUodHJhbnNpdGlvbkl0ZXJhdG9yKTsKLQotICAgIGlmIChjc3NUcmFu
c2l0aW9uc0J5UHJvcGVydHkuaXNFbXB0eSgpKQotICAgICAgICBtYXAucmVtb3ZlKCZlbGVtZW50
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUFuaW1h
dGlvbkZyb21NYXBGb3JFbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBBbmltYXRpb25U
aW1lbGluZTo6RWxlbWVudFRvQW5pbWF0aW9uc01hcCYgbWFwLCBFbGVtZW50JiBlbGVtZW50KQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZCgmZWxlbWVudCk7Ci0gICAgaWYgKGl0ZXJh
dG9yID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgYW5pbWF0aW9u
cyA9IGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBhbmltYXRpb25zLnJlbW92ZSgmYW5pbWF0aW9uKTsK
LSAgICBpZiAoIWFuaW1hdGlvbnMuc2l6ZSgpKQotICAgICAgICBtYXAucmVtb3ZlKGl0ZXJhdG9y
KTsKLX0KLQogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21F
bGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQogewotICAg
IHJlbW92ZUFuaW1hdGlvbkZyb21NYXBGb3JFbGVtZW50KGFuaW1hdGlvbiwgbV9lbGVtZW50VG9D
U1NUcmFuc2l0aW9uc01hcCwgZWxlbWVudCk7Ci0gICAgcmVtb3ZlQW5pbWF0aW9uRnJvbU1hcEZv
ckVsZW1lbnQoYW5pbWF0aW9uLCBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAsIGVsZW1lbnQp
OwotICAgIHJlbW92ZUFuaW1hdGlvbkZyb21NYXBGb3JFbGVtZW50KGFuaW1hdGlvbiwgbV9lbGVt
ZW50VG9BbmltYXRpb25zTWFwLCBlbGVtZW50KTsKKyAgICBlbGVtZW50LnRyYW5zaXRpb25zKCku
cmVtb3ZlKCZhbmltYXRpb24pOworICAgIGVsZW1lbnQuY3NzQW5pbWF0aW9ucygpLnJlbW92ZSgm
YW5pbWF0aW9uKTsKKyAgICBlbGVtZW50LndlYkFuaW1hdGlvbnMoKS5yZW1vdmUoJmFuaW1hdGlv
bik7CiAKICAgICAvLyBOb3csIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIENTUyBUcmFuc2l0aW9u
LCB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5
Q1NTUHJvcGVydHlJRCBtYXAuCiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyB0aGlzIGZvciBD
U1MgQW5pbWF0aW9ucyBiZWNhdXNlIHRoZWlyIHRpbWluZyBjYW4gYmUgc2V0IHZpYSBDU1MgdG8g
ZW5kLCB3aGljaCB3b3VsZCBjYXVzZSB0aGlzCkBAIC0xNjMsOCArMTM5LDggQEAgdm9pZCBBbmlt
YXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25p
bmdFbGVtZW50KFdlYkEKIAogICAgIGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pKSB7
CiAgICAgICAgIGF1dG8mIHRyYW5zaXRpb24gPSBkb3duY2FzdDxDU1NUcmFuc2l0aW9uPihhbmlt
YXRpb24pOwotICAgICAgICBpZiAoIXJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRp
b24sIGVsZW1lbnQsIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5
SUQpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwg
ZWxlbWVudCwgbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlE
KTsKKyAgICAgICAgaWYgKCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBl
bGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSkpCisgICAgICAgICAgICByZW1v
dmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVtZW50LmNvbXBsZXRlZFRyYW5z
aXRpb25CeVByb3BlcnR5KCkpOwogICAgIH0KIH0KIApAQCAtMTc4LDE4ICsxNTQsMTIgQEAgVmVj
dG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uc0Zv
ckVsZW1lbnQoRWxlbWVudCYgZWwKICAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChl
ZmZlY3QtPmFuaW1hdGlvbigpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwLmNvbnRhaW5zKCZlbGVtZW50KSkgewotICAg
ICAgICAgICAgY29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnMgPSBtX2VsZW1lbnRUb0NTU1RyYW5z
aXRpb25zTWFwLmdldCgmZWxlbWVudCk7Ci0gICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZFJh
bmdlKGNzc1RyYW5zaXRpb25zLmJlZ2luKCksIGNzc1RyYW5zaXRpb25zLmVuZCgpKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAobV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLmNvbnRhaW5zKCZl
bGVtZW50KSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgY3NzQW5pbWF0aW9ucyA9IG1fZWxl
bWVudFRvQ1NTQW5pbWF0aW9uc01hcC5nZXQoJmVsZW1lbnQpOwotICAgICAgICAgICAgYW5pbWF0
aW9ucy5hcHBlbmRSYW5nZShjc3NBbmltYXRpb25zLmJlZ2luKCksIGNzc0FuaW1hdGlvbnMuZW5k
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXAuY29u
dGFpbnMoJmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiB3ZWJBbmltYXRpb25z
ID0gbV9lbGVtZW50VG9BbmltYXRpb25zTWFwLmdldCgmZWxlbWVudCk7Ci0gICAgICAgICAgICBh
bmltYXRpb25zLmFwcGVuZFJhbmdlKHdlYkFuaW1hdGlvbnMuYmVnaW4oKSwgd2ViQW5pbWF0aW9u
cy5lbmQoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnMg
PSBlbGVtZW50LnRyYW5zaXRpb25zKCk7CisgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFuZ2Uo
Y3NzVHJhbnNpdGlvbnMuYmVnaW4oKSwgY3NzVHJhbnNpdGlvbnMuZW5kKCkpOworICAgICAgICBj
b25zdCBhdXRvJiBjc3NBbmltYXRpb25zID0gZWxlbWVudC5jc3NBbmltYXRpb25zKCk7CisgICAg
ICAgIGFuaW1hdGlvbnMuYXBwZW5kUmFuZ2UoY3NzQW5pbWF0aW9ucy5iZWdpbigpLCBjc3NBbmlt
YXRpb25zLmVuZCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgd2ViQW5pbWF0aW9ucyA9IGVsZW1l
bnQud2ViQW5pbWF0aW9ucygpOworICAgICAgICBhbmltYXRpb25zLmFwcGVuZFJhbmdlKHdlYkFu
aW1hdGlvbnMuYmVnaW4oKSwgd2ViQW5pbWF0aW9ucy5lbmQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGFuaW1hdGlvbnM7CkBAIC0xOTcsMTMgKzE2Nyw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5p
bWF0aW9uPj4gQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQm
IGVsCiAKIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRC
eU1hcmt1cChFbGVtZW50JiBlbGVtZW50LCBDU1NBbmltYXRpb24mIGNzc0FuaW1hdGlvbikKIHsK
LSAgICBhdXRvIGl0ZXJhdG9yID0gbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwTWFwLmZpbmQoJmVsZW1lbnQpOwotICAgIGlmIChpdGVyYXRvciAhPSBtX2VsZW1lbnRUb0NT
U0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAuZW5kKCkpIHsKLSAgICAgICAgYXV0byYgY3Nz
QW5pbWF0aW9ucyA9IGl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgY3NzQW5pbWF0aW9ucy5yZW1v
dmUoJmNzc0FuaW1hdGlvbik7Ci0gICAgICAgIGlmICghY3NzQW5pbWF0aW9ucy5zaXplKCkpCi0g
ICAgICAgICAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAucmVt
b3ZlKGl0ZXJhdG9yKTsKLSAgICB9CisgICAgZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKCkucmVtb3ZlKCZjc3NBbmltYXRpb24pOwogCiAgICAgaWYgKCFlbGVtZW50Lmhhc0tleWZy
YW1lRWZmZWN0cygpKQogICAgICAgICByZXR1cm47CkBAIC0yMjYsMTAgKzE5MCwxMCBAQCB2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoRWxl
bWVudCYgZWxlbWVudCwgQ1NTQQogCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsRGVzdHJv
eVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogewotICAgIGZvciAoYXV0byYg
Y3NzVHJhbnNpdGlvbiA6IG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXAuZ2V0KCZlbGVtZW50
KSkKKyAgICBmb3IgKGF1dG8mIGNzc1RyYW5zaXRpb24gOiBlbGVtZW50LnRyYW5zaXRpb25zKCkp
CiAgICAgICAgIGNzc1RyYW5zaXRpb24tPmNhbmNlbChXZWJBbmltYXRpb246OlNpbGVudGx5OjpZ
ZXMpOwogCi0gICAgZm9yIChhdXRvJiBjc3NBbmltYXRpb24gOiBtX2VsZW1lbnRUb0NTU0FuaW1h
dGlvbnNNYXAuZ2V0KCZlbGVtZW50KSkgeworICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDog
ZWxlbWVudC5jc3NBbmltYXRpb25zKCkpIHsKICAgICAgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4o
Y3NzQW5pbWF0aW9uKSkKICAgICAgICAgICAgIHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1h
cmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NBbmltYXRpb24+KCpjc3NBbmltYXRpb24pKTsKICAg
ICAgICAgY3NzQW5pbWF0aW9uLT5jYW5jZWwoV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsK
QEAgLTIzOSwxMiArMjAzLDYgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6d2lsbERlc3Ryb3lS
ZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OmVsZW1lbnRXYXNSZW1vdmVkKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgd2lsbERlc3Ry
b3lSZW5kZXJlckZvckVsZW1lbnQoZWxlbWVudCk7Ci0KLSAgICBtX2VsZW1lbnRUb0FuaW1hdGlv
bnNNYXAucmVtb3ZlKCZlbGVtZW50KTsKLSAgICBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAu
cmVtb3ZlKCZlbGVtZW50KTsKLSAgICBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwLnJlbW92
ZSgmZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJv
cGVydHlJRC5yZW1vdmUoJmVsZW1lbnQpOwotICAgIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0Ny
ZWF0ZWRCeU1hcmt1cE1hcC5yZW1vdmUoJmVsZW1lbnQpOwogfQogCiB2b2lkIEFuaW1hdGlvblRp
bWVsaW5lOjpyZW1vdmVBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQpAQCAt
MjYxLDkgKzIxOSw5IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJl
ckZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6
Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQog
ewotICAgIGZvciAoYXV0byYgY3NzVHJhbnNpdGlvbiA6IG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlv
bnNNYXAuZ2V0KCZlbGVtZW50KSkKKyAgICBmb3IgKGF1dG8mIGNzc1RyYW5zaXRpb24gOiBlbGVt
ZW50LnRyYW5zaXRpb25zKCkpCiAgICAgICAgIGNzc1RyYW5zaXRpb24tPmNhbmNlbCgpOwotICAg
IGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwLmdl
dCgmZWxlbWVudCkpIHsKKyAgICBmb3IgKGF1dG8mIGNzc0FuaW1hdGlvbiA6IGVsZW1lbnQuY3Nz
QW5pbWF0aW9ucygpKSB7CiAgICAgICAgIGlmIChpczxDU1NBbmltYXRpb24+KGNzc0FuaW1hdGlv
bikpCiAgICAgICAgICAgICByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoZWxlbWVu
dCwgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqY3NzQW5pbWF0aW9uKSk7CiAgICAgICAgIGNzc0Fu
aW1hdGlvbi0+Y2FuY2VsKCk7CkBAIC0yOTMsMTMgKzI1MSw4IEBAIHZvaWQgQW5pbWF0aW9uVGlt
ZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlCiAKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0aW5nIGEg
ImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgYW5pbWF0aW9ucyBh
bmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0
eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgYWZ0ZXJDaGFuZ2VTdHlsZS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9
IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cE1hcC5maW5kKCZlbGVtZW50
KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cE1hcC5lbmQoKSkgewotICAgICAgICAgICAgYXV0byYgY3NzQW5pbWF0aW9ucyA9
IGl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDog
Y3NzQW5pbWF0aW9ucykKLSAgICAgICAgICAgICAgICBjc3NBbmltYXRpb24tPmNhbmNlbEZyb21T
dHlsZSgpOwotICAgICAgICAgICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwTWFwLnJlbW92ZShpdGVyYXRvcik7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBj
c3NBbmltYXRpb24gOiBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKSkKKyAgICAg
ICAgICAgIGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIGtleWZyYW1l
RWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0aW9uTGlzdChudWxscHRyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMxMCw5ICsyNjMsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAg
ICAgICByZXR1cm47CiAKICAgICBDU1NBbmltYXRpb25Db2xsZWN0aW9uIG5ld0FuaW1hdGlvbnM7
Ci0gICAgYXV0byYgcHJldmlvdXNBbmltYXRpb25zID0gbV9lbGVtZW50VG9DU1NBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwTWFwLmVuc3VyZSgmZWxlbWVudCwgW10gewotICAgICAgICByZXR1cm4g
Q1NTQW5pbWF0aW9uQ29sbGVjdGlvbiB7IH07Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IGF1dG8mIHByZXZpb3VzQW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0ZWRCeU1h
cmt1cCgpOwogCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1hbmltYXRpb25zLTEv
I2FuaW1hdGlvbnMKICAgICAvLyBUaGUgc2FtZSBAa2V5ZnJhbWVzIHJ1bGUgbmFtZSBtYXkgYmUg
cmVwZWF0ZWQgd2l0aGluIGFuIGFuaW1hdGlvbi1uYW1lLiBDaGFuZ2VzIHRvIHRoZSBhbmltYXRp
b24tbmFtZSB1cGRhdGUgZXhpc3RpbmcKQEAgLTM1NiwxMCArMzA3LDcgQEAgdm9pZCBBbmltYXRp
b25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgUmUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChuZXdBbmltYXRpb25zLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3Vw
TWFwLnJlbW92ZSgmZWxlbWVudCk7Ci0gICAgZWxzZQotICAgICAgICBtX2VsZW1lbnRUb0NTU0Fu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXBNYXAuc2V0KCZlbGVtZW50LCBXVEZNb3ZlKG5ld0FuaW1h
dGlvbnMpKTsKKyAgICBlbGVtZW50LnNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoV1RGTW92
ZShuZXdBbmltYXRpb25zKSk7CiAKICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNldENTU0FuaW1h
dGlvbkxpc3QoY3VycmVudEFuaW1hdGlvbkxpc3QpOwogfQpAQCAtMzc3LDcgKzMyNSw3IEBAIHN0
YXRpYyBLZXlmcmFtZUVmZmVjdCoga2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5kUHJvcGVydHko
RWxlbWVudCYgZWxlbWVudCwgQ1NTCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBi
b29sIHByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEFuaW1hdGlvblRpbWVs
aW5lOjpQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgdHJhbnNpdGlvbnMpCitzdGF0aWMgYm9vbCBw
cm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBQcm9wZXJ0eVRvVHJhbnNpdGlv
bk1hcCYgdHJhbnNpdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8qIHRyYW5zaXRpb24gPSB0cmFuc2l0
aW9ucy5nZXQocHJvcGVydHkpKSB7CiAgICAgICAgIGlmIChDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCAmc3R5bGUsICZ0cmFuc2l0aW9uLT50YXJnZXRTdHls
ZSgpKSkKQEAgLTQxMCwxMyArMzU4LDYgQEAgc3RhdGljIGJvb2wgdHJhbnNpdGlvbk1hdGNoZXNQ
cm9wZXJ0eShjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIENTU1Byb3BlcnR5SUQKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotQW5pbWF0aW9uVGltZWxpbmU6OlByb3BlcnR5VG9UcmFuc2l0aW9u
TWFwJiBBbmltYXRpb25UaW1lbGluZTo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eShFbGVtZW50JiBlbGVtZW50KQotewotICAgIHJldHVybiBtX2VsZW1lbnRUb1J1bm5pbmdDU1NU
cmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmVuc3VyZSgmZWxlbWVudCwgW10gewotICAgICAgICBy
ZXR1cm4gUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgeyB9OwotICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKLX0KLQogc3RhdGljIHZvaWQgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIHRyYW5zaXRp
b25Qcm9wZXJ0aWVzLCBib29sJiB0cmFuc2l0aW9uUHJvcGVydGllc0NvbnRhaW5BbGwpCiB7CiAg
ICAgaWYgKHRyYW5zaXRpb25Qcm9wZXJ0aWVzQ29udGFpbkFsbCkKQEAgLTQ0NCw3ICszODUsNyBA
QCBzdGF0aWMgdm9pZCBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldAogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYg
ZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIEFuaW1hdGlvblRp
bWVsaW5lOjpQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9w
ZXJ0eSwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIGNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9w
ZXJ0eSwgY29uc3QgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKK3ZvaWQgQW5pbWF0aW9u
VGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1l
bnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBj
dXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlLCBQcm9wZXJ0
eVRvVHJhbnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSwgUHJvcGVydHlU
b1RyYW5zaXRpb25NYXAmIGNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSwgY29uc3QgTW9u
b3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKIHsKICAgICBjb25zdCBBbmltYXRpb24qIG1hdGNo
aW5nQmFja2luZ0FuaW1hdGlvbiA9IG51bGxwdHI7CiAgICAgaWYgKGF1dG8qIHRyYW5zaXRpb25z
ID0gYWZ0ZXJDaGFuZ2VTdHlsZS50cmFuc2l0aW9ucygpKSB7CkBAIC01NzQsNyArNTE1LDcgQEAg
dm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5k
UHJvcGVydHkoRWxlbWVudCYgZWxlbWUKICAgICAgICAgICAgIGF1dG8gZGVsYXkgPSBtYXRjaGlu
Z0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkgPCAwID8gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdB
bmltYXRpb24tPmRlbGF5KCkpICogcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA6IFNlY29uZHMo
bWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kZWxheSgpKTsKICAgICAgICAgICAgIGF1dG8gZHVy
YXRpb24gPSBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgKiBy
ZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yOwogCi0gICAgICAgICAgICBlbnN1cmVSdW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KGVsZW1lbnQpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6
Y3JlYXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2lu
Z0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0
ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5
bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgICAgIGVsZW1lbnQucnVu
bmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6
Y3JlYXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2lu
Z0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0
ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5
bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIDQuIE90aGVyd2lzZSwgaW1wbGVtZW50YXRpb25zIG11c3QgY2FuY2VsIHRoZSBy
dW5uaW5nIHRyYW5zaXRpb24KICAgICAgICAgICAgIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlv
bi0+Y2FuY2VsRnJvbVN0eWxlKCk7CkBAIC01OTAsNyArNTMxLDcgQEAgdm9pZCBBbmltYXRpb25U
aW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVu
dCYgZWxlbWUKICAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgICAgICBhdXRvJiByZXZlcnNpbmdB
ZGp1c3RlZFN0YXJ0U3R5bGUgPSBjdXJyZW50U3R5bGU7CiAgICAgICAgICAgICBhdXRvIHJldmVy
c2luZ1Nob3J0ZW5pbmdGYWN0b3IgPSAxOwotICAgICAgICAgICAgZW5zdXJlUnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eShlbGVtZW50KS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNy
ZWF0ZShlbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdB
bmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVy
Q2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxl
LCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CisgICAgICAgICAgICBlbGVtZW50LnJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNy
ZWF0ZShlbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdB
bmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVy
Q2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxl
LCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01
OTksMjEgKzU0MCwxNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0
aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUgogewogICAgIC8vIEluIGNh
c2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVl
ZCB0byBjYW5jZWwgYWxsIG9mIGl0cyB0cmFuc2l0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVz
LgogICAgIGlmIChjdXJyZW50U3R5bGUuaGFzVHJhbnNpdGlvbnMoKSAmJiBjdXJyZW50U3R5bGUu
ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIGFmdGVyQ2hhbmdlU3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAgICAgIGlmIChtX2VsZW1lbnRUb1J1bm5p
bmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmNvbnRhaW5zKCZlbGVtZW50KSkgewotICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1h
cEl0ZW0gOiBtX2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELnRh
a2UoJmVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0
eUlETWFwSXRlbS52YWx1ZS0+Y2FuY2VsRnJvbVN0eWxlKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
YXV0byBydW5uaW5nVHJhbnNpdGlvbnMgPSBlbGVtZW50LnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJv
cGVydHkoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJv
cGVydHlJRE1hcEl0ZW0gOiBydW5uaW5nVHJhbnNpdGlvbnMpCisgICAgICAgICAgICBjc3NUcmFu
c2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0udmFsdWUtPmNhbmNlbEZyb21TdHlsZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU2VjdGlvbiAzICJTdGFydGluZyBvZiB0
cmFuc2l0aW9ucyIgZnJvbSB0aGUgQ1NTIFRyYW5zaXRpb25zIExldmVsIDEgc3BlY2lmaWNhdGlv
bi4KICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zaXRpb25zLTEvI3N0
YXJ0aW5nCiAKLSAgICBhdXRvJiBydW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5ID0gZW5zdXJl
UnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShlbGVtZW50KTsKLQotICAgIGF1dG8mIGNvbXBs
ZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSA9IG1fZWxlbWVudFRvQ29tcGxldGVkQ1NTVHJhbnNp
dGlvbkJ5Q1NTUHJvcGVydHlJRC5lbnN1cmUoJmVsZW1lbnQsIFtdIHsKLSAgICAgICAgcmV0dXJu
IFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwIHsgfTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgYXV0byYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSA9IGVsZW1lbnQucnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpOworICAgIGF1dG8mIGNvbXBsZXRlZFRyYW5zaXRpb25zQnlQ
cm9wZXJ0eSA9IGVsZW1lbnQuY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkoKTsKIAogICAg
IGF1dG8gZ2VuZXJhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaAppbmRleCAyYzhkMjMwY2E0OTI2
OGQxZGIwNmJjYTM5Y2M0OTA1MDMzOTdhYzljLi5mZjBmNjExYzY0N2RhZmZmOWJkODIzODBiNzRl
ZGVjNDBiZjliOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uVGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuaApAQCAtNzUsMTAgKzc1LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ1NTQW5p
bWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKICAgICB2b2lkIHVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUpOwogCi0gICAg
dXNpbmcgQW5pbWF0aW9uQ29sbGVjdGlvbiA9IExpc3RIYXNoU2V0PFJlZlB0cjxXZWJBbmltYXRp
b24+PjsKLSAgICB1c2luZyBFbGVtZW50VG9BbmltYXRpb25zTWFwID0gSGFzaE1hcDxFbGVtZW50
KiwgQW5pbWF0aW9uQ29sbGVjdGlvbj47Ci0gICAgdXNpbmcgUHJvcGVydHlUb1RyYW5zaXRpb25N
YXAgPSBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIFJlZlB0cjxDU1NUcmFuc2l0aW9uPj47Ci0KICAg
ICB2aXJ0dWFsIH5BbmltYXRpb25UaW1lbGluZSgpOwogCiBwcm90ZWN0ZWQ6CkBAIC04NiwyMyAr
ODIsMTIgQEAgcHJvdGVjdGVkOgogCiAgICAgVmVjdG9yPFdlYWtQdHI8V2ViQW5pbWF0aW9uPj4g
bV9hbGxBbmltYXRpb25zOwogICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24gbV9hbmltYXRpb25zOwot
ICAgIEhhc2hNYXA8RWxlbWVudCosIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwPiBtX2VsZW1lbnRU
b0NvbXBsZXRlZENTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQ7CiAKIHByaXZhdGU6Ci0gICAg
dXNpbmcgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiA9IExpc3RIYXNoU2V0PFJlZlB0cjxDU1NBbmlt
YXRpb24+PjsKLSAgICB1c2luZyBFbGVtZW50VG9DU1NBbmltYXRpb25zTWFwID0gSGFzaE1hcDxF
bGVtZW50KiwgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbj47Ci0KICAgICB2b2lkIHVwZGF0ZUdsb2Jh
bFBvc2l0aW9uKFdlYkFuaW1hdGlvbiYpOwotICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBl
bnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KEVsZW1lbnQmKTsKICAgICB2b2lkIHVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmLCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmLCBQcm9wZXJ0eVRv
VHJhbnNpdGlvbk1hcCYsIGNvbnN0IE1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgcmVtb3ZlQ1NT
QW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKEVsZW1lbnQmLCBDU1NBbmltYXRpb24mKTsKIAotICAg
IEVsZW1lbnRUb0FuaW1hdGlvbnNNYXAgbV9lbGVtZW50VG9BbmltYXRpb25zTWFwOwotICAgIEVs
ZW1lbnRUb0FuaW1hdGlvbnNNYXAgbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwOwotICAgIEVs
ZW1lbnRUb0FuaW1hdGlvbnNNYXAgbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcDsKLSAgICBF
bGVtZW50VG9DU1NBbmltYXRpb25zTWFwIG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc0NyZWF0ZWRC
eU1hcmt1cE1hcDsKLSAgICBIYXNoTWFwPEVsZW1lbnQqLCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1h
cD4gbV9lbGVtZW50VG9SdW5uaW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRDsKLQogICAg
IE1hcmthYmxlPFNlY29uZHMsIFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2N1cnJlbnRUaW1l
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NvbXB1dGVkRWZm
ZWN0VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1p
bmcuaAppbmRleCA1N2FhYmExZWE1Mzg1MDA2ZjU2NjY0M2YwZTEyMTg0ZDc0NGNmOGEzLi45MTlm
YWRmMWNkNDFmN2E5OThlMzM5MTdmNmFiODBlNjg3YjM5ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaApAQCAtMjcsNyArMjcsNyBAQAog
CiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCIKICNpbmNsdWRlICJFZmZlY3RUaW1p
bmcuaCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXZWJB
bmltYXRpb25UeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAppbmRleCBhMzBkM2YwZWU5NWUxZTli
ZWE0ODEyYjA3MWU1NzE5NDcwMzM0MmU1Li5mMmY1NWY0MGRmNzA4NTVjYTdjZGJmNGFlZTY4NzI0
ZDQyNDkzMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwCkBAIC01NDYsMTEgKzU0Niw4IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6dHJhbnNp
dGlvbkRpZENvbXBsZXRlKFJlZlB0cjxDU1NUcmFuc2l0aW9uPiB0cmFuc2l0aW9uKQogICAgIEFT
U0VSVCh0cmFuc2l0aW9uKTsKICAgICByZW1vdmVBbmltYXRpb24oKnRyYW5zaXRpb24pOwogICAg
IGlmIChpczxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+ZWZmZWN0KCkpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiB0YXJnZXQgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+
ZWZmZWN0KCkpLT50YXJnZXQoKSkgewotICAgICAgICAgICAgbV9lbGVtZW50VG9Db21wbGV0ZWRD
U1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmVuc3VyZSh0YXJnZXQsIFtdIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVHJhbnNpdGlv
bj4+IHsgfTsKLSAgICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5zZXQodHJhbnNpdGlvbi0+
cHJvcGVydHkoKSwgdHJhbnNpdGlvbik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIHRh
cmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5lZmZlY3QoKSktPnRh
cmdldCgpKQorICAgICAgICAgICAgdGFyZ2V0LT5jb21wbGV0ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0
eSgpLnNldCh0cmFuc2l0aW9uLT5wcm9wZXJ0eSgpLCB0cmFuc2l0aW9uKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJl
RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgzYTEzZTA4NmZkMWU3NTVkNDUwNDUyZjM4Mjg5MDQxZWFm
MDY4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgiCisKKyNpbmNsdWRlICJLZXlmcmFtZUVmZmVj
dFN0YWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKQoreworfQorCitFbGVtZW50QW5pbWF0aW9u
UmFyZURhdGE6On5FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKQoreworfQorCitLZXlmcmFtZUVm
ZmVjdFN0YWNrJiBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2soKQoreworICAgIGlmICghbV9rZXlmcmFtZUVmZmVjdFN0YWNrKQorICAgICAgICBtX2tl
eWZyYW1lRWZmZWN0U3RhY2sgPSBtYWtlVW5pcXVlPEtleWZyYW1lRWZmZWN0U3RhY2s+KCk7Cisg
ICAgcmV0dXJuICptX2tleWZyYW1lRWZmZWN0U3RhY2suZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmRjNjQ0NmM2NDgyNDQ0OWQzMTRhYmI0Yzkw
OGIxYThlZTk4MzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU0FuaW1hdGlvbjsKK2NsYXNzIENT
U1RyYW5zaXRpb247CitjbGFzcyBXZWJBbmltYXRpb247CisKK2NsYXNzIEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKCk7CisgICAgfkVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YSgpOworCisgICAgS2V5ZnJhbWVFZmZlY3RTdGFjayoga2V5ZnJhbWVFZmZlY3RT
dGFjaygpIHsgcmV0dXJuIG1fa2V5ZnJhbWVFZmZlY3RTdGFjay5nZXQoKTsgfQorICAgIEtleWZy
YW1lRWZmZWN0U3RhY2smIGVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKworICAgIEFuaW1h
dGlvbkNvbGxlY3Rpb24mIHdlYkFuaW1hdGlvbnMoKSB7IHJldHVybiBtX3dlYkFuaW1hdGlvbnM7
IH0KKyAgICBBbmltYXRpb25Db2xsZWN0aW9uJiBjc3NBbmltYXRpb25zKCkgeyByZXR1cm4gbV9j
c3NBbmltYXRpb25zOyB9CisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgdHJhbnNpdGlvbnMoKSB7
IHJldHVybiBtX3RyYW5zaXRpb25zOyB9CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgYW5p
bWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpIHsgcmV0dXJuIG1fYW5pbWF0aW9uc0NyZWF0ZWRCeU1h
cmt1cDsgfQorICAgIHZvaWQgc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRp
b25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykgeyBtX2FuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAg
PSBXVEZNb3ZlKGFuaW1hdGlvbnMpOyB9CisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIGNv
bXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5KCkgeyByZXR1cm4gbV9jb21wbGV0ZWRUcmFuc2l0
aW9uQnlQcm9wZXJ0eTsgfQorICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBydW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KCkgeyByZXR1cm4gbV9ydW5uaW5nVHJhbnNpdGlvbnNCeVByb3Bl
cnR5OyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZnJhbWVFZmZlY3RT
dGFjaz4gbV9rZXlmcmFtZUVmZmVjdFN0YWNrOworICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24gbV93
ZWJBbmltYXRpb25zOworICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24gbV9jc3NBbmltYXRpb25zOwor
ICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24gbV90cmFuc2l0aW9uczsKKyAgICBDU1NBbmltYXRpb25D
b2xsZWN0aW9uIG1fYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cDsKKyAgICBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCBtX2NvbXBsZXRlZFRyYW5zaXRpb25CeVByb3BlcnR5OworICAgIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwIG1fcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuaAppbmRleCA1N2ExNzc0OWQwODM0MGU5N2E0MGRhNjkwOWZhNDUwMTIyNjBmMmY0Li5i
ZThiNmQ5ZjRjOWQ4NzJlOGIwOTUzMjEzMzQ1ZWRlMzQ5N2RmZmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUg
IktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCisjaW5j
bHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9PcHRp
b25hbEVmZmVjdFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZm
ZWN0VGltaW5nLmgKaW5kZXggMTY2MzJkOTQyM2Q3YjYwNDhiNzgyODMxMzk4OTk0ZmZlYTY0MjEy
NC4uNzZkMDliYWJmZGEyZTRkNTUxYWIzODg2ZGM1Y2EyM2EyYjU4NjU3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL09wdGlvbmFsRWZmZWN0VGltaW5nLmgKQEAgLTI3LDcgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tEaXJlY3Rp
b24uaCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXZWJB
bmltYXRpb25UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
aAppbmRleCBmOWMzOTMxZWU5NmUxNThkNDA1YjQ3MzZiNWE1YjY4Nzg5MGQ5YmIzLi4xMDhkM2Q5
ZDAxZWQ3ODMzYTljMmU0YzRkNjJhZmM5YjZmODVlZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCi0j
aW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjk1MTgyMmQ1NTUzZjg0ZTM4MDU0
N2RhNTAwYzAwODFkMWNkMmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvblR5cGVzLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEFuaW1hdGlvbkxpc3Q7CitjbGFzcyBDU1NBbmltYXRpb247CitjbGFz
cyBDU1NUcmFuc2l0aW9uOworY2xhc3MgV2ViQW5pbWF0aW9uOworCitzdHJ1Y3QgV2ViQW5pbWF0
aW9uc01hcmthYmxlRG91YmxlVHJhaXRzIHsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUo
ZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6aXNuYW4odmFsdWUpOwor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGVtcHR5VmFsdWUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7
CisgICAgfQorfTsKKwordXNpbmcgTWFya2FibGVEb3VibGUgPSBNYXJrYWJsZTxkb3VibGUsIFdl
YkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0cz47CisKK3VzaW5nIEFuaW1hdGlvbkNvbGxl
Y3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj47Cit1c2luZyBQcm9wZXJ0
eVRvVHJhbnNpdGlvbk1hcCA9IEhhc2hNYXA8Q1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1RyYW5z
aXRpb24+PjsKK3VzaW5nIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gPSBMaXN0SGFzaFNldDxSZWZQ
dHI8Q1NTQW5pbWF0aW9uPj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgKaW5kZXggMmI0
YjNlMzJlYzNlYjczMDAwMjZhZjcyMmQ4ODA5M2MxNTNjNzdiOC4uZmI5MTM3MDEwYWU5YTZhMzNl
MzE4N2M4MWE4NjRmYWNjM2IyOTJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaApAQCAtNTAsMjAgKzUwLDYgQEAgaW5saW5lIGRvdWJs
ZSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShjb25zdCBTZWNvbmRzIHRpbWUpCiAKIGNv
bnN0IGF1dG8gdGltZUVwc2lsb24gPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDAuMDAxKTsK
IAotc3RydWN0IFdlYkFuaW1hdGlvbnNNYXJrYWJsZURvdWJsZVRyYWl0cyB7Ci0gICAgc3RhdGlj
IGJvb2wgaXNFbXB0eVZhbHVlKGRvdWJsZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6OmlzbmFuKHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBl
bXB0eVZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwotICAgIH0KLX07Ci0KLXVzaW5nIE1hcmthYmxlRG91YmxlID0g
TWFya2FibGU8ZG91YmxlLCBXZWJBbmltYXRpb25zTWFya2FibGVEb3VibGVUcmFpdHM+OwotCiBi
b29sIGNvbXBhcmVBbmltYXRpb25zQnlDb21wb3NpdGVPcmRlcihXZWJBbmltYXRpb24mLCBXZWJB
bmltYXRpb24mLCBjb25zdCBBbmltYXRpb25MaXN0Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiNWZjOTEwMDkyYTRiMzg2ZjgwYzUyNTg0YjRh
M2NiNzU4YTM3NTIyLi5hMGM4MmMyMmU2MTlmMzRkMDczNmI5MzhjYjE1MjY4NmUzNmIyMTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRTaGFyZWRPYmplY3RQb29sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgogI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKKyNpbmNsdWRlICJFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaCIK
ICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50UmFyZURhdGEu
aCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKQEAgLTM3MzgsMjYgKzM3MzksMzUgQEAg
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKiBFbGVtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGFJZkV4aXN0cygpCiAKICNlbmRpZgogCitFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1l
bnQ6OmFuaW1hdGlvblJhcmVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEo
KSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5lbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSA6IG51bGxw
dHI7Cit9CisKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0
aW9uUmFyZURhdGEoKQoreworICAgIHJldHVybiBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5lbnN1
cmVBbmltYXRpb25SYXJlRGF0YSgpOworfQorCiBLZXlmcmFtZUVmZmVjdFN0YWNrKiBFbGVtZW50
OjprZXlmcmFtZUVmZmVjdFN0YWNrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEo
KSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkgOiBudWxscHRyOwor
ICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEtPmtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudDo6ZW5zdXJlS2V5
ZnJhbWVFZmZlY3RTdGFjaygpCiB7Ci0gICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKTsKLSAgICBpZiAoIXJhcmVEYXRhLmtleWZyYW1lRWZmZWN0U3RhY2soKSkKLSAg
ICAgICAgcmFyZURhdGEuc2V0S2V5ZnJhbWVFZmZlY3RTdGFjayhtYWtlVW5pcXVlPEtleWZyYW1l
RWZmZWN0U3RhY2s+KCkpOwotICAgIHJldHVybiAqcmFyZURhdGEua2V5ZnJhbWVFZmZlY3RTdGFj
aygpOworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soKTsKIH0KIAogYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBj
b25zdAogewotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgYXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnRSYXJlRGF0YSgpLT5rZXlm
cmFtZUVmZmVjdFN0YWNrKCk7Ci0gICAgcmV0dXJuIGtleWZyYW1lRWZmZWN0U3RhY2sgJiYga2V5
ZnJhbWVFZmZlY3RTdGFjay0+aGFzRWZmZWN0cygpOworICAgIGlmIChhdXRvKiBhbmltYXRpb25E
YXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkgeworICAgICAgICBpZiAoYXV0byoga2V5ZnJhbWVF
ZmZlY3RTdGFjayA9IGFuaW1hdGlvbkRhdGEtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkKKyAgICAg
ICAgICAgIHJldHVybiBrZXlmcmFtZUVmZmVjdFN0YWNrLT5oYXNFZmZlY3RzKCk7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gRWxlbWVu
dDo6YXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlKQpAQCAtMzc3
OCw2ICszNzg4LDQxIEBAIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5
S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsCiAgICAgcmV0dXJuIGltcGFj
dDsKIH0KIAorQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6d2ViQW5pbWF0aW9ucygpCit7
CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkud2ViQW5pbWF0aW9ucygpOwor
fQorCitBbmltYXRpb25Db2xsZWN0aW9uJiBFbGVtZW50Ojpjc3NBbmltYXRpb25zKCkKK3sKKyAg
ICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5jc3NBbmltYXRpb25zKCk7Cit9CisK
K0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OnRyYW5zaXRpb25zKCkKK3sKKyAgICByZXR1
cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS50cmFuc2l0aW9ucygpOworfQorCitDU1NBbmlt
YXRpb25Db2xsZWN0aW9uJiBFbGVtZW50OjphbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkKK3sK
KyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zQ3JlYXRlZEJ5
TWFya3VwKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1
cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykKK3sKKyAgICBlbnN1cmVBbmlt
YXRpb25SYXJlRGF0YSgpLnNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoV1RGTW92ZShhbmlt
YXRpb25zKSk7Cit9CisKK1Byb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBFbGVtZW50Ojpjb21wbGV0
ZWRUcmFuc2l0aW9uQnlQcm9wZXJ0eSgpCit7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKCkuY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkoKTsKK30KKworUHJvcGVydHlU
b1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKQor
eworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnJ1bm5pbmdUcmFuc2l0aW9u
c0J5UHJvcGVydHkoKTsKK30KKwogI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCiAKIHZvaWQg
RWxlbWVudDo6ZGlzY29ubmVjdEZyb21SZXNpemVPYnNlcnZlcnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggNmZkNTk5M2U2YmRmZTJkMjIyN2FiZDkzMDUyYzIwZGVmYzg3Mjg5Ny4uMWM2YmIxMjFj
YjNiOWFmMWI2MDczYWYzOGM0OGFmYTI3NjkzNWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdE1vZGUuaCIKICNpbmNsdWRlICJTaW11
bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJTdHlsZUNoYW5nZS5oIgorI2luY2x1ZGUg
IldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgRGF0YXNldERP
TVN0cmluZ01hcDsKIGNsYXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKIGNsYXNzIERP
TVRva2VuTGlzdDsKK2NsYXNzIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTsKIGNsYXNzIEVsZW1l
bnRSYXJlRGF0YTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwpAQCAtNDkxLDYg
KzQ5MywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsK
ICAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5k
ZXJTdHlsZSYpOwogCisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgd2ViQW5pbWF0aW9ucygpOwor
ICAgIEFuaW1hdGlvbkNvbGxlY3Rpb24mIGNzc0FuaW1hdGlvbnMoKTsKKyAgICBBbmltYXRpb25D
b2xsZWN0aW9uJiB0cmFuc2l0aW9ucygpOworICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVk
QnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmKTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNp
dGlvbk1hcCYgY29tcGxldGVkVHJhbnNpdGlvbkJ5UHJvcGVydHkoKTsKKyAgICBQcm9wZXJ0eVRv
VHJhbnNpdGlvbk1hcCYgcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOworCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudChib29sKTsKQEAgLTcwNSw2ICs3MTUsOSBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJl
RGF0YSogZWxlbWVudFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKTsKIAorICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5p
bWF0aW9uUmFyZURhdGEoKSBjb25zdDsKKyAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKCk7CisKICAgICB2aXJ0dWFsIGludCBkZWZhdWx0VGFiSW5k
ZXgoKSBjb25zdDsKIAogICAgIHZvaWQgZGV0YWNoQWxsQXR0ck5vZGVzRnJvbUVsZW1lbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBiN2E2ODYzNTNkN2M2ODg0OWEy
MmJiNmY5ODEwZTBlZjZlMjNiNDkwLi5mY2NhYjUxMTczNDgyMWE0YmQ2ZWNjMGEwNjM4M2FmZTIw
NGQ5ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKICNpbmNsdWRlICJE
T01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEYXRhc2V0RE9NU3RyaW5nTWFwLmgiCisjaW5jbHVk
ZSAiRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdFN0YWNrLmgiCiAjaW5jbHVkZSAiTmFt
ZWROb2RlTWFwLmgiCkBAIC0xMDEsOCArMTAyLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ1NT
QW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDU1NBbmltYXRpb247IH0KICAgICB2b2lk
IHNldEhhc0NTU0FuaW1hdGlvbihib29sIHZhbHVlKSB7IG1faGFzQ1NTQW5pbWF0aW9uID0gdmFs
dWU7IH0KIAotICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSB7
IHJldHVybiBtX2tleWZyYW1lRWZmZWN0U3RhY2suZ2V0KCk7IH0KLSAgICB2b2lkIHNldEtleWZy
YW1lRWZmZWN0U3RhY2soc3RkOjp1bmlxdWVfcHRyPEtleWZyYW1lRWZmZWN0U3RhY2s+JiYga2V5
ZnJhbWVFZmZlY3RTdGFjaykgeyBtX2tleWZyYW1lRWZmZWN0U3RhY2sgPSBXVEZNb3ZlKGtleWZy
YW1lRWZmZWN0U3RhY2spOyB9CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBlbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVEYXRhLmdldCgpOyB9
CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgp
OwogCiAgICAgYm9vbCBoYXNFbGVtZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faGFz
RWxlbWVudElkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldEhhc0VsZW1lbnRJZGVudGlmaWVyKGJv
b2wgdmFsdWUpIHsgbV9oYXNFbGVtZW50SWRlbnRpZmllciA9IHZhbHVlOyB9CkBAIC0xNTgsNiAr
MTU5LDggQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIGlmIChtX2JlZm9yZVBzZXVkb0VsZW1l
bnQgfHwgbV9hZnRlclBzZXVkb0VsZW1lbnQpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5
cGU6OlBzZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgaWYgKG1fYW5pbWF0aW9uUmFyZURhdGEpCisg
ICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OkFuaW1hdGlvbnMpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgpAQCAtMTkwLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlc2l6ZU9ic2VydmVyRGF0YT4gbV9yZXNpemVPYnNlcnZlckRh
dGE7CiAjZW5kaWYKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlmcmFtZUVmZmVjdFN0YWNrPiBt
X2tleWZyYW1lRWZmZWN0U3RhY2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRp
b25SYXJlRGF0YT4gbV9hbmltYXRpb25SYXJlRGF0YTsKIAogICAgIFJlZlB0cjxQc2V1ZG9FbGVt
ZW50PiBtX2JlZm9yZVBzZXVkb0VsZW1lbnQ7CiAgICAgUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IG1f
YWZ0ZXJQc2V1ZG9FbGVtZW50OwpAQCAtMjQ5LDQgKzI1MiwxMSBAQCBpbmxpbmUgdm9pZCBFbGVt
ZW50UmFyZURhdGE6OnJlc2V0U3R5bGVSZWxhdGlvbnMoKQogICAgIHNldENoaWxkSW5kZXgoMCk7
CiB9CiAKK2lubGluZSBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIEVsZW1lbnRSYXJlRGF0YTo6
ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKQoreworICAgIGlmICghbV9hbmltYXRpb25SYXJlRGF0
YSkKKyAgICAgICAgbV9hbmltYXRpb25SYXJlRGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhPigpOworICAgIHJldHVybiAqbV9hbmltYXRpb25SYXJlRGF0YS5nZXQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGI3YWYxNGQx
YzBiNGNiZmRmNjg5Y2UyODQwMzAyOTk1YjRiMzQ2NDEuLjhjNDU2MGY0ZTUwNDY4MTE5YzFmZDZm
Y2ZiM2IwZjQyNGE1Y2FmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTEyOCw2ICsxMjgsOCBAQCBz
dGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yUmFyZURhdGFVc2VUeXBlKE5vZGVSYXJlRGF0YTo6
VXNlVHlwZSB1c2VUeXBlKQogICAgICAgICByZXR1cm4gIkludGVyYWN0aW9uT2JzZXJ2ZXIiOwog
ICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpQc2V1ZG9FbGVtZW50czoKICAgICAgICAg
cmV0dXJuICJQc2V1ZG9FbGVtZW50cyI7CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6
OkFuaW1hdGlvbnM6CisgICAgICAgIHJldHVybiAiQW5pbWF0aW9ucyI7CiAgICAgfQogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDI3MTJkMWU2
ZDU3YzU2YmFlYTJjZDQ5NjFkMzEyMzVlZGViMmQzZWEuLjRiZGIxMjYyMmNmZDg2ZTkyNjQyNTNi
YWUzOGVjOWFlY2YwMWQ1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI0OCw3
ICsyNDgsNiBAQCBwdWJsaWM6CiAgICAgICAgIENvbm5lY3RlZEZyYW1lQ291bnQgPSAxIDw8IDAs
CiAgICAgICAgIE5vZGVMaXN0ID0gMSA8PCAxLAogICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0g
MSA8PCAyLAotCiAgICAgICAgIFRhYkluZGV4ID0gMSA8PCAzLAogICAgICAgICBNaW5pbXVtU2l6
ZSA9IDEgPDwgNCwKICAgICAgICAgU2Nyb2xsaW5nUG9zaXRpb24gPSAxIDw8IDUsCkBAIC0yNjAs
NiArMjU5LDcgQEAgcHVibGljOgogICAgICAgICBBdHRyaWJ1dGVNYXAgPSAxIDw8IDExLAogICAg
ICAgICBJbnRlcmFjdGlvbk9ic2VydmVyID0gMSA8PCAxMiwKICAgICAgICAgUHNldWRvRWxlbWVu
dHMgPSAxIDw8IDEzLAorICAgICAgICBBbmltYXRpb25zID0gMSA8PCAxNCwKICAgICB9OwogI2Vu
ZGlmCiAK
</data>
<flag name="review"
          id="408627"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>