<?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>211787</bug_id>
          
          <creation_ts>2020-05-12 10:45:02 -0700</creation_ts>
          <short_desc>Perspective should not be affected by transform-origin</short_desc>
          <delta_ts>2022-05-21 16:17:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>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=211828</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>
          <dependson>237554</dependson>
    
    <dependson>237701</dependson>
          <blocked>90738</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651805</commentid>
    <comment_count>0</comment_count>
      <attachid>399143</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-12 10:45:02 -0700</bug_when>
    <thetext>Created attachment 399143
Test

Transform origin affects perspective, and should not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651806</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-12 10:45:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/63143806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652119</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-12 21:57:26 -0700</bug_when>
    <thetext>This also affects perspective on scrollers with visible scrollbars.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858031</commentid>
    <comment_count>3</comment_count>
      <attachid>456620</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-04 13:38:19 -0700</bug_when>
    <thetext>Created attachment 456620
Patch, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858032</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-04 13:40:30 -0700</bug_when>
    <thetext>For LBSE I need proper transform-box/origin support for both composited &amp; non-composited element. Therefore I gave this a shot: looks promising, perspective is no longer dependent on the transform-origin/transform-box.

This depends on the earlier cleanup patches from bugs 237554, 237701. I can mark this for review, once they were landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858117</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-04 15:32:46 -0700</bug_when>
    <thetext>- &apos;perspective-origin&apos; &lt;length&gt; values are now resolved against the &apos;transform reference box&apos; (== the reference box according to &apos;transform-box&apos;, e.g. content-box / view-box / border-box / ...). Until now we&apos;ve always used &apos;border-box&apos;.

- Teach RenderLayerBacking about &apos;transform-box&apos;: composited elements ignored &apos;transform-box&apos; so far, when computing the anchor points that encode &apos;transform-origin&apos; information as relative values.

- Update the GraphicsLayer geometry upon &apos;transform-box&apos; changes (fixes 
&apos;transform-box&apos; animations, covered by a new WPT test).

- The computed perspective transformation, that is applied to children of an element that defines a CSS &apos;perspective&apos;, is now invariant under &apos;transform-origin&apos; / &apos;transform-box&apos; changes. This now matches Blink/Gecko behaviour.

Blink/Gecko currently do not support e.g. &apos;content-box&apos; as value for &apos;transform-box&apos; -- other than that our compositing + perspective/scrolling/transform-box testcases now match between Safari/Firefox/Chromium, however only WebKit provides proper &apos;content-box&apos; support.

This aligns our support for composited / non-composited elements (assigning &apos;will-change: transform&apos; to elements that specify a non-default &apos;transform-box&apos; no longer leads to surprises as in &apos;why does the element jump from its nominal position when compositing is active&apos;)

...


I think we should re-sync /css/css-transforms WPT tests first, to assess the current WPT CSS transforms state and how this patch affects WPT results -- I have had issues with a fresh WPT sync (hundreds of failures without this patch applied, so that needs to be checked first, I did not investigate yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858605</commentid>
    <comment_count>6</comment_count>
      <attachid>456755</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-05 15:00:51 -0700</bug_when>
    <thetext>Created attachment 456755
Patch, v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859488</commentid>
    <comment_count>7</comment_count>
      <attachid>456980</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-07 16:06:39 -0700</bug_when>
    <thetext>Created attachment 456980
Patch, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859489</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-07 16:07:10 -0700</bug_when>
    <thetext>Now that both 237554 and 237701 are in, it&apos;s tempting to see what EWS thinks about the patch :-) Let&apos;s try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859655</commentid>
    <comment_count>9</comment_count>
      <attachid>457041</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-08 03:56:47 -0700</bug_when>
    <thetext>Created attachment 457041
Patch, v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860159</commentid>
    <comment_count>10</comment_count>
      <attachid>457214</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-10 15:57:37 -0700</bug_when>
    <thetext>Created attachment 457214
Patch, v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860163</commentid>
    <comment_count>11</comment_count>
      <attachid>457215</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-10 16:04:53 -0700</bug_when>
    <thetext>Created attachment 457215
Patch, v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860267</commentid>
    <comment_count>12</comment_count>
      <attachid>457251</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-11 05:58:26 -0700</bug_when>
    <thetext>Created attachment 457251
Patch, v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862848</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-20 00:55:02 -0700</bug_when>
    <thetext>Simon, did you have any chance to have a look at it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867127</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-05-06 01:18:44 -0700</bug_when>
    <thetext>Yikes, it&apos;s pending review since almost a month.... all experts busy? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869386</commentid>
    <comment_count>15</comment_count>
      <attachid>457251</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-16 13:29:10 -0700</bug_when>
    <thetext>Comment on attachment 457251
Patch, v7

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:1815
&gt; +    // To circumvent this, explicitely remove the transform-origin dependency in the perspective matrix.
&gt; +    auto transformOrigin = transformOriginForPainting();

If this function isn&apos;t returning the &quot;perspectiveTransform&quot;, but rather something that makes assumptions about platform-specific rendering, perhaps it needs to be renamed?

&gt; Source/WebCore/rendering/RenderLayer.cpp:1824
&gt; +FloatPoint3D RenderLayer::transformOriginForPainting() const

Unclear how this relates to the other kind of &quot;transform origin&quot;. Is it just about snapping?

&gt; Source/WebCore/rendering/RenderLayer.h:743
&gt;      // Note that this transform has the perspective-origin baked in.

Is this comment still accurate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869960</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-05-18 05:10:01 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #15)
&gt; Comment on attachment 457251 [details]
&gt; Patch, v7
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457251&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1815
&gt; &gt; +    // To circumvent this, explicitely remove the transform-origin dependency in the perspective matrix.
&gt; &gt; +    auto transformOrigin = transformOriginForPainting();
&gt; 
&gt; If this function isn&apos;t returning the &quot;perspectiveTransform&quot;, but rather
&gt; something that makes assumptions about platform-specific rendering, perhaps
&gt; it needs to be renamed?
It&apos;s still the &quot;vanilla&quot; perspective transform matrix, plus an additional component that embeds it into the parent coordinate system, and that is indeed platform-dependent, as you pointed out -- however consistent for all our platforms at present.

How about re-using the GraphicsLayer terminology and call it &quot;childrenTransform()&quot;? 
I&apos;ll try that.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1824
&gt; &gt; +FloatPoint3D RenderLayer::transformOriginForPainting() const
&gt; 
&gt; Unclear how this relates to the other kind of &quot;transform origin&quot;. Is it just
&gt; about snapping?
Yeah, it snaps, if necessary.
How about &quot;transformOriginPixelSnappedIfNeeded&quot;? I&apos;ll go for that for now.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.h:743
&gt; &gt;      // Note that this transform has the perspective-origin baked in.
&gt; 
&gt; Is this comment still accurate?
Yeah, we removed the transform-origin dependency, but perspective-origin is still included (and that&apos;s ok).

I will upload the new iteration of this patch as GitHub PR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869961</commentid>
    <comment_count>17</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-05-18 05:13:42 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870973</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-21 16:17:25 -0700</bug_when>
    <thetext>Committed r294615 (250841@main): &lt;https://commits.webkit.org/250841@main&gt;

Reviewed commits have been landed. Closing PR #720 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>399143</attachid>
            <date>2020-05-12 10:45:02 -0700</date>
            <delta_ts>2020-05-12 10:45:02 -0700</delta_ts>
            <desc>Test</desc>
            <filename>perspective-transform-box.html</filename>
            <type>text/html</type>
            <size>2566</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxzdHlsZT4KICAgICAgICAuY29udGFp
bmVyIHsKICAgICAgICAgICAgd2lkdGg6IDIwMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDIwMHB4
OwogICAgICAgICAgICBtYXJnaW46IDIwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogc2lsdmVyOwogICAgICAgICAgICBw
b3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHBlcnNwZWN0aXZlOiA1MDBweDsKICAgICAg
ICAgICAgYm94LXNoYWRvdzogMjBweCAyMHB4IDIwcHggYmxhY2s7CiAgICAgICAgfQogICAgICAg
IAogICAgICAgIC5jb250YWluZXI6aG92ZXIgewogICAgICAgICAgICBib3gtc2hhZG93OiAyMHB4
IDIwcHggMjBweCBibGFjazsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogVHJhbnNmb3Jt
ZWQgdG8gYmUgZWRnZS1vbiwgYW5kIHRoZXJlZm9yZSBpbnZpc2libGUgKi8KICAgICAgICAuYW5n
bGVkIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7
CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAg
ICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgICAg
ICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDkwZGVnKTsKLyogICAgICAgICAgICB0cmFuc2Zvcm0t
b3JpZ2luOiB0b3AgbGVmdDsqLwogICAgICAgIH0KCiAgICAgICAgLmFuZ2xlZC52ZXJ0aWNhbCB7
CiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCg5MGRlZyk7Ci8qICAgICAgICAgICAgdHJh
bnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7Ki8KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+
Cjxib2R5PgogICAgPCEtLSA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIDxkaXYgY2xh
c3M9ImFuZ2xlZCI+PC9kaXY+CiAgICA8L2Rpdj4gLS0+CiAgICA8ZGl2IGNsYXNzPSJjb250YWlu
ZXIiIHN0eWxlPSJ0cmFuc2Zvcm0tYm94OiBib3JkZXItYm94OyBib3JkZXItbGVmdDogNTBweCBz
b2xpZCBibGFjazsgYm9yZGVyLXRvcDogNTBweCBzb2xpZCBibGFjazsgcGVyc3BlY3RpdmUtb3Jp
Z2luOiAxNTBweCAxNTBweDsgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7Ij4KICAgICAgICA8
ZGl2IGNsYXNzPSJhbmdsZWQiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFuZ2xlZCB2ZXJ0
aWNhbCI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9
InRyYW5zZm9ybS1ib3g6IGJvcmRlci1ib3g7IGJvcmRlci1sZWZ0OiA1MHB4IHNvbGlkIGJsYWNr
OyBib3JkZXItdG9wOiA1MHB4IHNvbGlkIGJsYWNrOyBwZXJzcGVjdGl2ZS1vcmlnaW46IDE1MHB4
IDE1MHB4Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJhbmdsZWQiPjwvZGl2PgogICAgICAgIDxkaXYg
Y2xhc3M9ImFuZ2xlZCB2ZXJ0aWNhbCI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS0KICAgIDxk
aXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9InRyYW5zZm9ybS1ib3g6IHZpZXctYm94OyBib3Jk
ZXItbGVmdDogNTBweCBzb2xpZCBibGFjazsgYm9yZGVyLXRvcDogNTBweCBzb2xpZCBibGFjazsg
cGVyc3BlY3RpdmUtb3JpZ2luOiAxNTBweCAxNTBweCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYW5n
bGVkIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhbmdsZWQgdmVydGljYWwiPjwvZGl2Pgog
ICAgPC9kaXY+IC0tPgoKICAgIDwhLS0gPGRpdiBjbGFzcz0iY29udGFpbmVyIiBzdHlsZT0idHJh
bnNmb3JtLWJveDogY29udGVudC1ib3g7IGJvcmRlci1yaWdodDogNTBweCBzb2xpZCBibGFjazsg
Ym9yZGVyLWJvdHRvbTogNTBweCBzb2xpZCBibGFjazsgcGVyc3BlY3RpdmUtb3JpZ2luOiB0b3Ag
bGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYW5nbGVkIj48L2Rpdj4KICAgICAgICA8ZGl2IGNs
YXNzPSJhbmdsZWQgdmVydGljYWwiPjwvZGl2PgogICAgPC9kaXY+IC0tPgoKICAgIDwhLS0gPGRp
diBjbGFzcz0iY29udGFpbmVyIiBzdHlsZT0idHJhbnNmb3JtLWJveDogY29udGVudC1ib3g7IGJv
cmRlci1sZWZ0OiA1MHB4IHNvbGlkIGJsYWNrOyBib3JkZXItdG9wOiA1MHB4IHNvbGlkIGJsYWNr
OyBwZXJzcGVjdGl2ZS1vcmlnaW46IDEwMHB4IDEwMHB4Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJh
bmdsZWQiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFuZ2xlZCB2ZXJ0aWNhbCI+PC9kaXY+
CiAgICA8L2Rpdj4gLS0+CiAgICA8IS0tIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9InRy
YW5zZm9ybS1ib3g6IGZpbGwtYm94OyBib3JkZXItbGVmdDogNTBweCBzb2xpZCBibGFjazsgYm9y
ZGVyLXRvcDogNTBweCBzb2xpZCBibGFjazsgcGVyc3BlY3RpdmUtb3JpZ2luOiAxNTBweCAxNTBw
eCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYW5nbGVkIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNz
PSJhbmdsZWQgdmVydGljYWwiPjwvZGl2PgogICAgPC9kaXY+IC0tPgoKPC9ib2R5Pgo8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456620</attachid>
            <date>2022-04-04 13:38:19 -0700</date>
            <delta_ts>2022-04-05 15:00:46 -0700</delta_ts>
            <desc>Patch, v1</desc>
            <filename>bug-211787-20220404133818.patch</filename>
            <type>text/plain</type>
            <size>35508</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwZjU2Y2YyOTQ5MzFj
YjUyMzQ2Mzk5YTFjMzdjM2VmYjg4ZjgzZS4uZjEyZjQzMWVmMzBhN2JhMjgwZDc4NGZmZDUwNGZh
NjYxNjBiMDJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTA0LTA0ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybUZyb21T
dHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVU
cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnRyYW5zZm9y
bU9yaWdpbkZvclBhaW50aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwZXJzcGVjdGl2ZU9yaWdpbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3Jt
QW5kQW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpj
b21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlY29tcG9zaXRl
Q2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRl
UGVyc3BlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmFwcGx5UGVyc3BlY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjp1bmFwcGx5VHJhbnNmb3JtT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojph
bmltYXRlZExvY2FsVHJhbnNmb3JtIGNvbnN0KToKKwogMjAyMi0wNC0wNCAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbTEJTRV0gQWN0aXZh
dGUgU1ZHIHRyYW5zZm9ybSBzdXBwb3J0IHRocm91Z2ggbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCBkODQxMWM5M2U0NzcwMmY1NjdhZDYx
NDAzNjZlY2U3NjYzNWMwNDVmLi5kNTBhYTcxYmIxODA1ZjQxZTQwZDJhZmZjZWQ3Y2MxMDZmMmJi
ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAg
LTE5OTcsNyArMTk5Nyw3IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVUcmFuc2Zvcm1l
ZEV4dGVudFZpYVRyYW5zZm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiByCiAKICAgICBib29sIGFw
cGx5VHJhbnNmb3JtT3JpZ2luID0gY29udGFpbnNSb3RhdGlvbihzdHlsZS50cmFuc2Zvcm0oKS5v
cGVyYXRpb25zKCkpIHx8IHN0eWxlLnRyYW5zZm9ybSgpLmFmZmVjdGVkQnlUcmFuc2Zvcm1Pcmln
aW4oKTsKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgdHJhbnNmb3Jt
T3JpZ2luID0gcmVuZGVyZXJCb3gubG9jYXRpb24oKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2lu
dChzdHlsZS50cmFuc2Zvcm1PcmlnaW5YWSgpLCByZW5kZXJlckJveC5zaXplKCkpOworICAgICAg
ICB0cmFuc2Zvcm1PcmlnaW4gPSBzdHlsZS5jb21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVy
Qm94KS54eSgpOwogICAgICAgICAvLyBJZ25vcmUgdHJhbnNmb3JtT3JpZ2luWiBiZWNhdXNlIHdl
J2xsIGJhaWwgaWYgd2UgZW5jb3VudGVyIGFueSAzRCB0cmFuc2Zvcm1zLgogICAgICAgICBmbG9h
dEJvdW5kcy5tb3ZlQnkoLXRyYW5zZm9ybU9yaWdpbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYTcxOTdkODM5NWFhZTQ3MDZmZDI3MTM3NjAy
OTk3MzljNDllNGI1Yy4uYjU5MTkwNmEyMDYxN2UxMGU2YzQ5MjlhYzk1NDEzZDAxNTIzZjZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMzIxLDYgKzEz
MjEsMTUgQEAgRmxvYXRSZWN0IFJlbmRlckxheWVyOjpyZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRp
bmcoQ1NTQm94VHlwZSBib3hUeXBlLCBjb25zdCBMYXkKICAgICByZXR1cm4gc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhMYXlvdXRSZWN0KHJlZmVyZW5jZUJveFJlY3QoYm94VHlwZSwgb2Zmc2V0RnJv
bVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcykpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CiB9CiAKK0Zsb2F0UmVjdCBSZW5kZXJMYXllcjo6dHJhbnNmb3JtUmVm
ZXJlbmNlQm94UmVjdChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8gcmVmZXJlbmNlQm94UmVjdCA9IHJlbmRlcmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94
RmxvYXRSZWN0KHN0eWxlKSkKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUJveFJlY3QudmFsdWUo
KTsKKyAgICBpZiAoYXV0byByZWZlcmVuY2VCb3hSZWN0ID0gcmVuZGVyZXIoKS50cmFuc2Zvcm1S
ZWZlcmVuY2VCb3hMYXlvdXRSZWN0KHN0eWxlKSkKKyAgICAgICAgcmV0dXJuIHJlZmVyZW5jZUJv
eFJlY3QudmFsdWUoKTsKKyAgICByZXR1cm4geyB9OworfQorCiBGbG9hdFJlY3QgUmVuZGVyTGF5
ZXI6OnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3RGb3JQYWludGluZyhjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8gcmVmZXJlbmNlQm94UmVjdCA9IHJlbmRl
cmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94RmxvYXRSZWN0KHN0eWxlKSkKQEAgLTEzMzIsNyAr
MTM0MSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJMYXllcjo6dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVj
dEZvclBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZVRyYW5zZm9ybUZyb21TdHlsZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIHJlbmRlcmVyKCkuYXBwbHlU
cmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCBzdHlsZSwgdHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdEZv
clBhaW50aW5nKHN0eWxlKSwgb3B0aW9ucyk7CisgICAgcmVuZGVyZXIoKS5hcHBseVRyYW5zZm9y
bSh0cmFuc2Zvcm0sIHN0eWxlLCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRpbmco
c3R5bGUpLCBvcHRpb25zKTsKICAgICBtYWtlTWF0cml4UmVuZGVyYWJsZSh0cmFuc2Zvcm0sIGNh
blJlbmRlcjNEVHJhbnNmb3JtcygpKTsKIH0KIApAQCAtMTc5Myw0NSArMTgwMiw2OCBAQCBib29s
IFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKE9wdGlvblNldDxVcGRhdGVMYXllclBv
c2l0aW9uc0ZsYWc+KiBmbGFncwogICAgIHJldHVybiBwb3NpdGlvbk9yT2Zmc2V0Q2hhbmdlZDsK
IH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNm
b3JtKGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVjdCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0
cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUU6IFtMQlNFXSBVcHN0cmVhbSB0cmFuc2Zvcm0gc3VwcG9ydCBmb3IgUmVuZGVyU1ZHTW9k
ZWxPYmplY3QgZGVyaXZlZCByZW5kZXJlcnMKLSAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVy
ZXIoKSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3du
Y2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpOwotICAgIGlmICghcmVuZGVyQm94Lmhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKQorICAgIGlmICghcmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm1S
ZWxhdGVkUHJvcGVydHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGNvbnN0IGF1dG8m
IHN0eWxlID0gcmVuZGVyQm94LnN0eWxlKCk7CisgICAgY29uc3QgYXV0byYgc3R5bGUgPSByZW5k
ZXJlcigpLnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZS5oYXNQZXJzcGVjdGl2ZSgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlckJveC5k
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgYXV0byByZWZlcmVuY2VCb3hSZWN0
Rm9yUGFpbnRpbmcgPSB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRpbmcoc3R5bGUp
OwotICAgIC8vIEZJWE1FOiBbTEJTRV0gQXZvaWQgcGl4ZWwgc25hcHBpbmcgaW4gU1ZHIHN1YnRy
ZWUuCi0gICAgYXV0byBzbmFwcGVkTGF5ZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhs
YXllclJlY3QsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBhdXRvIHRyYW5zZm9ybVJlZmVyZW5j
ZUJveFJlY3QgPSB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRpbmcoc3R5bGUpOwor
ICAgIGF1dG8gcGVyc3BlY3RpdmVPcmlnaW4gPSBzdHlsZS5jb21wdXRlUGVyc3BlY3RpdmVPcmln
aW4odHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCk7CisKKyAgICAvLyBJbiB0aGUgcmVndWxhciBj
YXNlIG9mIGEgbm9uLWNsaXBwZWQsIG5vbi1zY3JvbGxlZCBHcmFwaGljc0xheWVyLCBhbGwgdHJh
bnNmb3JtYXRpb25zCisgICAgLy8gKHZpYSBDU1MgJ3RyYW5zZm9ybScgLyAncGVyc3BlY3RpdmUn
KSBhcmUgYXBwbGllZCB3aXRoIHJlc3BlY3QgdG8gYSBwcmVkZWZpbmVkIGFuY2hvciBwb2ludCwK
KyAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gQ1NTICd0cmFuc2Zvcm0tYm94JyAv
ICd0cmFuc2Zvcm0tb3JpZ2luJyBwcm9wZXJ0aWVzLgorICAgIC8vCisgICAgLy8gQSB0cmFuc2Zv
cm1hdGlvbiBnaXZlbiBieSB0aGUgQ1NTICd0cmFuc2Zvcm0nIHByb3BlcnR5IGlzIGFwcGxpZWQs
IGJ5IHRyYW5zbGF0aW5nCisgICAgLy8gdG8gdGhlICd0cmFuc2Zvcm0gb3JpZ2luJywgYXBwbHlp
bmcgdGhlIHRyYW5zZm9ybWF0aW9uLCBhbmQgdHJhbnNsYXRpbmcgYmFjay4KKyAgICAvLyBXaGVu
IGFuIGVsZW1lbnQgc3BlY2lmaWVzIGEgQ1NTICdwZXJzcGVjdGl2ZScgcHJvcGVydHksIHRoZSBw
ZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgKKyAgICAvLyB0aGF0J3MgY29tcHV0ZWQg
aGVyZSBpcyBwcm9wYWdhdGVkIHRvIHRoZSBHcmFwaGljc0xheWVyIGJ5IGNhbGxpbmcgc2V0Q2hp
bGRyZW5UcmFuc2Zvcm0oKS4KKyAgICAvLworICAgIC8vIEhvd2V2ZXIgdGhlIEdyYXBoaWNzTGF5
ZXIgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIChlLmcuIENBIG9uIG1hY09TKSBhcHBseSB0aGUg
Y2hpbGRyZW4gdHJhbnNmb3JtLAorICAgIC8vIGRlZmluZWQgb24gdGhlIHBhcmVudCwgd2l0aCBy
ZXNwZWN0IHRvIHRoZSBhbmNob3IgcG9pbnQgb2YgdGhlIHBhcmVudCwgd2hlbiByZW5kZXJpbmcg
Y2hpbGQgZWxlbWVudHMuCisgICAgLy8gVGhpcyBpcyB3cm9uZywgYXMgdGhlIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIChhcHBsaWVkIHRvIGEgY2hpbGQgb2YgdGhlIGVsZW1lbnQgZGVmaW5p
bmcgdGhlCisgICAgLy8gM2QgZWZmZWN0KSwgbXVzdCBiZSBpbmRlcGVuZGFudCBvZiB0aGUgY2hv
c2VuIHRyYW5zZm9ybS1vcmlnaW4gKHRoZSBwYXJlbnRzIHRyYW5zZm9ybSBvcmlnaW4KKyAgICAv
LyBtdXN0IG5vdCBhZmZlY3QgaXRzIGNoaWxkcmVuKS4KKyAgICAvLworICAgIC8vIFRvIGNpcmN1
bXZlbnQgdGhpcywgZXhwbGljaXRlbHkgcmVtb3ZlIHRoZSB0cmFuc2Zvcm0tb3JpZ2luIGRlcGVu
ZGVuY3kgaW4gdGhlIHBlcnNwZWN0aXZlIG1hdHJpeC4KKyAgICBhdXRvIHRyYW5zZm9ybU9yaWdp
biA9IHRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CiAKLSAgICBhdXRvIHBlcnNwZWN0aXZl
T3JpZ2luID0gcmVmZXJlbmNlQm94UmVjdEZvclBhaW50aW5nLmxvY2F0aW9uKCkgLSB0b0Zsb2F0
U2l6ZShzbmFwcGVkTGF5ZXJSZWN0LmxvY2F0aW9uKCkpICsgZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHN0eWxlLnBlcnNwZWN0aXZlT3JpZ2luKCksIHJlZmVyZW5jZUJveFJlY3RGb3JQYWludGlu
Zy5zaXplKCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICBzdHls
ZS51bmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgdHJhbnNmb3JtT3JpZ2luKTsKKyAg
ICBzdHlsZS5hcHBseVBlcnNwZWN0aXZlKHRyYW5zZm9ybSwgcmVuZGVyZXIoKSwgcGVyc3BlY3Rp
dmVPcmlnaW4pOworICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgdHJh
bnNmb3JtT3JpZ2luKTsKKyAgICByZXR1cm4gdHJhbnNmb3JtOworfQogCi0gICAgLy8gQSBwZXJz
cGVjdGl2ZSBvcmlnaW4gb2YgMCwwIG1ha2VzIHRoZSB2YW5pc2hpbmcgcG9pbnQgaW4gdGhlIGNl
bnRlciBvZiB0aGUgZWxlbWVudC4KLSAgICAvLyBXZSB3YW50IGl0IHRvIGJlIGluIHRoZSB0b3At
bGVmdCwgc28gc3VidHJhY3QgaGFsZiB0aGUgaGVpZ2h0IGFuZCB3aWR0aC4KLSAgICBwZXJzcGVj
dGl2ZU9yaWdpbiAtPSBzbmFwcGVkTGF5ZXJSZWN0LnNpemUoKSAvIDIuMGY7CitGbG9hdFBvaW50
M0QgUmVuZGVyTGF5ZXI6OnRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCkgY29uc3QKK3sKKyAg
ICBpZiAoIXJlbmRlcmVyKCkuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCisgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgIHQudHJhbnNs
YXRlKHBlcnNwZWN0aXZlT3JpZ2luLngoKSwgcGVyc3BlY3RpdmVPcmlnaW4ueSgpKTsKLSAgICB0
LmFwcGx5UGVyc3BlY3RpdmUoc3R5bGUudXNlZFBlcnNwZWN0aXZlKHJlbmRlcmVyKCkpKTsKLSAg
ICB0LnRyYW5zbGF0ZSgtcGVyc3BlY3RpdmVPcmlnaW4ueCgpLCAtcGVyc3BlY3RpdmVPcmlnaW4u
eSgpKTsKKyAgICBjb25zdCBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKIAotICAg
IHJldHVybiB0OworICAgIGlmIChhdXRvIHJlZmVyZW5jZUJveFJlY3QgPSByZW5kZXJlcigpLnRy
YW5zZm9ybVJlZmVyZW5jZUJveExheW91dFJlY3Qoc3R5bGUpKSB7CisgICAgICAgIGF1dG8gb3Jp
Z2luID0gc3R5bGUuY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihyZWZlcmVuY2VCb3hSZWN0LnZhbHVl
KCkpOworICAgICAgICBvcmlnaW4uc2V0WFkocm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKExheW91
dFBvaW50KG9yaWdpbi54eSgpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKKyAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICB9CisKKyAgICBpZiAoYXV0byBy
ZWZlcmVuY2VCb3hSZWN0ID0gcmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hGbG9hdFJl
Y3Qoc3R5bGUpKQorICAgICAgICByZXR1cm4gc3R5bGUuY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihy
ZWZlcmVuY2VCb3hSZWN0LnZhbHVlKCkpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIHsgfTsKIH0KIAogRmxvYXRQb2ludCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVP
cmlnaW4oKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm1SZWxhdGVk
UHJvcGVydHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAvLyBGSVhNRTogVGhpcyB1c2Vz
IHRoZSB3cm9uZywgdHJhbnNmb3JtLWJveCB1bmF3YXJlLCBnZW9tZXRyeS4KLSAgICByZXR1cm4g
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9y
aWdpbigpLCByZW5kZXJlckJvcmRlckJveFJlY3QoKS5zaXplKCkpOworICAgIHJldHVybiBmbG9h
dFBvaW50Rm9yTGVuZ3RoUG9pbnQocmVuZGVyZXIoKS5zdHlsZSgpLnBlcnNwZWN0aXZlT3JpZ2lu
KCksIHRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QocmVuZGVyZXIoKS5zdHlsZSgpKS5zaXplKCkp
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb250YWluZXJGb3JQb3NpdGlvbmVkKFJlbmRl
ckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBlIHBvc2l0aW9uLCBib29sIGVzdGFibGlzaGVzVG9w
TGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDY3YjY4M2Q1
NTk5MTA0NjA2ODM0MWI1ODU4OTFkMTMwYzExY2E3NzcuLmZmYzEzNDZmYTM3ZmNlM2E5ZWZkNjg4
Y2QwZTA3NmRlNDBhMDkzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CkBAIC03MDIsNiArNzAyLDggQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3hS
ZWN0KENTU0JveFR5cGUsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBM
YXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMpIGNvbnN0OwogICAgIC8vIERldmljZSBwaXhl
bCBzbmFwcGVkICdyZWZlcmVuY2UgYm94JyBhY2NvcmRpbmcgdG8gQ1NTIFRyYW5zZm9ybXMgTW9k
dWxlIExldmVsIDEuCiAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveFJlY3RGb3JQYWludGluZyhD
U1NCb3hUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3QgTGF5b3V0
UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzKSBjb25zdDsKKyAgICAvLyAndHJhbnNmb3JtIHJlZmVy
ZW5jZSBib3gnIGFjY29yZGluZyB0byBDU1MgVHJhbnNmb3JtcyBNb2R1bGUgTGV2ZWwgMS4KKyAg
ICBGbG9hdFJlY3QgdHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0OwogICAgIC8vIERldmljZSBwaXhlbCBzbmFwcGVkICd0cmFuc2Zvcm0gcmVmZXJlbmNl
IGJveCcgYWNjb3JkaW5nIHRvIENTUyBUcmFuc2Zvcm1zIE1vZHVsZSBMZXZlbCAxLgogICAgIEZs
b2F0UmVjdCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRpbmcoY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdDsKIApAQCAtNzQyLDEwICs3NDQsMTEgQEAgcHVibGljOgogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHJlbmRlcmFibGVUcmFuc2Zvcm0oT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+KSBjb25zdDsKICAgICAKICAgICAvLyBHZXQgdGhlIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSwg
d2hpY2ggaXMgYXBwbGllZCB0byB0cmFuc2Zvcm1lZCBzdWJsYXllcnMuCi0gICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSAtd2Via2l0LXBlcnNwZWN0aXZlLgorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgbGF5ZXIgaGFzIGEgcGVyc3BlY3RpdmUuCiAgICAgLy8gTm90ZSB0
aGF0IHRoaXMgdHJhbnNmb3JtIGhhcyB0aGUgcGVyc3BlY3RpdmUtb3JpZ2luIGJha2VkIGluLgot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBlcnNwZWN0aXZlVHJhbnNmb3JtKGNvbnN0IExheW91
dFJlY3QmIGxheWVyUmVjdCkgY29uc3Q7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3Bl
Y3RpdmVUcmFuc2Zvcm0oKSBjb25zdDsKICAgICBGbG9hdFBvaW50IHBlcnNwZWN0aXZlT3JpZ2lu
KCkgY29uc3Q7CisgICAgRmxvYXRQb2ludDNEIHRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCkg
Y29uc3Q7CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCku
c3R5bGUoKS5wcmVzZXJ2ZXMzRCgpOyB9CiAgICAgYm9vbCBoYXMzRFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNmb3JtICYmICFtX3RyYW5zZm9ybS0+aXNBZmZpbmUoKTsgfQogICAg
IGJvb2wgaGFzVHJhbnNmb3JtZWRBbmNlc3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVHJhbnNm
b3JtZWRBbmNlc3RvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCBjZTdlZjQyYzc3ODMwODdjNjgyMThiYTlhZjcwMjMwNTI0N2Fm
N2QxLi4wZGMwZmY5ZmYwYjExNWQ4M2VlMDA4OTY3ZWVlMDk0NjM0NGY2MzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNjM3LDE2
ICs2MzcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU9wYWNpdHkoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0T3BhY2l0eShjb21w
b3NpdGluZ09wYWNpdHkoc3R5bGUub3BhY2l0eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmKQordm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
Ci0gICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIG1fb3duaW5nTGF5ZXIudHJhbnNmb3JtKCks
IGJ1dCB0aGF0IGN1cnJlbnRseSBoYXMgdHJhbnNmb3JtLW9yaWdpbgotICAgIC8vIGJha2VkIGlu
dG8gaXQsIGFuZCB3ZSBkb24ndCB3YW50IHRoYXQuCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dDsKLSAgICBpZiAobV9vd25pbmdMYXllci5oYXNUcmFuc2Zvcm0oKSkgewotICAgICAgICAvLyBG
SVhNRTogVGhpcyB1c2VzIHRoZSB3cm9uZywgdHJhbnNmb3JtLWJveCB1bmF3YXJlLCBnZW9tZXRy
eS4KLSAgICAgICAgcmVuZGVyZXIoKS5hcHBseVRyYW5zZm9ybSh0LCByZW5kZXJlcigpLnN0eWxl
KCksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJv
eFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0eWxlOjppbmRpdmlkdWFsVHJh
bnNmb3JtT3BlcmF0aW9ucyk7Ci0gICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKHQsIGNvbXBv
c2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7Ci0gICAgfQorICAgIGlmIChtX293bmlu
Z0xheWVyLmhhc1RyYW5zZm9ybSgpKQorICAgICAgICBtX293bmluZ0xheWVyLnVwZGF0ZVRyYW5z
Zm9ybUZyb21TdHlsZSh0LCBzdHlsZSwgUmVuZGVyU3R5bGU6OmluZGl2aWR1YWxUcmFuc2Zvcm1P
cGVyYXRpb25zKTsKICAgICAKICAgICBpZiAobV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIpIHsK
ICAgICAgICAgbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXItPnNldFRyYW5zZm9ybSh0KTsKQEAg
LTY1NywyMCArNjUyLDI1IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zv
cm0oY29uc3QgUmVuZGVyU3R5bGUmKQogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JiBwcmltYXJ5
R3JhcGhpY3NMYXllclJlY3QsIExheW91dFNpemUgb2Zmc2V0RnJvbVBhcmVudEdyYXBoaWNzTGF5
ZXIpCiB7CisgICAgYXV0byBkZWZhdWx0QW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QgeyAwLjUs
IDAuNSwgMCB9OwogICAgIGlmICghcmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVy
dHkoKSkgewotICAgICAgICBhdXRvIGRlZmF1bHRBbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRCB7
IDAuNSwgMC41LCAwIH07CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QW5jaG9yUG9pbnQo
ZGVmYXVsdEFuY2hvclBvaW50KTsKICAgICAgICAgaWYgKG1fY29udGVudHNDb250YWlubWVudExh
eWVyKQogICAgICAgICAgICAgbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXItPnNldEFuY2hvclBv
aW50KGRlZmF1bHRBbmNob3JQb2ludCk7CiAKKyAgICAgICAgaWYgKG1fY2hpbGRDb250YWlubWVu
dExheWVyKQorICAgICAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5ZXItPnNldEFuY2hvclBv
aW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKKyAgICAgICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVy
TGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRBbmNob3JQb2lu
dChkZWZhdWx0QW5jaG9yUG9pbnQpOworCiAgICAgICAgIGlmIChtX3Njcm9sbGVkQ29udGVudHNM
YXllcikKICAgICAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRQcmVzZXJ2ZXMz
RChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBhdXRvIGRldmlj
ZVNjYWxlRmFjdG9yID0gdGhpcy0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBhdXRvIGJvcmRl
ckJveFJlY3QgPSBtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpOwotICAgIGF1
dG8gdHJhbnNmb3JtT3JpZ2luID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGJv
cmRlckJveFJlY3QpOworICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gbV9vd25pbmdMYXllci50
cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGluZygpOwogICAgIGF1dG8gbGF5ZXJPZmZzZXQgPSByb3Vu
ZFBvaW50VG9EZXZpY2VQaXhlbHModG9MYXlvdXRQb2ludChvZmZzZXRGcm9tUGFyZW50R3JhcGhp
Y3NMYXllciksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBhdXRvIGFuY2hvciA9IEZsb2F0UG9p
bnQzRCB7CiAgICAgICAgIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC53aWR0aCgpID8gKChsYXll
ck9mZnNldC54KCkgLSBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3QueCgpKSArIHRyYW5zZm9ybU9y
aWdpbi54KCkpIC8gcHJpbWFyeUdyYXBoaWNzTGF5ZXJSZWN0LndpZHRoKCkgOiAwLjVmLApAQCAt
Njg1LDE2ICs2ODUsMTkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkcmVu
VHJhbnNmb3JtQW5kQW5jaG9yUG9pbnQoY29uc3QgTGF5b3V0UmVjdCYKIAogICAgIGF1dG8gcmVt
b3ZlQ2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzID0gWyZdKEdyYXBoaWNzTGF5ZXIqIGxheWVy
VG9JZ25vcmUgPSBudWxscHRyKSB7CiAgICAgICAgIGF1dG8qIGNsaXBwaW5nTGF5ZXIgPSB0aGlz
LT5jbGlwcGluZ0xheWVyKCk7Ci0gICAgICAgIGlmIChjbGlwcGluZ0xheWVyICYmIGNsaXBwaW5n
TGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkKLSAgICAgICAgICAgIGNsaXBwaW5nTGF5ZXItPnNldENo
aWxkcmVuVHJhbnNmb3JtKHsgfSk7Ci0gICAgICAgIAorICAgICAgICBpZiAoY2xpcHBpbmdMYXll
ciAmJiBjbGlwcGluZ0xheWVyICE9IGxheWVyVG9JZ25vcmUpIHsKKyAgICAgICAgICAgIGNsaXBw
aW5nTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4OjppZGVu
dGl0eSk7CisgICAgICAgICAgICBjbGlwcGluZ0xheWVyLT5zZXRBbmNob3JQb2ludChkZWZhdWx0
QW5jaG9yUG9pbnQpOworICAgICAgICB9CisKICAgICAgICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVy
TGF5ZXIgJiYgbV9zY3JvbGxDb250YWluZXJMYXllciAhPSBsYXllclRvSWdub3JlKSB7Ci0gICAg
ICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybSh7IH0p
OworICAgICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlkZW50aXR5KTsKKyAgICAgICAgICAgIG1fc2Nyb2xs
Q29udGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CiAgICAg
ICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2VydmVzM0QoZmFsc2UpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllciAhPSBsYXllclRvSWdub3Jl
KQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybSh7IH0p
OworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybShUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6aWRlbnRpdHkpOwogICAgIH07CiAKICAgICBpZiAoIXJlbmRlcmVy
KCkuc3R5bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKSB7CkBAIC03MDIsNyArNzA1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtQW5kQW5jaG9yUG9pbnQo
Y29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbGF5
ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSA9IFsmXSB7CisgICAgYXV0byBsYXllckZvckNoaWxkcmVu
VHJhbnNmb3JtID0gWyZdKCkgLT4gc3RkOjp0dXBsZTxHcmFwaGljc0xheWVyKiwgRmxvYXRSZWN0
PiB7CiAgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5lckxheWVyKSB7CiAgICAgICAgICAgICBB
U1NFUlQoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSk7IC8vIFNjcm9sbCBjb250YWluZXIgbGF5
ZXJzIGFyZSBvbmx5IGNyZWF0ZWQgZm9yIFJlbmRlckJveCBkZXJpdmVkIHJlbmRlcmVycy4KICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9zY3JvbGxDb250YWluZXJMYXllci5n
ZXQoKSwgc2Nyb2xsQ29udGFpbmVyTGF5ZXJCb3goZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cigpKSkpOwpAQCAtNzEwLDE5ICs3MTMsMjYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtQW5kQW5jaG9yUG9pbnQoY29uc3QgTGF5b3V0UmVjdCYKICAg
ICAgICAgaWYgKGF1dG8qIGxheWVyID0gY2xpcHBpbmdMYXllcigpKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShsYXllciwgY2xpcHBpbmdMYXllckJveChyZW5kZXJlcigpKSk7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtX2dyYXBoaWNzTGF5ZXIuZ2V0KCks
IGJvcmRlckJveFJlY3QpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhp
Y3NMYXllci5nZXQoKSwgbV9vd25pbmdMYXllci50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHJl
bmRlcmVyKCkuc3R5bGUoKSkpOwogICAgIH07CiAKLSAgICBhdXRvIFtsYXllckZvclBlcnNwZWN0
aXZlLCBwZXJzcGVjdGl2ZVJlbGF0aXZlQm94XSA9IGxheWVyRm9yQ2hpbGRyZW5UcmFuc2Zvcm0o
KTsKLSAgICAvLyBGSVhNRTogcGVyc3BlY3RpdmVSZWxhdGl2ZUJveCBpc24ndCBxdWl0ZSByaWdo
dCBoZXJlLiBUaGlzIG5lZWRzIHdvcms6IHdlYmtpdC5vcmcvYi8yMTE3ODcuCi0gICAgYXV0byBw
ZXJzcGVjdGl2ZVRyYW5zZm9ybSA9IG93bmluZ0xheWVyKCkucGVyc3BlY3RpdmVUcmFuc2Zvcm0o
cGVyc3BlY3RpdmVSZWxhdGl2ZUJveCk7Ci0gICAgCi0gICAgLy8gSWYgd2UgaGF2ZSBzY3JvbGxp
bmcgbGF5ZXJzLCB3ZSBuZWVkIHRoZSBjaGlsZHJlbiB0cmFuc2Zvcm0gb24gbV9zY3JvbGxDb250
YWluZXJMYXllciB0bwotICAgIC8vIGFmZmVjdCBjaGlsZHJlbiBvZiBtX3Njcm9sbGVkQ29udGVu
dHNMYXllciwgc28gc2V0IHNldFByZXNlcnZlczNEKHRydWUpLgotICAgIGlmIChsYXllckZvclBl
cnNwZWN0aXZlID09IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpCi0gICAgICAgIG1fc2Nyb2xsZWRD
b250ZW50c0xheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKLSAgICAKLSAgICBsYXllckZvclBl
cnNwZWN0aXZlLT5zZXRDaGlsZHJlblRyYW5zZm9ybShwZXJzcGVjdGl2ZVRyYW5zZm9ybSk7Cisg
ICAgYXV0byBbbGF5ZXJGb3JQZXJzcGVjdGl2ZSwgbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3RdID0g
bGF5ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSgpOworICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZl
ICE9IG1fZ3JhcGhpY3NMYXllcikgeworICAgICAgICAvLyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBs
YXllcnMsIHdlIG5lZWQgdGhlIGNoaWxkcmVuIHRyYW5zZm9ybSBvbiBtX3Njcm9sbENvbnRhaW5l
ckxheWVyIHRvCisgICAgICAgIC8vIGFmZmVjdCBjaGlsZHJlbiBvZiBtX3Njcm9sbGVkQ29udGVu
dHNMYXllciwgc28gc2V0IHNldFByZXNlcnZlczNEKHRydWUpLgorICAgICAgICBpZiAobGF5ZXJG
b3JQZXJzcGVjdGl2ZSA9PSBtX3Njcm9sbENvbnRhaW5lckxheWVyKQorICAgICAgICAgICAgbV9z
Y3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOworCisgICAgICAgIGF1
dG8gcGVyc3BlY3RpdmVBbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRCB7CisgICAgICAgICAgICBs
YXllckZvclBlcnNwZWN0aXZlUmVjdC53aWR0aCgpID8gKHRyYW5zZm9ybU9yaWdpbi54KCkgLSBs
YXllckZvclBlcnNwZWN0aXZlUmVjdC54KCkpIC8gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3Qud2lk
dGgoKSA6IDAuNWYsCisgICAgICAgICAgICBsYXllckZvclBlcnNwZWN0aXZlUmVjdC5oZWlnaHQo
KSA/ICh0cmFuc2Zvcm1PcmlnaW4ueSgpIC0gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3QueSgpKSAv
IGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LmhlaWdodCgpIDogMC41ZiwKKyAgICAgICAgICAgIHRy
YW5zZm9ybU9yaWdpbi56KCkKKyAgICAgICAgfTsKKworICAgICAgICBsYXllckZvclBlcnNwZWN0
aXZlLT5zZXRBbmNob3JQb2ludChwZXJzcGVjdGl2ZUFuY2hvclBvaW50KTsKKyAgICB9CisKKyAg
ICBsYXllckZvclBlcnNwZWN0aXZlLT5zZXRDaGlsZHJlblRyYW5zZm9ybShtX293bmluZ0xheWVy
LnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkpOwogICAgIHJlbW92ZUNoaWxkcmVuVHJhbnNmb3JtRnJv
bUxheWVycyhsYXllckZvclBlcnNwZWN0aXZlKTsKIH0KIApAQCAtMjk3MiwxNyArMjk4Miw2IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKFBhaW50ZWRDb250
ZW50c0luZm8mIGNvbnRlbnRzSW5mbykKICAgICBpbWFnZS0+c3RhcnRBbmltYXRpb24oKTsKIH0K
IAotRmxvYXRQb2ludDNEIFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9yaWdp
bkZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29uc3QKLXsKLSAgICBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7Ci0KLSAgICBGbG9h
dFBvaW50M0Qgb3JpZ2luOwotICAgIG9yaWdpbi5zZXRYWShyb3VuZFBvaW50VG9EZXZpY2VQaXhl
bHMocG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS50cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3JkZXJC
b3guc2l6ZSgpKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAgIG9yaWdpbi5zZXRaKHN0eWxl
LnRyYW5zZm9ybU9yaWdpblooKSk7Ci0KLSAgICByZXR1cm4gb3JpZ2luOwotfQotCiAvLyBSZXR1
cm4gdGhlIG9mZnNldCBmcm9tIHRoZSB0b3AtbGVmdCBvZiB0aGlzIGNvbXBvc2l0aW5nIGxheWVy
IGF0IHdoaWNoIHRoZSByZW5kZXJlcidzIGNvbnRlbnRzIGFyZSBwYWludGVkLgogTGF5b3V0U2l6
ZSBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRPZmZzZXRJbkNvbXBvc2l0aW5nTGF5ZXIoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CmluZGV4IDg1ODdkNjE0MGVhMWQxNTMwZDdlZDNmZDU2YjI3ZDlhZTg2NTJjNjEuLmFiZTQ0OWVl
NmJmMWRhYjAzMDZkMzg1YmVmZmI3M2Y1MjEzZTBkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTMzMSw5ICszMzEsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0QmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFja2dyb3VuZChi
b29sKTsKIAogICAgIExheW91dFNpemUgY29udGVudE9mZnNldEluQ29tcG9zaXRpbmdMYXllcigp
IGNvbnN0OwotICAgIC8vIFJlc3VsdCBpcyB0cmFuc2Zvcm0gb3JpZ2luIGluIGRldmljZSBwaXhl
bHMuCi0gICAgRmxvYXRQb2ludDNEIGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW5Gb3JQYWludGluZyhj
b25zdCBMYXlvdXRSZWN0JiBib3JkZXJCb3gpIGNvbnN0OwotCiAgICAgTGF5b3V0U2l6ZSBvZmZz
ZXRSZWxhdGl2ZVRvUmVuZGVyZXJPcmlnaW5Gb3JEZXNjZW5kYW50TGF5ZXJzKCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBlbnN1cmVDbGlwcGluZ1N0YWNrTGF5ZXJzKExheWVyQW5jZXN0b3JDbGlw
cGluZ1N0YWNrJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IDIzNTNjMTc3MDY5MmYzZDcxMzVjMjg5MWFlNjgzZmEzNDMz
ODdjMzYuLjM4Nzg3OTkwYjFhZDViNTY1Y2I4MDk0NDU0MDk3NWJhODVjOTU3NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBA
IC0xNjM3LDYgKzE2MzcsNyBAQCBzdGF0aWMgYm9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVz
R2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8fCBv
bGRTdHlsZS50cmFuc2xhdGUoKSAhPSBuZXdTdHlsZS50cmFuc2xhdGUoKQogICAgICAgICB8fCBv
bGRTdHlsZS5zY2FsZSgpICE9IG5ld1N0eWxlLnNjYWxlKCkKICAgICAgICAgfHwgb2xkU3R5bGUu
cm90YXRlKCkgIT0gbmV3U3R5bGUucm90YXRlKCkKKyAgICAgICAgfHwgb2xkU3R5bGUudHJhbnNm
b3JtQm94KCkgIT0gbmV3U3R5bGUudHJhbnNmb3JtQm94KCkKICAgICAgICAgfHwgb2xkU3R5bGUu
dHJhbnNmb3JtT3JpZ2luWCgpICE9IG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdpblgoKQogICAgICAg
ICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkgIT0gbmV3U3R5bGUudHJhbnNmb3JtT3Jp
Z2luWSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zZm9ybU9yaWdpblooKSAhPSBuZXdTdHls
ZS50cmFuc2Zvcm1PcmlnaW5aKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCmluZGV4IGIxZWQyOGIxMjc1YjkzNDViNDNkOGE1MmVkNjVjNGU5YjRi
NThiOTIuLmRhMDAzZGE5YTYxMzg5NmIwNmEyNzM3OTc0Nzc3NWQzM2M3MzkxYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ0OSwy
MiArMTQ0OSw1MSBAQCBib29sIFJlbmRlclN0eWxlOjphZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2lu
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUZsb2F0UG9pbnQzRCBSZW5kZXJTdHls
ZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyU3R5
bGU6OmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
KSBjb25zdAoreworICAgIHJldHVybiBib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2lu
dEZvckxlbmd0aFBvaW50KHBlcnNwZWN0aXZlT3JpZ2luKCksIGJvdW5kaW5nQm94LnNpemUoKSk7
Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5UGVyc3BlY3RpdmUoVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgRmxv
YXRQb2ludCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0yLyNwZXJzcGVjdGl2ZQorICAgIC8vIFRoZSBwZXJzcGVj
dGl2ZSBtYXRyaXggaXMgY29tcHV0ZWQgYXMgZm9sbG93czoKKyAgICAvLyAxLiBTdGFydCB3aXRo
IHRoZSBpZGVudGl0eSBtYXRyaXguCisKKyAgICAvLyAyLiBUcmFuc2xhdGUgYnkgdGhlIGNvbXB1
dGVkIFggYW5kIFkgdmFsdWVzIG9mIHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUob3JpZ2luVHJhbnNsYXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSk7CisKKyAg
ICAvLyAzLiBNdWx0aXBseSBieSB0aGUgbWF0cml4IHRoYXQgd291bGQgYmUgb2J0YWluZWQgZnJv
bSB0aGUgcGVyc3BlY3RpdmUoKSB0cmFuc2Zvcm0gZnVuY3Rpb24sIHdoZXJlIHRoZSBsZW5ndGgg
aXMgcHJvdmlkZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eQorICAg
IHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKHVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcikpOwor
CisgICAgLy8gNC4gVHJhbnNsYXRlIGJ5IHRoZSBuZWdhdGVkIGNvbXB1dGVkIFggYW5kIFkgdmFs
dWVzIG9mIHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLW9yaWdp
blRyYW5zbGF0ZS54KCksIC1vcmlnaW5UcmFuc2xhdGUueSgpKTsKK30KKworRmxvYXRQb2ludDNE
IFJlbmRlclN0eWxlOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFu
c2Zvcm1zLTIvI2N0bQotICAgIC8vIDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwg
YW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdp
blRyYW5zbGF0ZTsKICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0WFkoYm91bmRpbmdCb3gubG9jYXRp
b24oKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3Vu
ZGluZ0JveC5zaXplKCkpKTsKICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0Wih0cmFuc2Zvcm1Pcmln
aW5aKCkpOworICAgIHJldHVybiBvcmlnaW5UcmFuc2xhdGU7Cit9CisKK0Zsb2F0UG9pbnQzRCBS
ZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK3sKKyAgICBhdXRv
IG9yaWdpblRyYW5zbGF0ZSA9IGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oYm91bmRpbmdCb3gpOwog
ICAgIGlmICghb3JpZ2luVHJhbnNsYXRlLmlzWmVybygpKQogICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlM2Qob3JpZ2luVHJhbnNsYXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSwgb3JpZ2lu
VHJhbnNsYXRlLnooKSk7CiAgICAgcmV0dXJuIG9yaWdpblRyYW5zbGF0ZTsKIH0KIAordm9pZCBS
ZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0Cit7Cisg
ICAgaWYgKCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCisgICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUzZChvcmlnaW5UcmFuc2xhdGUueCgpLCBvcmlnaW5UcmFuc2xhdGUueSgpLCBvcmlnaW5U
cmFuc2xhdGUueigpKTsKK30KKwogdm9pZCBSZW5kZXJTdHlsZTo6dW5hcHBseVRyYW5zZm9ybU9y
aWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50M0Qm
IG9yaWdpblRyYW5zbGF0ZSkgY29uc3QKIHsKLSAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
Y3NzLXRyYW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gOC4gVHJhbnNsYXRlIGJ5IHRoZSBuZWdhdGVk
IGNvbXB1dGVkIFgsIFkgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgaWYg
KCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUz
ZCgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFu
c2xhdGUueigpKTsKIH0KQEAgLTE1NjMsNyArMTU5Miw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh0cmF2ZXJzYWxTdGF0ZS5jdXJyZW50KCkueCgp
LCB0cmF2ZXJzYWxTdGF0ZS5jdXJyZW50KCkueSgpKTsKIAogICAgIC8vIFNoaWZ0IGVsZW1lbnQg
dG8gdGhlIGFuY2hvciBzcGVjaWZpZWQgYnkgb2Zmc2V0LWFuY2hvci4KLSAgICBhdXRvIHRyYW5z
Zm9ybU9yaWdpbiA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgp
LCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKKyAgICBhdXRv
IHRyYW5zZm9ybU9yaWdpbiA9IGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oYm91bmRpbmdCb3gpLnh5
KCk7CiAgICAgYXV0byBhbmNob3IgPSB0cmFuc2Zvcm1PcmlnaW47CiAgICAgaWYgKCFvZmZzZXRB
bmNob3IoKS54KCkuaXNBdXRvKCkpCiAgICAgICAgIGFuY2hvciA9IGZsb2F0UG9pbnRGb3JMZW5n
dGhQb2ludChvZmZzZXRBbmNob3IoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94
LmxvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCmluZGV4IDViMzYxNGViOWJhMTg1OTFiODg0Njc1ZTA4YjlhNzJhNTM2Y2ExNjYuLmU0ZDcx
YWUyMDZmNjYzNWRjNzFiN2ZhNWQzYTA2MjA1ODAwN2IxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03MDcsNyArNzA3LDEzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IGluZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zID0geyBUcmFuc2Zvcm1PcGVyYXRpb25P
cHRpb246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6T2Zm
c2V0IH07CiAKICAgICBib29sIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdDsKKwor
ICAgIEZsb2F0UG9pbnQgY29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYg
Ym91bmRpbmdCb3gpIGNvbnN0OworICAgIHZvaWQgYXBwbHlQZXJzcGVjdGl2ZShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdp
blRyYW5zbGF0ZSkgY29uc3Q7CisKKyAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRyYW5zZm9ybU9y
aWdpbihjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsKICAgICBGbG9hdFBvaW50
M0QgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtT3JpZ2lu
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFuc2xh
dGUpIGNvbnN0OwogICAgIHZvaWQgdW5hcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGNvbnN0IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdDsKICAg
ICAvLyBhcHBseVRyYW5zZm9ybSBjYWxscyBhcHBseVRyYW5zZm9ybU9yaWdpbigpLCB0aGVuIGFw
cGx5Q1NTVHJhbnNmb3JtKCksIGZvbGxvd2VkIGJ5IHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKS4K
ICAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4g
PSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5jcHAKaW5kZXggZTA3MGM3YTczMDYyNmFkNWMyMDdkZWM3MjE4MDMzM2Uz
NTFlYzgzOC4uYWNhZDRmODU0YjJmNmU1ODEyYjU5ZjM0ZjBiNGQwN2NjMTUzNDYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTEwNyw4ICsxMDcsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNm
b3JtKCkgY29uc3QKIAogICAgIC8vIElmIHdlIGRpZG4ndCBoYXZlIHRoZSBDU1MgInRyYW5zZm9y
bSIgcHJvcGVydHkgc2V0LCB3ZSBtdXN0IGFjY291bnQgZm9yIHRoZSAidHJhbnNmb3JtIiBhdHRy
aWJ1dGUuCiAgICAgaWYgKCFoYXNTcGVjaWZpZWRUcmFuc2Zvcm0gJiYgc3R5bGUpIHsKLSAgICAg
ICAgYXV0byBib3VuZGluZ0JveCA9IHJlbmRlcmVyKCktPnRyYW5zZm9ybVJlZmVyZW5jZUJveFJl
Y3QoKTsKLSAgICAgICAgYXV0byB0ID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLT50
cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9j
YXRpb24oKTsKKyAgICAgICAgYXV0byB0ID0gc3R5bGUtPmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4o
cmVuZGVyZXIoKS0+dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpKS54eSgpOwogICAgICAgICBt
YXRyaXgudHJhbnNsYXRlKHQpOwogICAgICAgICBtYXRyaXggKj0gdHJhbnNmb3JtKCkuY29uY2F0
ZW5hdGUoKTsKICAgICAgICAgbWF0cml4LnRyYW5zbGF0ZSgtdC54KCksIC10LnkoKSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNWMxMzM0YWNjYjZlMzRmMjZlYmMyMTJlOTViYTI0MDZmYTFlZDNlMC4uZWM5OTI1ZTAzZDRi
OTg0MmQ3M2Q3MjFmOTVkZTZlYTA5MDI5ZDc5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIy
LTA0LTA0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFBlcnNwZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9y
aWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
Nzg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwZWN0YXRpb246IGFuY2hv
ciBwb2ludHMgaW4gdGhlIEdyYXBoaWNzTGF5ZXIgdHJlZSBkdW1wcyBoYXZlIGNoYW5nZWQuCisK
KyAgICAgICAgVW5za2lwIGltcG9ydGVkL3czYy8vd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zvcm0t
bGF5ZXIuaHRtbAorICAgICAgICBvbiBhbGwgcGxhdGZvcm1zOiAndHJhbnNmb3JtLWJveCcgY2hh
bmdlcyBub3cgcHJvcGVydGx5IHRyaWdnZXIgR3JhcGhpY3NMYXllciBnZW9tZXRyeSB1cGRhdGVz
LgorCisgICAgICAgICogY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vj
b25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcv
dGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoK
KwogMjAyMi0wNC0wNCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAg
WyBpT1MgMTUgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9k
ZXJpdmVfYml0c19rZXlzL3Bia2RmMi5odHRwcy5hbnkud29ya2VyLmh0bWwgaXMgZmxha3kgdGlt
aW5nIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVy
YWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnkt
cXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAppbmRleCA3ZmQzNjY3MTI5YmM2YmY0OGM0NTk2Zjgx
ZDFhODZjODU5MDNkNmU2Li5kMTVlYTk1NWEyMDc0OWM3MmRkM2M5ODVkZGMyZTNiZmEyZmU0Zjg1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRq
dXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVh
ZC1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtMjQsOSArMjQsMTAgQEAKICAgICAgICAgICAgICAg
ICAoR3JhcGhpY3NMYXllcgogICAgICAgICAgICAgICAgICAgKG9mZnNldEZyb21SZW5kZXJlciB3
aWR0aD0xIGhlaWdodD0xKQogICAgICAgICAgICAgICAgICAgKHBvc2l0aW9uIDEuMDAgMS4wMCkK
KyAgICAgICAgICAgICAgICAgIChhbmNob3IgMC41MSAwLjUwKQogICAgICAgICAgICAgICAgICAg
KGJvdW5kcyA1ODMuMDAgNTc4LjAwKQogICAgICAgICAgICAgICAgICAgKGJhY2tpbmdTdG9yZUF0
dGFjaGVkIDEpCi0gICAgICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4w
MCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbLTMwNy41MCAtMjkwLjAwIDEuMDAg
LTEuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgICAgICAgICAgICAgIChjaGlsZHJl
blRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFst
MzAwLjAwIC0yOTAuMDAgMS4wMCAtMS4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQogICAgICAg
ICAgICAgICAgICAgKGNoaWxkcmVuIDEKICAgICAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKICAgICAgICAgICAgICAgICAgICAgICAocG9zaXRpb24gMC4wMCAtNDAwLjAwKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9s
bGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
dGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0
CmluZGV4IDFiMDY0NThmMWUxZTgzMzdjMWUzM2NiMDg1YTExNmI2YTk3MzQzMmQuLjI0NmViNGE5
NTNjN2E2ZWUzYjViZjA1NGY5YWZlMmM2Y2I4NTJlZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvcGVyc3Bl
Y3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKQEAgLTI5LDggKzI5
LDkgQEAKICAgICAgICAgICAoY2hpbGRyZW4gMgogICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIK
ICAgICAgICAgICAgICAgKGJvdW5kcyBvcmlnaW4gMC4wMCA5MDAuMDApCisgICAgICAgICAgICAg
IChhbmNob3IgMC41MSAwLjUwKQogICAgICAgICAgICAgICAoYm91bmRzIDU4NS4wMCA1MDAuMDAp
Ci0gICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0g
WzAuMDAgMS4wMCAwLjAwIDAuMDBdIFsyLjkzIDIuNTAgMS4wMCAtMC4wMV0gWzAuMDAgMC4wMCAw
LjAwIDEuMDBdKQorICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAw
LjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbMy4wMCAyLjUwIDEuMDAgLTAuMDFdIFsw
LjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCA5
MDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAgICAgICAgICAgICAoY292ZXJhZ2UgcmVjdCAwLjAw
LCA5MDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAgICAgICAgICAgICAoaW50ZXJzZWN0cyBjb3Zl
cmFnZSByZWN0IDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggN2Q0MGI1NTMwMGRkMmFlMzI0MjMyNWI4YjdkZDBhYzc1ODQ4MmQzZC4uNTg4YmZlOWQx
MmY2ZTM2MDVlN2U4M2IzYmM3NjllYTczNmM2MDVmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjUwLDkgKzY1MCw2IEBAIHdlYmtpdC5vcmcvYi8y
MzAyNzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
cGVyc3BlY3RpCiB3ZWJraXQub3JnL2IvMjMwMjc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2R5bmFtaWMtZml4ZWQtcG9zLWNiLWNoYW5nZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMjc3IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3BlcnNwZWN0aXZlLXRyYW5zZm9y
bXMtZXF1aXZhbGVuY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jICd0cmFuc2Zvcm0t
Ym94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5v
cmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIzNzUwMiBmYXN0L2Rv
bS9SYW5nZS9nZXRDbGllbnRSZWN0cy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM3
NTAyIGZhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvaGlkZS1ib3gtdmVydGljYWwtbHIuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNzUwMiBpbXBvcnRlZC9ibGluay9m
YXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2Zsb2F0LWJpZy1saW5lLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NDY2OTBmNDNmZmFlOWFhZGE1NGY3N2UyM2ZiMGI1YzU0M2IyNDY2Ny4uYzY5ZWJmY2Y1MWU5YjZh
ZTRkMjdkNTU4N2RhMzU1ZmU5MzdkZjFjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTMwMDEsOSArMzAwMSw2IEBAIGZhc3QvY2FudmFzL3NldC1jb2xv
cnMuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjAyOTU4IGNzczMvZmlsdGVycy9z
dmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgJ3Ry
YW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRzLgot
d2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zv
cm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjAzMzA1
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9w
ZXJ0aWVzLXZhbHVlLTAwMS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMz
MDUgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWluaGVyaXQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIwMzM1NiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL3Byb3BlcnRpZXMtdmFsdWUtMDAzLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBmZTc0ZWZiMzRkNjEwY2ViZDRlZWM2MGRmMDIyNDFlZTA0N2YwYzc4Li42MmU4NjA5ODI1
M2Q2MGQ2NTA5Mjk0ZTQ4MDRlNWRjNDI3ZGU1NDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMyMCw5ICsyMzIwLDYgQEAgd2Via2l0Lm9yZy9iLzE4
OTQ0OCBbIE1vamF2ZSBDYXRhbGluYSBdIGZhc3QvdGV4dC9vc2FrYS1zeW50aGV0aWMtYm9sZC5o
dG1sIFsgU2sKIAogd2Via2l0Lm9yZy9iLzIzMDMyNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9jcmFzaHRlc3RzL3RyYW5zZm9ybS1tYXJxdWVlLXJl
c2l6ZS1kaXYtaW1hZ2UtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi0jICd0cmFuc2Zvcm0t
Ym94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5v
cmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyByZGFyOi8vODM1OTEwNDAKIFsgTW9udGVy
ZXkrIF0gZWRpdGluZy9tYWMvZGljdGlvbmFyeS1sb29rdXAvZGljdGlvbmFyeS1sb29rdXAtaW5w
dXQuaHRtbCBbIENyYXNoIF0KIFsgTW9udGVyZXkrIF0gZWRpdGluZy9tYWMvZGljdGlvbmFyeS1s
b29rdXAvZGljdGlvbmFyeS1sb29rdXAtaW5zaWRlLXNlbGVjdGlvbi5odG1sIFsgQ3Jhc2ggXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMzhjNGRiNGJh
N2RkMzJkNmE0MTkyYjkyMDRjZTk2YTY3ZGVhZGYyLi45MDBjOGJmMWMzNjJhM2U2YmFiZmQyZjRj
YTE4ZDVlMzY5ZTEwMzY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTM5LDkgKzkzOSw2IEBAIHdlYmtpdC5vcmcvYi8xNDkyNDUgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNoCiB3ZWJraXQu
b3JnL2IvMTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0
aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC1ibG9jay1zaWJsaW5nLTAwMy54aHQgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xNDkyNDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW11bHRpY29sL211bHRpY29sLXNwYW4tYWxsLW1hcmdpbi1uZXN0ZWQtZmlyc3RjaGlsZC0wMDEu
eGh0IFsgU2tpcCBdCiAKLSMgJ3RyYW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBj
b21wb3NpdGVkIGVsZW1lbnRzLgotd2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJv
eC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
CiAjIFRPRE8gRVhJRi1yZXNvbHV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZGVuc2l0eS1zaXplLWNvcnJlY3Rpb24vIFsgU2tpcCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456755</attachid>
            <date>2022-04-05 15:00:51 -0700</date>
            <delta_ts>2022-04-07 16:06:35 -0700</delta_ts>
            <desc>Patch, v2</desc>
            <filename>bug-211787-20220405150049.patch</filename>
            <type>text/plain</type>
            <size>34012</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0NjUxM2YwZmU2Njg1
OTBhMTBlYTZiM2E3N2M5ZGU1MjhhYzUzYS4uOTVmMDUwY2M0ZWY3ZmEzOTg4NzBlYmQwOTEwMDYz
YzMxYzZmOTdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIyLTA0LTA1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9y
aWdpbkZvclBhaW50aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZH
VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVQZXJzcGVjdGl2ZU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlQZXJzcGVj
dGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZVRyYW5z
Zm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlU
cmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnVu
YXBwbHlUcmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJh
bnNmb3JtIGNvbnN0KToKKwogMjAyMi0wNC0wNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbTEJTRV0gQWN0aXZhdGUgU1ZHIHRyYW5zZm9y
bSBzdXBwb3J0IHRocm91Z2ggbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAppbmRleCBkODQxMWM5M2U0NzcwMmY1NjdhZDYxNDAzNjZlY2U3NjYzNWMw
NDVmLi5kNTBhYTcxYmIxODA1ZjQxZTQwZDJhZmZjZWQ3Y2MxMDZmMmJiZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTE5OTcsNyArMTk5Nyw3
IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVUcmFuc2Zvcm1lZEV4dGVudFZpYVRyYW5z
Zm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiByCiAKICAgICBib29sIGFwcGx5VHJhbnNmb3JtT3Jp
Z2luID0gY29udGFpbnNSb3RhdGlvbihzdHlsZS50cmFuc2Zvcm0oKS5vcGVyYXRpb25zKCkpIHx8
IHN0eWxlLnRyYW5zZm9ybSgpLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKICAgICBpZiAo
YXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgdHJhbnNmb3JtT3JpZ2luID0gcmVuZGVy
ZXJCb3gubG9jYXRpb24oKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS50cmFuc2Zv
cm1PcmlnaW5YWSgpLCByZW5kZXJlckJveC5zaXplKCkpOworICAgICAgICB0cmFuc2Zvcm1Pcmln
aW4gPSBzdHlsZS5jb21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVyQm94KS54eSgpOwogICAg
ICAgICAvLyBJZ25vcmUgdHJhbnNmb3JtT3JpZ2luWiBiZWNhdXNlIHdlJ2xsIGJhaWwgaWYgd2Ug
ZW5jb3VudGVyIGFueSAzRCB0cmFuc2Zvcm1zLgogICAgICAgICBmbG9hdEJvdW5kcy5tb3ZlQnko
LXRyYW5zZm9ybU9yaWdpbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggYWY2OGJhOGIzZjkwM2U0YTI3MzliZTJjYjY5MDFiOTY2ZDdhNGQ2MS4u
MDRkMDUwOTZiNjQ4MTA4ZjFiNjBkYmMwNTcxM2EzYzcxYmU0NDA1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNzg0LDQzICsxNzg0LDYyIEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9z
aXRpb25zRmxhZz4qIGZsYWdzCiAgICAgcmV0dXJuIHBvc2l0aW9uT3JPZmZzZXRDaGFuZ2VkOwog
fQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zv
cm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRy
aXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogW0xCU0VdIFVwc3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2Rl
bE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJl
cigpKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25j
YXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyZW5kZXJCb3guaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpCisgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgY29uc3QgYXV0byYg
c3R5bGUgPSByZW5kZXJCb3guc3R5bGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIXN0eWxlLmhhc1BlcnNwZWN0aXZlKCkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJlZmVyZW5jZUJveFJlY3QgPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzSWZOZWVkZWQocmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0
eWxlKSk7Ci0gICAgYXV0byBzbmFwcGVkTGF5ZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVs
c0lmTmVlZGVkKGxheWVyUmVjdCk7CisgICAgYXV0byB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0
ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc0lmTmVlZGVkKHJlbmRlcmVyKCkudHJhbnNmb3JtUmVm
ZXJlbmNlQm94UmVjdChzdHlsZSkpOworICAgIGF1dG8gcGVyc3BlY3RpdmVPcmlnaW4gPSBzdHls
ZS5jb21wdXRlUGVyc3BlY3RpdmVPcmlnaW4odHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCk7CiAK
LSAgICBhdXRvIHBlcnNwZWN0aXZlT3JpZ2luID0gcmVmZXJlbmNlQm94UmVjdC5sb2NhdGlvbigp
IC0gdG9GbG9hdFNpemUoc25hcHBlZExheWVyUmVjdC5sb2NhdGlvbigpKSArIGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludChzdHlsZS5wZXJzcGVjdGl2ZU9yaWdpbigpLCByZWZlcmVuY2VCb3hSZWN0
LnNpemUoKSk7CisgICAgLy8gSW4gdGhlIHJlZ3VsYXIgY2FzZSBvZiBhIG5vbi1jbGlwcGVkLCBu
b24tc2Nyb2xsZWQgR3JhcGhpY3NMYXllciwgYWxsIHRyYW5zZm9ybWF0aW9ucworICAgIC8vICh2
aWEgQ1NTICd0cmFuc2Zvcm0nIC8gJ3BlcnNwZWN0aXZlJykgYXJlIGFwcGxpZWQgd2l0aCByZXNw
ZWN0IHRvIGEgcHJlZGVmaW5lZCBhbmNob3IgcG9pbnQsCisgICAgLy8gd2hpY2ggZGVwZW5kcyBv
biB0aGUgY2hvc2VuIENTUyAndHJhbnNmb3JtLWJveCcgLyAndHJhbnNmb3JtLW9yaWdpbicgcHJv
cGVydGllcy4KKyAgICAvLworICAgIC8vIEEgdHJhbnNmb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIENT
UyAndHJhbnNmb3JtJyBwcm9wZXJ0eSBpcyBhcHBsaWVkLCBieSB0cmFuc2xhdGluZworICAgIC8v
IHRvIHRoZSAndHJhbnNmb3JtIG9yaWdpbicsIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiwg
YW5kIHRyYW5zbGF0aW5nIGJhY2suCisgICAgLy8gV2hlbiBhbiBlbGVtZW50IHNwZWNpZmllcyBh
IENTUyAncGVyc3BlY3RpdmUnIHByb3BlcnR5LCB0aGUgcGVyc3BlY3RpdmUgdHJhbnNmb3JtYXRp
b24gbWF0cml4CisgICAgLy8gdGhhdCdzIGNvbXB1dGVkIGhlcmUgaXMgcHJvcGFnYXRlZCB0byB0
aGUgR3JhcGhpY3NMYXllciBieSBjYWxsaW5nIHNldENoaWxkcmVuVHJhbnNmb3JtKCkuCisgICAg
Ly8KKyAgICAvLyBIb3dldmVyIHRoZSBHcmFwaGljc0xheWVyIHBsYXRmb3JtIGltcGxlbWVudGF0
aW9ucyAoZS5nLiBDQSBvbiBtYWNPUykgYXBwbHkgdGhlIGNoaWxkcmVuIHRyYW5zZm9ybSwKKyAg
ICAvLyBkZWZpbmVkIG9uIHRoZSBwYXJlbnQsIHdpdGggcmVzcGVjdCB0byB0aGUgYW5jaG9yIHBv
aW50IG9mIHRoZSBwYXJlbnQsIHdoZW4gcmVuZGVyaW5nIGNoaWxkIGVsZW1lbnRzLgorICAgIC8v
IFRoaXMgaXMgd3JvbmcsIGFzIHRoZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiAoYXBwbGll
ZCB0byBhIGNoaWxkIG9mIHRoZSBlbGVtZW50IGRlZmluaW5nIHRoZQorICAgIC8vIDNkIGVmZmVj
dCksIG11c3QgYmUgaW5kZXBlbmRhbnQgb2YgdGhlIGNob3NlbiB0cmFuc2Zvcm0tb3JpZ2luICh0
aGUgcGFyZW50cyB0cmFuc2Zvcm0gb3JpZ2luCisgICAgLy8gbXVzdCBub3QgYWZmZWN0IGl0cyBj
aGlsZHJlbikuCisgICAgLy8KKyAgICAvLyBUbyBjaXJjdW12ZW50IHRoaXMsIGV4cGxpY2l0ZWx5
IHJlbW92ZSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBkZXBlbmRlbmN5IGluIHRoZSBwZXJzcGVjdGl2
ZSBtYXRyaXguCisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW5Gb3JQ
YWludGluZygpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHN0
eWxlLnVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCB0cmFuc2Zvcm1PcmlnaW4pOwor
ICAgIHN0eWxlLmFwcGx5UGVyc3BlY3RpdmUodHJhbnNmb3JtLCByZW5kZXJlcigpLCBwZXJzcGVj
dGl2ZU9yaWdpbik7CisgICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCB0
cmFuc2Zvcm1PcmlnaW4pOworICAgIHJldHVybiB0cmFuc2Zvcm07Cit9CiAKLSAgICAvLyBBIHBl
cnNwZWN0aXZlIG9yaWdpbiBvZiAwLDAgbWFrZXMgdGhlIHZhbmlzaGluZyBwb2ludCBpbiB0aGUg
Y2VudGVyIG9mIHRoZSBlbGVtZW50LgotICAgIC8vIFdlIHdhbnQgaXQgdG8gYmUgaW4gdGhlIHRv
cC1sZWZ0LCBzbyBzdWJ0cmFjdCBoYWxmIHRoZSBoZWlnaHQgYW5kIHdpZHRoLgotICAgIHBlcnNw
ZWN0aXZlT3JpZ2luIC09IHNuYXBwZWRMYXllclJlY3Quc2l6ZSgpIC8gMi4wZjsKK0Zsb2F0UG9p
bnQzRCBSZW5kZXJMYXllcjo6dHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoKSBjb25zdAorewor
ICAgIGlmICghcmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7Ci0gICAgdC50cmFu
c2xhdGUocGVyc3BlY3RpdmVPcmlnaW4ueCgpLCBwZXJzcGVjdGl2ZU9yaWdpbi55KCkpOwotICAg
IHQuYXBwbHlQZXJzcGVjdGl2ZShzdHlsZS51c2VkUGVyc3BlY3RpdmUocmVuZGVyZXIoKSkpOwot
ICAgIHQudHJhbnNsYXRlKC1wZXJzcGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdp
bi55KCkpOworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOworICAg
IGF1dG8gcmVmZXJlbmNlQm94UmVjdCA9IHJlbmRlcmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94
UmVjdChzdHlsZSk7CiAKLSAgICByZXR1cm4gdDsKKyAgICBhdXRvIG9yaWdpbiA9IHN0eWxlLmNv
bXB1dGVUcmFuc2Zvcm1PcmlnaW4ocmVmZXJlbmNlQm94UmVjdCk7CisgICAgaWYgKHJlbmRlcmVy
TmVlZHNQaXhlbFNuYXBwaW5nKCkpCisgICAgICAgIG9yaWdpbi5zZXRYWShyb3VuZFBvaW50VG9E
ZXZpY2VQaXhlbHMoTGF5b3V0UG9pbnQob3JpZ2luLnh5KCkpLCByZW5kZXJlcigpLmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIHJldHVybiBvcmlnaW47CiB9CiAKIEZsb2F0
UG9pbnQgUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAo
IXJlbmRlcmVyKCkuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgd3JvbmcsIHRyYW5zZm9ybS1ib3gg
dW5hd2FyZSwgZ2VvbWV0cnkuCi0gICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChy
ZW5kZXJlcigpLnN0eWxlKCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXJCb3JkZXJCb3hS
ZWN0KCkuc2l6ZSgpKTsKKyAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRl
cmVyKCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9yaWdpbigpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJl
ZmVyZW5jZUJveFJlY3QocmVuZGVyZXIoKS5zdHlsZSgpKS5zaXplKCkpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDb250YWluZXJGb3JQb3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwg
UG9zaXRpb25UeXBlIHBvc2l0aW9uLCBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDcwMmQ0NmZjMTY4YmM1ZDBhMmMzOGY3
YTQzNzkzY2U0MzBiNmE0MDMuLjkxNzNjMTliZjkwZWJhMWJmZWJmOTIyZTRkN2Q3YjljMWEyOGYw
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MzgsMTAgKzcz
OCwxMSBAQCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyYWJsZVRyYW5z
Zm9ybShPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4pIGNvbnN0OwogICAgIAogICAgIC8vIEdldCB0
aGUgcGVyc3BlY3RpdmUgdHJhbnNmb3JtLCB3aGljaCBpcyBhcHBsaWVkIHRvIHRyYW5zZm9ybWVk
IHN1YmxheWVycy4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyIGhhcyBhIC13ZWJr
aXQtcGVyc3BlY3RpdmUuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSBw
ZXJzcGVjdGl2ZS4KICAgICAvLyBOb3RlIHRoYXQgdGhpcyB0cmFuc2Zvcm0gaGFzIHRoZSBwZXJz
cGVjdGl2ZS1vcmlnaW4gYmFrZWQgaW4uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3Bl
Y3RpdmVUcmFuc2Zvcm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdDsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEZs
b2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4oKSBjb25zdDsKKyAgICBGbG9hdFBvaW50M0QgdHJh
bnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoKSBjb25zdDsKICAgICBib29sIHByZXNlcnZlczNEKCkg
Y29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlczNEKCk7IH0KICAgICBi
b29sIGhhczNEVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJh
bnNmb3JtLT5pc0FmZmluZSgpOyB9CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1lZEFuY2VzdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNUcmFuc2Zvcm1lZEFuY2VzdG9yOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDg3MGIyMGI5ZWFi
NGJmYzlmYmZmNThiZGRhOGJjNzczOGE3YTFkMTcuLmEyMDIyMmRhNjcwYjRlNWQ0M2FhZGMwNjRl
Mjg1M2M4YThiMjY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCkBAIC02MzcsMTYgKzYzNywxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlT3BhY2l0eShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRPcGFjaXR5KGNvbXBvc2l0aW5nT3BhY2l0eShzdHlsZS5vcGFjaXR5KCkp
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBS
ZW5kZXJTdHlsZSYpCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2Ug
bV9vd25pbmdMYXllci50cmFuc2Zvcm0oKSwgYnV0IHRoYXQgY3VycmVudGx5IGhhcyB0cmFuc2Zv
cm0tb3JpZ2luCi0gICAgLy8gYmFrZWQgaW50byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhhdC4K
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgIGlmIChtX293bmluZ0xheWVyLmhhc1Ry
YW5zZm9ybSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIHdyb25nLCB0cmFu
c2Zvcm0tYm94IHVuYXdhcmUsIGdlb21ldHJ5LgotICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJh
bnNmb3JtKHQsIHJlbmRlcmVyKCkuc3R5bGUoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhtX293
bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwg
UmVuZGVyU3R5bGU6OmluZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKLSAgICAgICAgbWFr
ZU1hdHJpeFJlbmRlcmFibGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3Jtcygp
KTsKLSAgICB9CisgICAgaWYgKG1fb3duaW5nTGF5ZXIuaGFzVHJhbnNmb3JtKCkpCisgICAgICAg
IG1fb3duaW5nTGF5ZXIudXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHQsIHN0eWxlLCBSZW5kZXJT
dHlsZTo6aW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMpOwogICAgIAogICAgIGlmIChtX2Nv
bnRlbnRzQ29udGFpbm1lbnRMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRM
YXllci0+c2V0VHJhbnNmb3JtKHQpOwpAQCAtNjU3LDIwICs2NTIsMjUgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCiAKIHZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50
KGNvbnN0IExheW91dFJlY3QmIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdCwgTGF5b3V0U2l6ZSBv
ZmZzZXRGcm9tUGFyZW50R3JhcGhpY3NMYXllcikKIHsKKyAgICBhdXRvIGRlZmF1bHRBbmNob3JQ
b2ludCA9IEZsb2F0UG9pbnQzRCB7IDAuNSwgMC41LCAwIH07CiAgICAgaWYgKCFyZW5kZXJlcigp
Lmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdEFu
Y2hvclBvaW50ID0gRmxvYXRQb2ludDNEIHsgMC41LCAwLjUsIDAgfTsKICAgICAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRBbmNob3JQb2ludChkZWZhdWx0QW5jaG9yUG9pbnQpOwogICAgICAgICBp
ZiAobV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIpCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ29u
dGFpbm1lbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKIAorICAg
ICAgICBpZiAobV9jaGlsZENvbnRhaW5tZW50TGF5ZXIpCisgICAgICAgICAgICBtX2NoaWxkQ29u
dGFpbm1lbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKKworICAg
ICAgICBpZiAobV9zY3JvbGxDb250YWluZXJMYXllcikKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29u
dGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKICAgICAg
ICAgaWYgKG1fc2Nyb2xsZWRDb250ZW50c0xheWVyKQogICAgICAgICAgICAgbV9zY3JvbGxlZENv
bnRlbnRzTGF5ZXItPnNldFByZXNlcnZlczNEKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGNvbnN0IGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSB0aGlzLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpOwotICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IG1fb3duaW5nTGF5ZXIucmVuZGVy
ZXJCb3JkZXJCb3hSZWN0KCk7Ci0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJh
bnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoYm9yZGVyQm94UmVjdCk7CisgICAgYXV0byB0cmFuc2Zv
cm1PcmlnaW4gPSBtX293bmluZ0xheWVyLnRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CiAg
ICAgYXV0byBsYXllck9mZnNldCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBv
aW50KG9mZnNldEZyb21QYXJlbnRHcmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgIGF1dG8gYW5jaG9yID0gRmxvYXRQb2ludDNEIHsKICAgICAgICAgcHJpbWFyeUdyYXBoaWNz
TGF5ZXJSZWN0LndpZHRoKCkgPyAoKGxheWVyT2Zmc2V0LngoKSAtIHByaW1hcnlHcmFwaGljc0xh
eWVyUmVjdC54KCkpICsgdHJhbnNmb3JtT3JpZ2luLngoKSkgLyBwcmltYXJ5R3JhcGhpY3NMYXll
clJlY3Qud2lkdGgoKSA6IDAuNWYsCkBAIC02ODUsMTEgKzY4NSwxNCBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBM
YXlvdXRSZWN0JgogCiAgICAgYXV0byByZW1vdmVDaGlsZHJlblRyYW5zZm9ybUZyb21MYXllcnMg
PSBbJl0oR3JhcGhpY3NMYXllciogbGF5ZXJUb0lnbm9yZSA9IG51bGxwdHIpIHsKICAgICAgICAg
YXV0byogY2xpcHBpbmdMYXllciA9IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKLSAgICAgICAgaWYg
KGNsaXBwaW5nTGF5ZXIgJiYgY2xpcHBpbmdMYXllciAhPSBsYXllclRvSWdub3JlKQorICAgICAg
ICBpZiAoY2xpcHBpbmdMYXllciAmJiBjbGlwcGluZ0xheWVyICE9IGxheWVyVG9JZ25vcmUpIHsK
ICAgICAgICAgICAgIGNsaXBwaW5nTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHsgfSk7Ci0g
ICAgICAgIAorICAgICAgICAgICAgY2xpcHBpbmdMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVs
dEFuY2hvclBvaW50KTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5l
ckxheWVyICYmIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkgewogICAg
ICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oeyB9
KTsKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRl
ZmF1bHRBbmNob3JQb2ludCk7CiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+
c2V0UHJlc2VydmVzM0QoZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTcwMiw3ICs3MDUsNyBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQ
b2ludChjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBsYXllckZvckNoaWxkcmVuVHJhbnNmb3JtID0gWyZdIHsKKyAgICBhdXRvIGxheWVyRm9yQ2hp
bGRyZW5UcmFuc2Zvcm0gPSBbJl0oKSAtPiBzdGQ6OnR1cGxlPEdyYXBoaWNzTGF5ZXIqLCBGbG9h
dFJlY3Q+IHsKICAgICAgICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpIHsKICAgICAgICAg
ICAgIEFTU0VSVChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKTsgLy8gU2Nyb2xsIGNvbnRhaW5l
ciBsYXllcnMgYXJlIG9ubHkgY3JlYXRlZCBmb3IgUmVuZGVyQm94IGRlcml2ZWQgcmVuZGVyZXJz
LgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtX3Njcm9sbENvbnRhaW5lckxh
eWVyLmdldCgpLCBzY3JvbGxDb250YWluZXJMYXllckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKCkpKSk7CkBAIC03MTAsMTkgKzcxMywyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBjbGlwcGluZ0xheWVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKGxheWVyLCBjbGlwcGluZ0xheWVyQm94KHJlbmRlcmVy
KCkpKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhpY3NMYXllci5n
ZXQoKSwgYm9yZGVyQm94UmVjdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9n
cmFwaGljc0xheWVyLmdldCgpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qo
KSk7CiAgICAgfTsKIAotICAgIGF1dG8gW2xheWVyRm9yUGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZl
UmVsYXRpdmVCb3hdID0gbGF5ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIC8vIEZJWE1F
OiBwZXJzcGVjdGl2ZVJlbGF0aXZlQm94IGlzbid0IHF1aXRlIHJpZ2h0IGhlcmUuIFRoaXMgbmVl
ZHMgd29yazogd2Via2l0Lm9yZy9iLzIxMTc4Ny4KLSAgICBhdXRvIHBlcnNwZWN0aXZlVHJhbnNm
b3JtID0gb3duaW5nTGF5ZXIoKS5wZXJzcGVjdGl2ZVRyYW5zZm9ybShwZXJzcGVjdGl2ZVJlbGF0
aXZlQm94KTsKLSAgICAKLSAgICAvLyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBsYXllcnMsIHdlIG5l
ZWQgdGhlIGNoaWxkcmVuIHRyYW5zZm9ybSBvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyIHRvCi0g
ICAgLy8gYWZmZWN0IGNoaWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQg
c2V0UHJlc2VydmVzM0QodHJ1ZSkuCi0gICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgPT0gbV9z
Y3JvbGxDb250YWluZXJMYXllcikKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNl
dFByZXNlcnZlczNEKHRydWUpOwotICAgIAotICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENo
aWxkcmVuVHJhbnNmb3JtKHBlcnNwZWN0aXZlVHJhbnNmb3JtKTsKKyAgICBhdXRvIFtsYXllckZv
clBlcnNwZWN0aXZlLCBsYXllckZvclBlcnNwZWN0aXZlUmVjdF0gPSBsYXllckZvckNoaWxkcmVu
VHJhbnNmb3JtKCk7CisgICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgIT0gbV9ncmFwaGljc0xh
eWVyKSB7CisgICAgICAgIC8vIElmIHdlIGhhdmUgc2Nyb2xsaW5nIGxheWVycywgd2UgbmVlZCB0
aGUgY2hpbGRyZW4gdHJhbnNmb3JtIG9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgdG8KKyAgICAg
ICAgLy8gYWZmZWN0IGNoaWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQg
c2V0UHJlc2VydmVzM0QodHJ1ZSkuCisgICAgICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlID09
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNM
YXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisKKyAgICAgICAgYXV0byBwZXJzcGVjdGl2ZUFu
Y2hvclBvaW50ID0gRmxvYXRQb2ludDNEIHsKKyAgICAgICAgICAgIGxheWVyRm9yUGVyc3BlY3Rp
dmVSZWN0LndpZHRoKCkgPyAodHJhbnNmb3JtT3JpZ2luLngoKSAtIGxheWVyRm9yUGVyc3BlY3Rp
dmVSZWN0LngoKSkgLyBsYXllckZvclBlcnNwZWN0aXZlUmVjdC53aWR0aCgpIDogMC41ZiwKKyAg
ICAgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LmhlaWdodCgpID8gKHRyYW5zZm9ybU9y
aWdpbi55KCkgLSBsYXllckZvclBlcnNwZWN0aXZlUmVjdC55KCkpIC8gbGF5ZXJGb3JQZXJzcGVj
dGl2ZVJlY3QuaGVpZ2h0KCkgOiAwLjVmLAorICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luLnoo
KQorICAgICAgICB9OworCisgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldEFuY2hvclBv
aW50KHBlcnNwZWN0aXZlQW5jaG9yUG9pbnQpOworICAgIH0KKworICAgIGxheWVyRm9yUGVyc3Bl
Y3RpdmUtPnNldENoaWxkcmVuVHJhbnNmb3JtKG1fb3duaW5nTGF5ZXIucGVyc3BlY3RpdmVUcmFu
c2Zvcm0oKSk7CiAgICAgcmVtb3ZlQ2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzKGxheWVyRm9y
UGVyc3BlY3RpdmUpOwogfQogCkBAIC0yOTcwLDE3ICsyOTgwLDYgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoUGFpbnRlZENvbnRlbnRzSW5mbyYgY29udGVu
dHNJbmZvKQogICAgIGltYWdlLT5zdGFydEFuaW1hdGlvbigpOwogfQogCi1GbG9hdFBvaW50M0Qg
UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoY29u
c3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb25zdAotewotICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47
Ci0gICAgb3JpZ2luLnNldFhZKHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhwb2ludEZvckxlbmd0
aFBvaW50KHN0eWxlLnRyYW5zZm9ybU9yaWdpblhZKCksIGJvcmRlckJveC5zaXplKCkpLCBkZXZp
Y2VTY2FsZUZhY3RvcigpKSk7Ci0gICAgb3JpZ2luLnNldFooc3R5bGUudHJhbnNmb3JtT3JpZ2lu
WigpKTsKLQotICAgIHJldHVybiBvcmlnaW47Ci19Ci0KIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZy
b20gdGhlIHRvcC1sZWZ0IG9mIHRoaXMgY29tcG9zaXRpbmcgbGF5ZXIgYXQgd2hpY2ggdGhlIHJl
bmRlcmVyJ3MgY29udGVudHMgYXJlIHBhaW50ZWQuCiBMYXlvdXRTaXplIFJlbmRlckxheWVyQmFj
a2luZzo6Y29udGVudE9mZnNldEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggODU4N2Q2MTQw
ZWExZDE1MzBkN2VkM2ZkNTZiMjdkOWFlODY1MmM2MS4uYWJlNDQ5ZWU2YmYxZGFiMDMwNmQzODVi
ZWZmYjczZjUyMTNlMGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMzMxLDkgKzMzMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRC
YWNrZ3JvdW5kTGF5ZXJQYWludHNGaXhlZFJvb3RCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgTGF5
b3V0U2l6ZSBjb250ZW50T2Zmc2V0SW5Db21wb3NpdGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgLy8g
UmVzdWx0IGlzIHRyYW5zZm9ybSBvcmlnaW4gaW4gZGV2aWNlIHBpeGVscy4KLSAgICBGbG9hdFBv
aW50M0QgY29tcHV0ZVRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3Qm
IGJvcmRlckJveCkgY29uc3Q7Ci0KICAgICBMYXlvdXRTaXplIG9mZnNldFJlbGF0aXZlVG9SZW5k
ZXJlck9yaWdpbkZvckRlc2NlbmRhbnRMYXllcnMoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGVu
c3VyZUNsaXBwaW5nU3RhY2tMYXllcnMoTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2smKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
aW5kZXggMjM1M2MxNzcwNjkyZjNkNzEzNWMyODkxYWU2ODNmYTM0MzM4N2MzNi4uMzg3ODc5OTBi
MWFkNWI1NjVjYjgwOTQ0NTQwOTc1YmE4NWM5NTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2MzcsNiArMTYzNyw3
IEBAIHN0YXRpYyBib29sIHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZShj
b25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zbGF0
ZSgpICE9IG5ld1N0eWxlLnRyYW5zbGF0ZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnNjYWxlKCkg
IT0gbmV3U3R5bGUuc2NhbGUoKQogICAgICAgICB8fCBvbGRTdHlsZS5yb3RhdGUoKSAhPSBuZXdT
dHlsZS5yb3RhdGUoKQorICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1Cb3goKSAhPSBuZXdT
dHlsZS50cmFuc2Zvcm1Cb3goKQogICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1PcmlnaW5Y
KCkgIT0gbmV3U3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnRy
YW5zZm9ybU9yaWdpblkoKSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkKICAgICAgICAg
fHwgb2xkU3R5bGUudHJhbnNmb3JtT3JpZ2luWigpICE9IG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdp
blooKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCmluZGV4IDE5NDA1NjhlYWY5ZGNiNjE5NjIyOWNmZTViYjI1ZmVlMDM5YmY0MzIu
LjRkNGFkYjRmYTExYTFjOWFiYjMxOTJkMDk1NzdiMTc3MWUzOTY5MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTM0
NSw4ICszNDUsMTAgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLAogICAgICAgICByZXR1cm47CiAK
ICAgICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRlOwotICAgIGlmIChvcHRpb25zLmNvbnRh
aW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdp
bikgJiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikKLSAgICAgICAgb3JpZ2luVHJhbnNsYXRl
ID0gc3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7Cisg
ICAgaWYgKG9wdGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbjo6VHJhbnNmb3JtT3JpZ2luKSAmJiBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKSB7Cisg
ICAgICAgIG9yaWdpblRyYW5zbGF0ZSA9IHN0eWxlLmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oYm91
bmRpbmdCb3gpOworICAgICAgICBzdHlsZS5hcHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0s
IG9yaWdpblRyYW5zbGF0ZSk7CisgICAgfQogCiAgICAgLy8gQ1NTIHRyYW5zZm9ybXMgdGFrZSBw
cmVjZWRlbmNlIG92ZXIgU1ZHIHRyYW5zZm9ybXMuCiAgICAgaWYgKGhhc0NTU1RyYW5zZm9ybSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IGI1YjkyM2UyYzE4ZTBkYTg4MThiYjJlODRiNTlmNjBlYjYzYTA5YzMuLjA4Y2ZiNzA0NWQ5MDQx
NWQzOWI1MjdlZDFiNmQ3ZDBiZmMzNWNmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ1MCwyMiArMTQ1MCw0MyBAQCBib29sIFJl
bmRlclN0eWxlOjphZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUZsb2F0UG9pbnQzRCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1Pcmln
aW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVQZXJzcGVjdGl2
ZU9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAoreworICAgIHJldHVy
biBib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHBlcnNw
ZWN0aXZlT3JpZ2luKCksIGJvdW5kaW5nQm94LnNpemUoKSk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5
bGU6OmFwcGx5UGVyc3BlY3RpdmUoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luVHJhbnNs
YXRlKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jt
cy0yLyNwZXJzcGVjdGl2ZQorICAgIC8vIFRoZSBwZXJzcGVjdGl2ZSBtYXRyaXggaXMgY29tcHV0
ZWQgYXMgZm9sbG93czoKKyAgICAvLyAxLiBTdGFydCB3aXRoIHRoZSBpZGVudGl0eSBtYXRyaXgu
CisKKyAgICAvLyAyLiBUcmFuc2xhdGUgYnkgdGhlIGNvbXB1dGVkIFggYW5kIFkgdmFsdWVzIG9m
IHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob3JpZ2luVHJhbnNs
YXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSk7CisKKyAgICAvLyAzLiBNdWx0aXBseSBieSB0
aGUgbWF0cml4IHRoYXQgd291bGQgYmUgb2J0YWluZWQgZnJvbSB0aGUgcGVyc3BlY3RpdmUoKSB0
cmFuc2Zvcm0gZnVuY3Rpb24sIHdoZXJlIHRoZSBsZW5ndGggaXMgcHJvdmlkZWQgYnkgdGhlIHZh
bHVlIG9mIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eQorICAgIHRyYW5zZm9ybS5hcHBseVBlcnNw
ZWN0aXZlKHVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcikpOworCisgICAgLy8gNC4gVHJhbnNsYXRl
IGJ5IHRoZSBuZWdhdGVkIGNvbXB1dGVkIFggYW5kIFkgdmFsdWVzIG9mIHBlcnNwZWN0aXZlLW9y
aWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLW9yaWdpblRyYW5zbGF0ZS54KCksIC1vcmln
aW5UcmFuc2xhdGUueSgpKTsKK30KKworRmxvYXRQb2ludDNEIFJlbmRlclN0eWxlOjpjb21wdXRl
VHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0CiB7Ci0g
ICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bQotICAgIC8v
IDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5z
Zm9ybS1vcmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsKICAgICBvcmln
aW5UcmFuc2xhdGUuc2V0WFkoYm91bmRpbmdCb3gubG9jYXRpb24oKSArIGZsb2F0UG9pbnRGb3JM
ZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpKTsKICAg
ICBvcmlnaW5UcmFuc2xhdGUuc2V0Wih0cmFuc2Zvcm1PcmlnaW5aKCkpOworICAgIHJldHVybiBv
cmlnaW5UcmFuc2xhdGU7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYg
b3JpZ2luVHJhbnNsYXRlKSBjb25zdAorewogICAgIGlmICghb3JpZ2luVHJhbnNsYXRlLmlzWmVy
bygpKQogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qob3JpZ2luVHJhbnNsYXRlLngoKSwg
b3JpZ2luVHJhbnNsYXRlLnkoKSwgb3JpZ2luVHJhbnNsYXRlLnooKSk7Ci0gICAgcmV0dXJuIG9y
aWdpblRyYW5zbGF0ZTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6dW5hcHBseVRyYW5zZm9ybU9y
aWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50M0Qm
IG9yaWdpblRyYW5zbGF0ZSkgY29uc3QKIHsKLSAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
Y3NzLXRyYW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gOC4gVHJhbnNsYXRlIGJ5IHRoZSBuZWdhdGVk
IGNvbXB1dGVkIFgsIFkgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgaWYg
KCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUz
ZCgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFu
c2xhdGUueigpKTsKIH0KQEAgLTE0NzcsNyArMTQ5OCw4IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFw
cGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UmVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIG9yaWdpblRyYW5zbGF0ZSA9
IGFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gpOworICAgIGF1dG8g
b3JpZ2luVHJhbnNsYXRlID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihib3VuZGluZ0JveCk7Cisg
ICAgYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOwogICAg
IGFwcGx5Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOwogICAg
IHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOwogfQpA
QCAtMTU3MSw3ICsxNTkzLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlNb3Rpb25QYXRoVHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS54KCksIHRyYXZlcnNhbFN0YXRl
LmN1cnJlbnQoKS55KCkpOwogCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNw
ZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgotICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNp
emUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOworICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2lu
ID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihib3VuZGluZ0JveCkueHkoKTsKICAgICBhdXRvIGFu
Y2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKICAgICBpZiAoIW9mZnNldEFuY2hvcigpLngoKS5pc0F1
dG8oKSkKICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFu
Y2hvcigpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNWIzNjE0
ZWI5YmExODU5MWI4ODQ2NzVlMDhiOWE3MmE1MzZjYTE2Ni4uZTYyN2Q0Mzg2NjQzNmMzOTJmMDE2
NDRiMzU1Y2UyYzc5YWQ1NjM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKQEAgLTcwNyw4ICs3MDcsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRy
YW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRl
LCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0
aW9uOjpTY2FsZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZzZXQgfTsKIAogICAgIGJv
b2wgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQzRCBh
cHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gpIGNvbnN0OworCisgICAgRmxvYXRQb2ludCBjb21wdXRlUGVyc3BlY3Rp
dmVPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CisgICAgdm9pZCBh
cHBseVBlcnNwZWN0aXZlKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdDsKKworICAgIEZsb2F0
UG9pbnQzRCBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gpIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWdpblRyYW5zbGF0ZSkgY29uc3Q7CiAgICAg
dm9pZCB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRQb2ludDNEJiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0OworCiAgICAgLy8gYXBwbHlUcmFu
c2Zvcm0gY2FsbHMgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKSwgdGhlbiBhcHBseUNTU1RyYW5zZm9y
bSgpLCBmb2xsb3dlZCBieSB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKCkuCiAgICAgdm9pZCBhcHBs
eVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3Jt
T3BlcmF0aW9ucykgY29uc3Q7CiAgICAgdm9pZCBhcHBseUNTU1RyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGUwNzBjN2E3MzA2
MjZhZDVjMjA3ZGVjNzIxODAzMzNlMzUxZWM4MzguLmFjYWQ0Zjg1NGIyZjZlNTgxMmI1OWYzNGYw
YjRkMDdjYzE1MzQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwCkBAIC0xMDcsOCArMTA3LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVu
dDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiAKICAgICAvLyBJZiB3ZSBkaWRuJ3Qg
aGF2ZSB0aGUgQ1NTICJ0cmFuc2Zvcm0iIHByb3BlcnR5IHNldCwgd2UgbXVzdCBhY2NvdW50IGZv
ciB0aGUgInRyYW5zZm9ybSIgYXR0cmlidXRlLgogICAgIGlmICghaGFzU3BlY2lmaWVkVHJhbnNm
b3JtICYmIHN0eWxlKSB7Ci0gICAgICAgIGF1dG8gYm91bmRpbmdCb3ggPSByZW5kZXJlcigpLT50
cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCk7Ci0gICAgICAgIGF1dG8gdCA9IGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWFkoKSwgYm91bmRpbmdCb3guc2l6
ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CisgICAgICAgIGF1dG8gdCA9IHN0eWxlLT5j
b21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVyKCktPnRyYW5zZm9ybVJlZmVyZW5jZUJveFJl
Y3QoKSkueHkoKTsKICAgICAgICAgbWF0cml4LnRyYW5zbGF0ZSh0KTsKICAgICAgICAgbWF0cml4
ICo9IHRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCk7CiAgICAgICAgIG1hdHJpeC50cmFuc2xhdGUo
LXQueCgpLCAtdC55KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgzMzg0MzY2ZmMxZjdmOTM2ZDA4ZWQyNzEwNjI1OTY4
Y2VhNDk0NWYuLjNiMDUzOWRjMTljZmFmZDA3NWIxZDA5ZDI5MjBkMThkYzIwYTJlYmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAyMi0wNC0wNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AaWdhbGlhLmNvbT4KKworICAgICAgICBQZXJzcGVjdGl2ZSBzaG91bGQgbm90IGJlIGFm
ZmVjdGVkIGJ5IHRyYW5zZm9ybS1vcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTc4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMxNDM4
MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGV4cGVjdGF0aW9uOiBhbmNob3IgcG9pbnRzIGluIHRoZSBHcmFwaGljc0xheWVyIHRyZWUg
ZHVtcHMgaGF2ZSBjaGFuZ2VkLgorCisgICAgICAgIFVuc2tpcCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13
aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbAorICAgICAgICBvbiBhbGwgcGxhdGZvcm1z
OiAndHJhbnNmb3JtLWJveCcgY2hhbmdlcyBub3cgcHJvcGVydGx5IHRyaWdnZXIgR3JhcGhpY3NM
YXllciBnZW9tZXRyeSB1cGRhdGVzLgorCisgICAgICAgICogY29tcG9zaXRpbmcvdGlsaW5nL2Nv
dmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUt
Y292ZXJhZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wNC0wNSAgTWF0dGVvIEZsb3JlcyAgPG1hdHRl
b19mbG9yZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIF0gYWNjZXNzaWJpbGl0eS9tYWMv
ZXhwYW5kZWQtbm90aWZpY2F0aW9uLmh0bWwgaXMgYSBmbGFreSB0ZXh0IGZhaWx1cmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50
LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1l
eHBlY3RlZC50eHQKaW5kZXggN2ZkMzY2NzEyOWJjNmJmNDhjNDU5NmY4MWQxYTg2Yzg1OTAzZDZl
Ni4uZDE1ZWE5NTVhMjA3NDljNzJkZDNjOTg1ZGRjMmUzYmZhMmZlNGY4NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25k
YXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBl
Y3RlZC50eHQKQEAgLTI0LDkgKzI0LDEwIEBACiAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKICAgICAgICAgICAgICAgICAgIChvZmZzZXRGcm9tUmVuZGVyZXIgd2lkdGg9MSBoZWlnaHQ9
MSkKICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDEuMDApCisgICAgICAgICAgICAg
ICAgICAoYW5jaG9yIDAuNTEgMC41MCkKICAgICAgICAgICAgICAgICAgIChib3VuZHMgNTgzLjAw
IDU3OC4wMCkKICAgICAgICAgICAgICAgICAgIChiYWNraW5nU3RvcmVBdHRhY2hlZCAxKQotICAg
ICAgICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBb
MC4wMCAxLjAwIDAuMDAgMC4wMF0gWy0zMDcuNTAgLTI5MC4wMCAxLjAwIC0xLjAwXSBbMC4wMCAw
LjAwIDAuMDAgMS4wMF0pCisgICAgICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEu
MDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbLTMwMC4wMCAtMjkwLjAw
IDEuMDAgLTEuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgICAgIChj
aGlsZHJlbiAxCiAgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAg
ICAgICAgICAgICAgKHBvc2l0aW9uIDAuMDAgLTQwMC4wMCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVy
YWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVj
dGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dAppbmRleCAxYjA2NDU4
ZjFlMWU4MzM3YzFlMzNjYjA4NWExMTZiNmE5NzM0MzJkLi4yNDZlYjRhOTUzYzdhNmVlM2I1YmYw
NTRmOWFmZTJjNmNiODUyZWUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90
aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9s
bGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0CkBAIC0yOSw4ICsyOSw5IEBACiAgICAgICAg
ICAgKGNoaWxkcmVuIDIKICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAg
IChib3VuZHMgb3JpZ2luIDAuMDAgOTAwLjAwKQorICAgICAgICAgICAgICAoYW5jaG9yIDAuNTEg
MC41MCkKICAgICAgICAgICAgICAgKGJvdW5kcyA1ODUuMDAgNTAwLjAwKQotICAgICAgICAgICAg
ICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4w
MCAwLjAwXSBbMi45MyAyLjUwIDEuMDAgLTAuMDFdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAg
ICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4w
MCAxLjAwIDAuMDAgMC4wMF0gWzMuMDAgMi41MCAxLjAwIC0wLjAxXSBbMC4wMCAwLjAwIDAuMDAg
MS4wMF0pCiAgICAgICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgOTAwLjAwIDU4NS4wMCB4
IDUwMC4wMCkKICAgICAgICAgICAgICAgKGNvdmVyYWdlIHJlY3QgMC4wMCwgOTAwLjAwIDU4NS4w
MCB4IDUwMC4wMCkKICAgICAgICAgICAgICAgKGludGVyc2VjdHMgY292ZXJhZ2UgcmVjdCAxKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDdkNDBiNTUz
MDBkZDJhZTMyNDIzMjViOGI3ZGQwYWM3NTg0ODJkM2QuLjU4OGJmZTlkMTJmNmUzNjA1ZTdlODNi
M2JjNzY5ZWE3MzZjNjA1ZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTY1MCw5ICs2NTAsNiBAQCB3ZWJraXQub3JnL2IvMjMwMjc3IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3BlcnNwZWN0aQogd2Vi
a2l0Lm9yZy9iLzIzMDI3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNmb3Jtcy9keW5hbWljLWZpeGVkLXBvcy1jYi1jaGFuZ2UuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDI3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9wZXJzcGVjdGl2ZS10cmFuc2Zvcm1zLWVxdWl2YWxlbmNl
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyAndHJhbnNmb3JtLWJveCcgc3VwcG9ydCBp
cyBicm9rZW4gZm9yIGNvbXBvc2l0ZWQgZWxlbWVudHMuCi13ZWJraXQub3JnL2IvMjM3NTUzIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlv
bi90cmFuc2Zvcm0tYm94LXdpbGwtY2hhbmdlLXRyYW5zZm9ybS1sYXllci5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMzc1MDIgZmFzdC9kb20vUmFuZ2UvZ2V0Q2xp
ZW50UmVjdHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNzUwMiBmYXN0L211bHRp
Y29sL25ld211bHRpY29sL2hpZGUtYm94LXZlcnRpY2FsLWxyLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMzc1MDIgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC92
ZXJ0aWNhbC1sci9mbG9hdC1iaWctbGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA4NjM0ZjY2MzhhYTg2
MzBjOGNiOWE0ZWQ5NTJhZjk0MGQwYzFjNDAuLjI3NWU1ZTdlOTI2ZWY2NDlkMWExNWI2NDhlYmJj
M2Q2MWIyMTZiOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMDAyLDkgKzMwMDIsNiBAQCBmYXN0L2NhbnZhcy9zZXQtY29sb3JzLmh0bWwgWyBGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMjk1OCBjc3MzL2ZpbHRlcnMvc3ZnLWJsdXItZmlsdGVy
LWNsaXBwZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jICd0cmFuc2Zvcm0tYm94JyBz
dXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5vcmcvYi8y
Mzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
YW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIwMzMwNSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvcHJvcGVydGllcy12YWx1ZS0w
MDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjAzMzA1IFsgRGVidWcgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvcHJvcGVy
dGllcy12YWx1ZS1pbmhlcml0LTAwMS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMDMzNTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMy5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjk1YWIwYWZi
MjcxNmQ0OGY3MjY0NjliZmEwMzJkMDI1MGM1OGRhOC4uN2NlZjY4MzE5YjI5OGQyMzZmY2RjZWEx
OTYzMzQ1YWJlZGM2MDk5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTIzMjQsOSArMjMyNCw2IEBAIHdlYmtpdC5vcmcvYi8xODk0NDggWyBNb2phdmUg
Q2F0YWxpbmEgXSBmYXN0L3RleHQvb3Nha2Etc3ludGhldGljLWJvbGQuaHRtbCBbIFNrCiAKIHdl
YmtpdC5vcmcvYi8yMzAzMjcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvY3Jhc2h0ZXN0cy90cmFuc2Zvcm0tbWFycXVlZS1yZXNpemUtZGl2LWltYWdl
LTAwMS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyAndHJhbnNmb3JtLWJveCcgc3VwcG9ydCBp
cyBicm9rZW4gZm9yIGNvbXBvc2l0ZWQgZWxlbWVudHMuCi13ZWJraXQub3JnL2IvMjM3NTUzIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlv
bi90cmFuc2Zvcm0tYm94LXdpbGwtY2hhbmdlLXRyYW5zZm9ybS1sYXllci5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi0KICMgcmRhcjovLzgzNTkxMDQwCiBbIE1vbnRlcmV5KyBdIGVkaXRpbmcv
bWFjL2RpY3Rpb25hcnktbG9va3VwL2RpY3Rpb25hcnktbG9va3VwLWlucHV0Lmh0bWwgWyBDcmFz
aCBdCiBbIE1vbnRlcmV5KyBdIGVkaXRpbmcvbWFjL2RpY3Rpb25hcnktbG9va3VwL2RpY3Rpb25h
cnktbG9va3VwLWluc2lkZS1zZWxlY3Rpb24uaHRtbCBbIENyYXNoIF0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTM4YzRkYjRiYTdkZDMyZDZhNDE5MmI5
MjA0Y2U5NmE2N2RlYWRmMi4uOTAwYzhiZjFjMzYyYTNlNmJhYmZkMmY0Y2ExOGQ1ZTM2OWUxMDM2
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkzOSw5
ICs5MzksNiBAQCB3ZWJraXQub3JnL2IvMTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zaAogd2Via2l0Lm9yZy9iLzE0OTI0NSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wt
c3Bhbi1hbGwtYmxvY2stc2libGluZy0wMDMueGh0IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTQ5
MjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0
aWNvbC1zcGFuLWFsbC1tYXJnaW4tbmVzdGVkLWZpcnN0Y2hpbGQtMDAxLnhodCBbIFNraXAgXQog
Ci0jICd0cmFuc2Zvcm0tYm94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVt
ZW50cy4KLXdlYmtpdC5vcmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2Ut
dHJhbnNmb3JtLWxheWVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyBUT0RPIEVYSUYt
cmVzb2x1dGlvbiBpcyBub3Qgc3VwcG9ydGVkCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RlbnNpdHktc2l6ZS1jb3JyZWN0aW9uLyBbIFNraXAgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456980</attachid>
            <date>2022-04-07 16:06:39 -0700</date>
            <delta_ts>2022-04-08 03:56:42 -0700</delta_ts>
            <desc>Patch, v3</desc>
            <filename>bug-211787-20220407160638.patch</filename>
            <type>text/plain</type>
            <size>33029</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQwYWU2MWQxODg4ZjJi
Yjk2MGYwMmMxMDQ1OGQ1MTBlYzQwYzljYy4uYzczMmUzOWE5YmYzOGU4NTk1MTk0YzkwMGY0YTEx
ZTI0MmIzYmZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIyLTA0LTA3ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9y
aWdpbkZvclBhaW50aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZH
VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVQZXJzcGVjdGl2ZU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlQZXJzcGVj
dGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZVRyYW5z
Zm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlU
cmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnVu
YXBwbHlUcmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJh
bnNmb3JtIGNvbnN0KToKKwogMjAyMi0wNC0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSByZWZlcmVuY2UgYm94IC8gQ1RNIGNv
bXB1dGF0aW9uIGluIFJlbmRlckxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAppbmRleCBmNmQ1OWE1ZTFkNzQyZDRjNTI0OGE5N2YwZDRlYWFmYjRlZTIz
OGI5Li4yODM0NmMzYTZiYTBhY2FhYzA5MWU5N2Q5YmFkMzBkMmRmMTNkYmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTE5OTcsNyArMTk5Nyw3
IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVUcmFuc2Zvcm1lZEV4dGVudFZpYVRyYW5z
Zm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiByCiAKICAgICBib29sIGFwcGx5VHJhbnNmb3JtT3Jp
Z2luID0gY29udGFpbnNSb3RhdGlvbihzdHlsZS50cmFuc2Zvcm0oKS5vcGVyYXRpb25zKCkpIHx8
IHN0eWxlLnRyYW5zZm9ybSgpLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKICAgICBpZiAo
YXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgdHJhbnNmb3JtT3JpZ2luID0gcmVuZGVy
ZXJCb3gubG9jYXRpb24oKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS50cmFuc2Zv
cm1PcmlnaW5YWSgpLCByZW5kZXJlckJveC5zaXplKCkpOworICAgICAgICB0cmFuc2Zvcm1Pcmln
aW4gPSBzdHlsZS5jb21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVyQm94KS54eSgpOwogICAg
ICAgICAvLyBJZ25vcmUgdHJhbnNmb3JtT3JpZ2luWiBiZWNhdXNlIHdlJ2xsIGJhaWwgaWYgd2Ug
ZW5jb3VudGVyIGFueSAzRCB0cmFuc2Zvcm1zLgogICAgICAgICBmbG9hdEJvdW5kcy5tb3ZlQnko
LXRyYW5zZm9ybU9yaWdpbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggMWY1NTZmYjZlYTNjODNkOTRkZjA1ZmE4YzQ4ODlkMzgxZWZmNDMwYy4u
ZGM4ZDI5NWQ0YWFjZjY3MmMxZjlhNGE3MDQ0NzYxODM3YzlhMzMyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNzg3LDQzICsxNzg3LDYyIEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9z
aXRpb25zRmxhZz4qIGZsYWdzCiAgICAgcmV0dXJuIHBvc2l0aW9uT3JPZmZzZXRDaGFuZ2VkOwog
fQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zv
cm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRy
aXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogW0xCU0VdIFVwc3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2Rl
bE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJl
cigpKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25j
YXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyZW5kZXJCb3guaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpCisgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgY29uc3QgYXV0byYg
c3R5bGUgPSByZW5kZXJCb3guc3R5bGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIXN0eWxlLmhhc1BlcnNwZWN0aXZlKCkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJlZmVyZW5jZUJveFJlY3QgPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzSWZOZWVkZWQocmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0
eWxlKSwgcmVuZGVyZXIoKSk7Ci0gICAgYXV0byBzbmFwcGVkTGF5ZXJSZWN0ID0gc25hcFJlY3RU
b0RldmljZVBpeGVsc0lmTmVlZGVkKGxheWVyUmVjdCwgcmVuZGVyZXIoKSk7CisgICAgYXV0byB0
cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc0lmTmVlZGVk
KHJlbmRlcmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChzdHlsZSksIHJlbmRlcmVyKCkp
OworICAgIGF1dG8gcGVyc3BlY3RpdmVPcmlnaW4gPSBzdHlsZS5jb21wdXRlUGVyc3BlY3RpdmVP
cmlnaW4odHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCk7CiAKLSAgICBhdXRvIHBlcnNwZWN0aXZl
T3JpZ2luID0gcmVmZXJlbmNlQm94UmVjdC5sb2NhdGlvbigpIC0gdG9GbG9hdFNpemUoc25hcHBl
ZExheWVyUmVjdC5sb2NhdGlvbigpKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS5w
ZXJzcGVjdGl2ZU9yaWdpbigpLCByZWZlcmVuY2VCb3hSZWN0LnNpemUoKSk7CisgICAgLy8gSW4g
dGhlIHJlZ3VsYXIgY2FzZSBvZiBhIG5vbi1jbGlwcGVkLCBub24tc2Nyb2xsZWQgR3JhcGhpY3NM
YXllciwgYWxsIHRyYW5zZm9ybWF0aW9ucworICAgIC8vICh2aWEgQ1NTICd0cmFuc2Zvcm0nIC8g
J3BlcnNwZWN0aXZlJykgYXJlIGFwcGxpZWQgd2l0aCByZXNwZWN0IHRvIGEgcHJlZGVmaW5lZCBh
bmNob3IgcG9pbnQsCisgICAgLy8gd2hpY2ggZGVwZW5kcyBvbiB0aGUgY2hvc2VuIENTUyAndHJh
bnNmb3JtLWJveCcgLyAndHJhbnNmb3JtLW9yaWdpbicgcHJvcGVydGllcy4KKyAgICAvLworICAg
IC8vIEEgdHJhbnNmb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIENTUyAndHJhbnNmb3JtJyBwcm9wZXJ0
eSBpcyBhcHBsaWVkLCBieSB0cmFuc2xhdGluZworICAgIC8vIHRvIHRoZSAndHJhbnNmb3JtIG9y
aWdpbicsIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiwgYW5kIHRyYW5zbGF0aW5nIGJhY2su
CisgICAgLy8gV2hlbiBhbiBlbGVtZW50IHNwZWNpZmllcyBhIENTUyAncGVyc3BlY3RpdmUnIHBy
b3BlcnR5LCB0aGUgcGVyc3BlY3RpdmUgdHJhbnNmb3JtYXRpb24gbWF0cml4CisgICAgLy8gdGhh
dCdzIGNvbXB1dGVkIGhlcmUgaXMgcHJvcGFnYXRlZCB0byB0aGUgR3JhcGhpY3NMYXllciBieSBj
YWxsaW5nIHNldENoaWxkcmVuVHJhbnNmb3JtKCkuCisgICAgLy8KKyAgICAvLyBIb3dldmVyIHRo
ZSBHcmFwaGljc0xheWVyIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyAoZS5nLiBDQSBvbiBtYWNP
UykgYXBwbHkgdGhlIGNoaWxkcmVuIHRyYW5zZm9ybSwKKyAgICAvLyBkZWZpbmVkIG9uIHRoZSBw
YXJlbnQsIHdpdGggcmVzcGVjdCB0byB0aGUgYW5jaG9yIHBvaW50IG9mIHRoZSBwYXJlbnQsIHdo
ZW4gcmVuZGVyaW5nIGNoaWxkIGVsZW1lbnRzLgorICAgIC8vIFRoaXMgaXMgd3JvbmcsIGFzIHRo
ZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiAoYXBwbGllZCB0byBhIGNoaWxkIG9mIHRoZSBl
bGVtZW50IGRlZmluaW5nIHRoZQorICAgIC8vIDNkIGVmZmVjdCksIG11c3QgYmUgaW5kZXBlbmRh
bnQgb2YgdGhlIGNob3NlbiB0cmFuc2Zvcm0tb3JpZ2luICh0aGUgcGFyZW50cyB0cmFuc2Zvcm0g
b3JpZ2luCisgICAgLy8gbXVzdCBub3QgYWZmZWN0IGl0cyBjaGlsZHJlbikuCisgICAgLy8KKyAg
ICAvLyBUbyBjaXJjdW12ZW50IHRoaXMsIGV4cGxpY2l0ZWx5IHJlbW92ZSB0aGUgdHJhbnNmb3Jt
LW9yaWdpbiBkZXBlbmRlbmN5IGluIHRoZSBwZXJzcGVjdGl2ZSBtYXRyaXguCisgICAgYXV0byB0
cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGluZygpOworCisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHN0eWxlLnVuYXBwbHlUcmFuc2Zvcm1P
cmlnaW4odHJhbnNmb3JtLCB0cmFuc2Zvcm1PcmlnaW4pOworICAgIHN0eWxlLmFwcGx5UGVyc3Bl
Y3RpdmUodHJhbnNmb3JtLCByZW5kZXJlcigpLCBwZXJzcGVjdGl2ZU9yaWdpbik7CisgICAgc3R5
bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCB0cmFuc2Zvcm1PcmlnaW4pOworICAg
IHJldHVybiB0cmFuc2Zvcm07Cit9CiAKLSAgICAvLyBBIHBlcnNwZWN0aXZlIG9yaWdpbiBvZiAw
LDAgbWFrZXMgdGhlIHZhbmlzaGluZyBwb2ludCBpbiB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50
LgotICAgIC8vIFdlIHdhbnQgaXQgdG8gYmUgaW4gdGhlIHRvcC1sZWZ0LCBzbyBzdWJ0cmFjdCBo
YWxmIHRoZSBoZWlnaHQgYW5kIHdpZHRoLgotICAgIHBlcnNwZWN0aXZlT3JpZ2luIC09IHNuYXBw
ZWRMYXllclJlY3Quc2l6ZSgpIC8gMi4wZjsKK0Zsb2F0UG9pbnQzRCBSZW5kZXJMYXllcjo6dHJh
bnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKS5o
YXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7Ci0gICAgdC50cmFuc2xhdGUocGVyc3BlY3RpdmVPcmln
aW4ueCgpLCBwZXJzcGVjdGl2ZU9yaWdpbi55KCkpOwotICAgIHQuYXBwbHlQZXJzcGVjdGl2ZShz
dHlsZS51c2VkUGVyc3BlY3RpdmUocmVuZGVyZXIoKSkpOwotICAgIHQudHJhbnNsYXRlKC1wZXJz
cGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdpbi55KCkpOworICAgIGNvbnN0IGF1
dG8mIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOworICAgIGF1dG8gcmVmZXJlbmNlQm94UmVj
dCA9IHJlbmRlcmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChzdHlsZSk7CiAKLSAgICBy
ZXR1cm4gdDsKKyAgICBhdXRvIG9yaWdpbiA9IHN0eWxlLmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4o
cmVmZXJlbmNlQm94UmVjdCk7CisgICAgaWYgKHJlbmRlcmVyTmVlZHNQaXhlbFNuYXBwaW5nKCkp
CisgICAgICAgIG9yaWdpbi5zZXRYWShyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0UG9p
bnQob3JpZ2luLnh5KCkpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOworICAgIHJldHVybiBvcmlnaW47CiB9CiAKIEZsb2F0UG9pbnQgUmVuZGVyTGF5ZXI6OnBl
cnNwZWN0aXZlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8gRklYTUU6
IFRoaXMgdXNlcyB0aGUgd3JvbmcsIHRyYW5zZm9ybS1ib3ggdW5hd2FyZSwgZ2VvbWV0cnkuCi0g
ICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChyZW5kZXJlcigpLnN0eWxlKCkucGVy
c3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpKTsKKyAgICBy
ZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJzcGVj
dGl2ZU9yaWdpbigpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QocmVuZGVy
ZXIoKS5zdHlsZSgpKS5zaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb250YWlu
ZXJGb3JQb3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBlIHBvc2l0aW9u
LCBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCmluZGV4IDdkM2NiMTU3ZDBmYmYyMDJlYTdkOGE2NDkyM2Y4MDRkZjMwOTFjNzIuLjc2
NmRmMzdjNDUzOGEzZjFiOWIyODllNWYyYzI1NjAzZGQzYWQyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MzksMTAgKzczOSwxMSBAQCBwdWJsaWM6CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyYWJsZVRyYW5zZm9ybShPcHRpb25TZXQ8UGFpbnRC
ZWhhdmlvcj4pIGNvbnN0OwogICAgIAogICAgIC8vIEdldCB0aGUgcGVyc3BlY3RpdmUgdHJhbnNm
b3JtLCB3aGljaCBpcyBhcHBsaWVkIHRvIHRyYW5zZm9ybWVkIHN1YmxheWVycy4KLSAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyIGhhcyBhIC13ZWJraXQtcGVyc3BlY3RpdmUuCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSBwZXJzcGVjdGl2ZS4KICAgICAvLyBO
b3RlIHRoYXQgdGhpcyB0cmFuc2Zvcm0gaGFzIHRoZSBwZXJzcGVjdGl2ZS1vcmlnaW4gYmFrZWQg
aW4uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVUcmFuc2Zvcm0oY29uc3Qg
TGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBw
ZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVP
cmlnaW4oKSBjb25zdDsKKyAgICBGbG9hdFBvaW50M0QgdHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRp
bmcoKSBjb25zdDsKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gcmVuZGVy
ZXIoKS5zdHlsZSgpLnByZXNlcnZlczNEKCk7IH0KICAgICBib29sIGhhczNEVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJhbnNmb3JtLT5pc0FmZmluZSgpOyB9
CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNU
cmFuc2Zvcm1lZEFuY2VzdG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFhYzNkZjdj
ZjQ5YmI5MjIuLjBlY2E5ZjkyYTQ3N2IzZTAwZTg0NWJjODZhOTM5YjBkZDM4Y2I4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC02
MzcsMTYgKzYzNywxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3BhY2l0eShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRPcGFjaXR5
KGNvbXBvc2l0aW5nT3BhY2l0eShzdHlsZS5vcGFjaXR5KCkpKTsKIH0KIAotdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCit2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgbV9vd25pbmdMYXllci50cmFuc2Zv
cm0oKSwgYnV0IHRoYXQgY3VycmVudGx5IGhhcyB0cmFuc2Zvcm0tb3JpZ2luCi0gICAgLy8gYmFr
ZWQgaW50byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhhdC4KICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0OwotICAgIGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIHdyb25nLCB0cmFuc2Zvcm0tYm94IHVuYXdhcmUsIGdl
b21ldHJ5LgotICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKHQsIHJlbmRlcmVyKCku
c3R5bGUoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhtX293bmluZ0xheWVyLnJlbmRlcmVyQm9y
ZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5bGU6OmluZGl2aWR1
YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKLSAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodCwg
Y29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKLSAgICB9CisgICAgaWYgKG1f
b3duaW5nTGF5ZXIuaGFzVHJhbnNmb3JtKCkpCisgICAgICAgIG1fb3duaW5nTGF5ZXIudXBkYXRl
VHJhbnNmb3JtRnJvbVN0eWxlKHQsIHN0eWxlLCBSZW5kZXJTdHlsZTo6aW5kaXZpZHVhbFRyYW5z
Zm9ybU9wZXJhdGlvbnMpOwogICAgIAogICAgIGlmIChtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXll
cikgewogICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+c2V0VHJhbnNmb3JtKHQp
OwpAQCAtNjU3LDIwICs2NTIsMjUgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRy
YW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KGNvbnN0IExheW91dFJlY3QmIHBy
aW1hcnlHcmFwaGljc0xheWVyUmVjdCwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUGFyZW50R3JhcGhp
Y3NMYXllcikKIHsKKyAgICBhdXRvIGRlZmF1bHRBbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRCB7
IDAuNSwgMC41LCAwIH07CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQ
cm9wZXJ0eSgpKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdEFuY2hvclBvaW50ID0gRmxvYXRQb2lu
dDNEIHsgMC41LCAwLjUsIDAgfTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRBbmNob3JQ
b2ludChkZWZhdWx0QW5jaG9yUG9pbnQpOwogICAgICAgICBpZiAobV9jb250ZW50c0NvbnRhaW5t
ZW50TGF5ZXIpCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+c2V0QW5j
aG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKIAorICAgICAgICBpZiAobV9jaGlsZENvbnRh
aW5tZW50TGF5ZXIpCisgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+c2V0QW5j
aG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKKworICAgICAgICBpZiAobV9zY3JvbGxDb250
YWluZXJMYXllcikKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldEFuY2hv
clBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKICAgICAgICAgaWYgKG1fc2Nyb2xsZWRDb250
ZW50c0xheWVyKQogICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNl
cnZlczNEKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0IGF1dG8g
ZGV2aWNlU2NhbGVGYWN0b3IgPSB0aGlzLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIGF1dG8g
Ym9yZGVyQm94UmVjdCA9IG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0KCk7Ci0g
ICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRp
bmcoYm9yZGVyQm94UmVjdCk7CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBtX293bmluZ0xh
eWVyLnRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CiAgICAgYXV0byBsYXllck9mZnNldCA9
IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBvaW50KG9mZnNldEZyb21QYXJlbnRH
cmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gYW5jaG9yID0gRmxv
YXRQb2ludDNEIHsKICAgICAgICAgcHJpbWFyeUdyYXBoaWNzTGF5ZXJSZWN0LndpZHRoKCkgPyAo
KGxheWVyT2Zmc2V0LngoKSAtIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC54KCkpICsgdHJhbnNm
b3JtT3JpZ2luLngoKSkgLyBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3Qud2lkdGgoKSA6IDAuNWYs
CkBAIC02ODUsMTEgKzY4NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hp
bGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogCiAgICAgYXV0
byByZW1vdmVDaGlsZHJlblRyYW5zZm9ybUZyb21MYXllcnMgPSBbJl0oR3JhcGhpY3NMYXllciog
bGF5ZXJUb0lnbm9yZSA9IG51bGxwdHIpIHsKICAgICAgICAgYXV0byogY2xpcHBpbmdMYXllciA9
IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKLSAgICAgICAgaWYgKGNsaXBwaW5nTGF5ZXIgJiYgY2xp
cHBpbmdMYXllciAhPSBsYXllclRvSWdub3JlKQorICAgICAgICBpZiAoY2xpcHBpbmdMYXllciAm
JiBjbGlwcGluZ0xheWVyICE9IGxheWVyVG9JZ25vcmUpIHsKICAgICAgICAgICAgIGNsaXBwaW5n
TGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHsgfSk7Ci0gICAgICAgIAorICAgICAgICAgICAg
Y2xpcHBpbmdMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKKyAgICAg
ICAgfQorCiAgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5lckxheWVyICYmIG1fc2Nyb2xsQ29u
dGFpbmVyTGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkgewogICAgICAgICAgICAgbV9zY3JvbGxDb250
YWluZXJMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oeyB9KTsKKyAgICAgICAgICAgIG1fc2Ny
b2xsQ29udGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CiAg
ICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2VydmVzM0QoZmFsc2Up
OwogICAgICAgICB9CiAKQEAgLTcwMiw3ICs3MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBsYXllckZvckNoaWxkcmVuVHJh
bnNmb3JtID0gWyZdIHsKKyAgICBhdXRvIGxheWVyRm9yQ2hpbGRyZW5UcmFuc2Zvcm0gPSBbJl0o
KSAtPiBzdGQ6OnR1cGxlPEdyYXBoaWNzTGF5ZXIqLCBGbG9hdFJlY3Q+IHsKICAgICAgICAgaWYg
KG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpIHsKICAgICAgICAgICAgIEFTU0VSVChpczxSZW5kZXJC
b3g+KHJlbmRlcmVyKCkpKTsgLy8gU2Nyb2xsIGNvbnRhaW5lciBsYXllcnMgYXJlIG9ubHkgY3Jl
YXRlZCBmb3IgUmVuZGVyQm94IGRlcml2ZWQgcmVuZGVyZXJzLgogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpLCBzY3JvbGxDb250
YWluZXJMYXllckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKSk7CkBAIC03MTAs
MTkgKzcxMywyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFu
c2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICBpZiAoYXV0byog
bGF5ZXIgPSBjbGlwcGluZ0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1
cGxlKGxheWVyLCBjbGlwcGluZ0xheWVyQm94KHJlbmRlcmVyKCkpKTsKIAotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgYm9yZGVyQm94UmVjdCk7
CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9ncmFwaGljc0xheWVyLmdldCgpLCBy
ZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSk7CiAgICAgfTsKIAotICAgIGF1
dG8gW2xheWVyRm9yUGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlUmVsYXRpdmVCb3hdID0gbGF5ZXJG
b3JDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIC8vIEZJWE1FOiBwZXJzcGVjdGl2ZVJlbGF0aXZl
Qm94IGlzbid0IHF1aXRlIHJpZ2h0IGhlcmUuIFRoaXMgbmVlZHMgd29yazogd2Via2l0Lm9yZy9i
LzIxMTc4Ny4KLSAgICBhdXRvIHBlcnNwZWN0aXZlVHJhbnNmb3JtID0gb3duaW5nTGF5ZXIoKS5w
ZXJzcGVjdGl2ZVRyYW5zZm9ybShwZXJzcGVjdGl2ZVJlbGF0aXZlQm94KTsKLSAgICAKLSAgICAv
LyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBsYXllcnMsIHdlIG5lZWQgdGhlIGNoaWxkcmVuIHRyYW5z
Zm9ybSBvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyIHRvCi0gICAgLy8gYWZmZWN0IGNoaWxkcmVu
IG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0QodHJ1ZSku
Ci0gICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgPT0gbV9zY3JvbGxDb250YWluZXJMYXllcikK
LSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwot
ICAgIAotICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxkcmVuVHJhbnNmb3JtKHBlcnNw
ZWN0aXZlVHJhbnNmb3JtKTsKKyAgICBhdXRvIFtsYXllckZvclBlcnNwZWN0aXZlLCBsYXllckZv
clBlcnNwZWN0aXZlUmVjdF0gPSBsYXllckZvckNoaWxkcmVuVHJhbnNmb3JtKCk7CisgICAgaWYg
KGxheWVyRm9yUGVyc3BlY3RpdmUgIT0gbV9ncmFwaGljc0xheWVyKSB7CisgICAgICAgIC8vIElm
IHdlIGhhdmUgc2Nyb2xsaW5nIGxheWVycywgd2UgbmVlZCB0aGUgY2hpbGRyZW4gdHJhbnNmb3Jt
IG9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgdG8KKyAgICAgICAgLy8gYWZmZWN0IGNoaWxkcmVu
IG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0QodHJ1ZSku
CisgICAgICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlID09IG1fc2Nyb2xsQ29udGFpbmVyTGF5
ZXIpCisgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2VydmVzM0Qo
dHJ1ZSk7CisKKyAgICAgICAgYXV0byBwZXJzcGVjdGl2ZUFuY2hvclBvaW50ID0gRmxvYXRQb2lu
dDNEIHsKKyAgICAgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LndpZHRoKCkgPyAodHJh
bnNmb3JtT3JpZ2luLngoKSAtIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LngoKSkgLyBsYXllckZv
clBlcnNwZWN0aXZlUmVjdC53aWR0aCgpIDogMC41ZiwKKyAgICAgICAgICAgIGxheWVyRm9yUGVy
c3BlY3RpdmVSZWN0LmhlaWdodCgpID8gKHRyYW5zZm9ybU9yaWdpbi55KCkgLSBsYXllckZvclBl
cnNwZWN0aXZlUmVjdC55KCkpIC8gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3QuaGVpZ2h0KCkgOiAw
LjVmLAorICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luLnooKQorICAgICAgICB9OworCisgICAg
ICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldEFuY2hvclBvaW50KHBlcnNwZWN0aXZlQW5jaG9y
UG9pbnQpOworICAgIH0KKworICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxkcmVuVHJh
bnNmb3JtKG1fb3duaW5nTGF5ZXIucGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSk7CiAgICAgcmVtb3Zl
Q2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzKGxheWVyRm9yUGVyc3BlY3RpdmUpOwogfQogCkBA
IC0yOTcwLDE3ICsyOTgwLDYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMoUGFpbnRlZENvbnRlbnRzSW5mbyYgY29udGVudHNJbmZvKQogICAgIGltYWdlLT5z
dGFydEFuaW1hdGlvbigpOwogfQogCi1GbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNraW5nOjpj
b21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVy
Qm94KSBjb25zdAotewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyKCku
c3R5bGUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0gICAgb3JpZ2luLnNldFhZKHJv
dW5kUG9pbnRUb0RldmljZVBpeGVscyhwb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRyYW5zZm9y
bU9yaWdpblhZKCksIGJvcmRlckJveC5zaXplKCkpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSk7Ci0g
ICAgb3JpZ2luLnNldFooc3R5bGUudHJhbnNmb3JtT3JpZ2luWigpKTsKLQotICAgIHJldHVybiBv
cmlnaW47Ci19Ci0KIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcC1sZWZ0IG9mIHRo
aXMgY29tcG9zaXRpbmcgbGF5ZXIgYXQgd2hpY2ggdGhlIHJlbmRlcmVyJ3MgY29udGVudHMgYXJl
IHBhaW50ZWQuCiBMYXlvdXRTaXplIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudE9mZnNldElu
Q29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggODU4N2Q2MTQwZWExZDE1MzBkN2VkM2ZkNTZiMjdk
OWFlODY1MmM2MS4uYWJlNDQ5ZWU2YmYxZGFiMDMwNmQzODViZWZmYjczZjUyMTNlMGRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMzMx
LDkgKzMzMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kTGF5ZXJQYWludHNG
aXhlZFJvb3RCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50T2Zmc2V0
SW5Db21wb3NpdGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgLy8gUmVzdWx0IGlzIHRyYW5zZm9ybSBv
cmlnaW4gaW4gZGV2aWNlIHBpeGVscy4KLSAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRyYW5zZm9y
bU9yaWdpbkZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29uc3Q7Ci0K
ICAgICBMYXlvdXRTaXplIG9mZnNldFJlbGF0aXZlVG9SZW5kZXJlck9yaWdpbkZvckRlc2NlbmRh
bnRMYXllcnMoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGVuc3VyZUNsaXBwaW5nU3RhY2tMYXll
cnMoTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2smKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMjM1M2MxNzcwNjkyZjNk
NzEzNWMyODkxYWU2ODNmYTM0MzM4N2MzNi4uMzg3ODc5OTBiMWFkNWI1NjVjYjgwOTQ0NTQwOTc1
YmE4NWM5NTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2MzcsNiArMTYzNyw3IEBAIHN0YXRpYyBib29sIHJlY29t
cG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgb2xk
U3R5bGUsCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zbGF0ZSgpICE9IG5ld1N0eWxlLnRyYW5z
bGF0ZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnNjYWxlKCkgIT0gbmV3U3R5bGUuc2NhbGUoKQog
ICAgICAgICB8fCBvbGRTdHlsZS5yb3RhdGUoKSAhPSBuZXdTdHlsZS5yb3RhdGUoKQorICAgICAg
ICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1Cb3goKSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1Cb3goKQog
ICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkgIT0gbmV3U3R5bGUudHJhbnNm
b3JtT3JpZ2luWCgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKSAhPSBu
ZXdTdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUudHJhbnNmb3Jt
T3JpZ2luWigpICE9IG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdpblooKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggY2QzYTU0MGRmNTU2YTEz
ZDQzMmY4Y2Q2MDA3ZDU2NzNlZDlkNjYyNS4uYmQ3MTQzYjgwODE3MzY3NmI3MWYyYWYyMzk5NWIw
NGE0ODNmNTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0xNDUwLDIyICsxNDUwLDQzIEBAIGJvb2wgUmVuZGVyU3R5bGU6OmFmZmVj
dGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRmxv
YXRQb2ludDNEIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAor
RmxvYXRQb2ludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2luKGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJvdW5kaW5nQm94Lmxv
Y2F0aW9uKCkgKyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQocGVyc3BlY3RpdmVPcmlnaW4oKSwg
Ym91bmRpbmdCb3guc2l6ZSgpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlQZXJzcGVj
dGl2ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFBvaW50JiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0Cit7Cisg
ICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI3BlcnNwZWN0aXZl
CisgICAgLy8gVGhlIHBlcnNwZWN0aXZlIG1hdHJpeCBpcyBjb21wdXRlZCBhcyBmb2xsb3dzOgor
ICAgIC8vIDEuIFN0YXJ0IHdpdGggdGhlIGlkZW50aXR5IG1hdHJpeC4KKworICAgIC8vIDIuIFRy
YW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCBhbmQgWSB2YWx1ZXMgb2YgcGVyc3BlY3RpdmUtb3Jp
Z2luCisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW5UcmFuc2xhdGUueCgpLCBvcmlnaW5U
cmFuc2xhdGUueSgpKTsKKworICAgIC8vIDMuIE11bHRpcGx5IGJ5IHRoZSBtYXRyaXggdGhhdCB3
b3VsZCBiZSBvYnRhaW5lZCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSgpIHRyYW5zZm9ybSBmdW5jdGlv
biwgd2hlcmUgdGhlIGxlbmd0aCBpcyBwcm92aWRlZCBieSB0aGUgdmFsdWUgb2YgdGhlIHBlcnNw
ZWN0aXZlIHByb3BlcnR5CisgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUodXNlZFBlcnNw
ZWN0aXZlKHJlbmRlcmVyKSk7CisKKyAgICAvLyA0LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0ZWQg
Y29tcHV0ZWQgWCBhbmQgWSB2YWx1ZXMgb2YgcGVyc3BlY3RpdmUtb3JpZ2luCisgICAgdHJhbnNm
b3JtLnRyYW5zbGF0ZSgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55KCkp
OworfQorCitGbG9hdFBvaW50M0QgUmVuZGVyU3R5bGU6OmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4o
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKIHsKLSAgICAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gMi4gVHJhbnNsYXRlIGJ5
IHRoZSBjb21wdXRlZCBYLCBZLCBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdpbi4KICAg
ICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRlOwogICAgIG9yaWdpblRyYW5zbGF0ZS5zZXRY
WShib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5z
Zm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkpOwogICAgIG9yaWdpblRyYW5zbGF0
ZS5zZXRaKHRyYW5zZm9ybU9yaWdpblooKSk7CisgICAgcmV0dXJuIG9yaWdpblRyYW5zbGF0ZTsK
K30KKwordm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFuc2xhdGUp
IGNvbnN0Cit7CiAgICAgaWYgKCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUzZChvcmlnaW5UcmFuc2xhdGUueCgpLCBvcmlnaW5UcmFuc2xhdGUu
eSgpLCBvcmlnaW5UcmFuc2xhdGUueigpKTsKLSAgICByZXR1cm4gb3JpZ2luVHJhbnNsYXRlOwog
fQogCiB2b2lkIFJlbmRlclN0eWxlOjp1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRl
KSBjb25zdAogewotICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0y
LyNjdG0KLSAgICAvLyA4LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0ZWQgY29tcHV0ZWQgWCwgWSBh
bmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdpbi4KICAgICBpZiAoIW9yaWdpblRyYW5zbGF0
ZS5pc1plcm8oKSkKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1vcmlnaW5UcmFuc2xh
dGUueCgpLCAtb3JpZ2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5zbGF0ZS56KCkpOwogfQpA
QCAtMTQ3Nyw3ICsxNDk4LDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gb3JpZ2luVHJhbnNsYXRlID0gYXBwbHlUcmFuc2Zvcm1P
cmlnaW4odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CisgICAgYXV0byBvcmlnaW5UcmFuc2xhdGUg
PSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGJvdW5kaW5nQm94KTsKKyAgICBhcHBseVRyYW5zZm9y
bU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7CiAgICAgYXBwbHlDU1NUcmFuc2Zv
cm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiAgICAgdW5hcHBseVRyYW5zZm9y
bU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7CiB9CkBAIC0xNTcxLDcgKzE1OTMs
NyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0oVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHJh
dmVyc2FsU3RhdGUuY3VycmVudCgpLngoKSwgdHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLnkoKSk7
CiAKICAgICAvLyBTaGlmdCBlbGVtZW50IHRvIHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5IG9mZnNl
dC1hbmNob3IuCi0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodHJhbnNmb3JtT3JpZ2luWFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5n
Qm94LmxvY2F0aW9uKCk7CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJhbnNm
b3JtT3JpZ2luKGJvdW5kaW5nQm94KS54eSgpOwogICAgIGF1dG8gYW5jaG9yID0gdHJhbnNmb3Jt
T3JpZ2luOwogICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0bygpKQogICAgICAgICBh
bmNob3IgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQob2Zmc2V0QW5jaG9yKCksIGJvdW5kaW5n
Qm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkYjEyZTMwMzZmMzY0MWEzMWY3MGJj
MDE3MTFiOTI5NmU0MTMxMDcyLi5kM2U2NTViYzJmN2IzYTdjMGJkNmMyZTY0NGJlNzg4ZWM4M2Nk
Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApA
QCAtNzA3LDggKzcwNywxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25T
ZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBpbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9u
cyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxlLCBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OwogCiAgICAgYm9vbCBhZmZlY3RlZEJ5VHJh
bnNmb3JtT3JpZ2luKCkgY29uc3Q7Ci0gICAgRmxvYXRQb2ludDNEIGFwcGx5VHJhbnNmb3JtT3Jp
Z2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkg
Y29uc3Q7CisKKyAgICBGbG9hdFBvaW50IGNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihjb25zdCBG
bG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsKKyAgICB2b2lkIGFwcGx5UGVyc3BlY3RpdmUo
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBGbG9hdFBv
aW50JiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0OworCisgICAgRmxvYXRQb2ludDNEIGNvbXB1dGVU
cmFuc2Zvcm1PcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CisgICAg
dm9pZCBhcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZs
b2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdDsKICAgICB2b2lkIHVuYXBwbHlUcmFu
c2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFBvaW50M0QmIG9y
aWdpblRyYW5zbGF0ZSkgY29uc3Q7CisKICAgICAvLyBhcHBseVRyYW5zZm9ybSBjYWxscyBhcHBs
eVRyYW5zZm9ybU9yaWdpbigpLCB0aGVuIGFwcGx5Q1NTVHJhbnNmb3JtKCksIGZvbGxvd2VkIGJ5
IHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKS4KICAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0
PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25z
dDsKICAgICB2b2lkIGFwcGx5Q1NTVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKaW5kZXggNDRjNWE2ZTliOWEzZjQ0MjJhYjJiNjgwMDNl
MDZjOTEwNzdkNmNkNy4uOWQ3ZDhkOTYzYzM1MGRiNDg3ZjRiMjllZTZiYmI0YjdmZTQ2ZDdiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTk4LDggKzk4
LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRy
YW5zZm9ybSgpIGNvbnN0CiAKICAgICAvLyBJZiB3ZSBkaWRuJ3QgaGF2ZSB0aGUgQ1NTICJ0cmFu
c2Zvcm0iIHByb3BlcnR5IHNldCwgd2UgbXVzdCBhY2NvdW50IGZvciB0aGUgInRyYW5zZm9ybSIg
YXR0cmlidXRlLgogICAgIGlmICghaGFzU3BlY2lmaWVkVHJhbnNmb3JtICYmIHN0eWxlKSB7Ci0g
ICAgICAgIGF1dG8gYm91bmRpbmdCb3ggPSByZW5kZXJlcigpLT50cmFuc2Zvcm1SZWZlcmVuY2VC
b3hSZWN0KCk7Ci0gICAgICAgIGF1dG8gdCA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHls
ZS0+dHJhbnNmb3JtT3JpZ2luWFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94
LmxvY2F0aW9uKCk7CisgICAgICAgIGF1dG8gdCA9IHN0eWxlLT5jb21wdXRlVHJhbnNmb3JtT3Jp
Z2luKHJlbmRlcmVyKCktPnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSkueHkoKTsKICAgICAg
ICAgbWF0cml4LnRyYW5zbGF0ZSh0KTsKICAgICAgICAgbWF0cml4ICo9IHRyYW5zZm9ybSgpLmNv
bmNhdGVuYXRlKCk7CiAgICAgICAgIG1hdHJpeC50cmFuc2xhdGUoLXQueCgpLCAtdC55KCkpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDZiNTQ0NTBjNzk4M2ZkYzc4Zjg2OGI0YTQ2MGYzNmY2YTYxNjBiZmIuLmE1ZjhmZmYy
ZjBhODc5NzA0ODhmMTgxMGY5Y2YyMDZjNzg1NTNkZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMi0wNC0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4K
KworICAgICAgICBQZXJzcGVjdGl2ZSBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9y
bS1vcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMTc4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjMxNDM4MDY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9uOiBh
bmNob3IgcG9pbnRzIGluIHRoZSBHcmFwaGljc0xheWVyIHRyZWUgZHVtcHMgaGF2ZSBjaGFuZ2Vk
LgorCisgICAgICAgIFVuc2tpcCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zv
cm0tbGF5ZXIuaHRtbAorICAgICAgICBvbiBhbGwgcGxhdGZvcm1zOiAndHJhbnNmb3JtLWJveCcg
Y2hhbmdlcyBub3cgcHJvcGVydGx5IHRyaWdnZXIgR3JhcGhpY3NMYXllciBnZW9tZXRyeSB1cGRh
dGVzLgorCisgICAgICAgICogY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQt
c2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogY29tcG9zaXRp
bmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMi0wNC0wNyAgTWF0dGVvIEZsb3JlcyAgPG1hdHRlb19mbG9yZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFsgaU9TIEVXUyBdIGNzczMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLXJlcGVh
dC1yb3VuZC1hdXRvMi5odG1sIGlzIGEgaW1hZ2UgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1
YWQtbWFwcGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcv
Y292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dApp
bmRleCA3ZmQzNjY3MTI5YmM2YmY0OGM0NTk2ZjgxZDFhODZjODU5MDNkNmU2Li5kMTVlYTk1NWEy
MDc0OWM3MmRkM2M5ODVkZGMyZTNiZmEyZmU0Zjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBw
aW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292
ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAt
MjQsOSArMjQsMTAgQEAKICAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgogICAgICAgICAg
ICAgICAgICAgKG9mZnNldEZyb21SZW5kZXJlciB3aWR0aD0xIGhlaWdodD0xKQogICAgICAgICAg
ICAgICAgICAgKHBvc2l0aW9uIDEuMDAgMS4wMCkKKyAgICAgICAgICAgICAgICAgIChhbmNob3Ig
MC41MSAwLjUwKQogICAgICAgICAgICAgICAgICAgKGJvdW5kcyA1ODMuMDAgNTc4LjAwKQogICAg
ICAgICAgICAgICAgICAgKGJhY2tpbmdTdG9yZUF0dGFjaGVkIDEpCi0gICAgICAgICAgICAgICAg
ICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4w
MCAwLjAwXSBbLTMwNy41MCAtMjkwLjAwIDEuMDAgLTEuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAw
XSkKKyAgICAgICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAg
MC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFstMzAwLjAwIC0yOTAuMDAgMS4wMCAtMS4wMF0g
WzAuMDAgMC4wMCAwLjAwIDEuMDBdKQogICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuIDEKICAg
ICAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgICAgICAgICAgICAgICAgICAo
cG9zaXRpb24gMC4wMCAtNDAwLjAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9s
bGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0CmluZGV4IDFiMDY0NThmMWUxZTgzMzdjMWUz
M2NiMDg1YTExNmI2YTk3MzQzMmQuLjI0NmViNGE5NTNjN2E2ZWUzYjViZjA1NGY5YWZlMmM2Y2I4
NTJlZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVj
dGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3Zl
cmFnZS1leHBlY3RlZC50eHQKQEAgLTI5LDggKzI5LDkgQEAKICAgICAgICAgICAoY2hpbGRyZW4g
MgogICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgICAgICAgICAgKGJvdW5kcyBvcmln
aW4gMC4wMCA5MDAuMDApCisgICAgICAgICAgICAgIChhbmNob3IgMC41MSAwLjUwKQogICAgICAg
ICAgICAgICAoYm91bmRzIDU4NS4wMCA1MDAuMDApCi0gICAgICAgICAgICAgIChjaGlsZHJlblRy
YW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFsyLjkz
IDIuNTAgMS4wMCAtMC4wMV0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgICAgICAgICAo
Y2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAw
LjAwXSBbMy4wMCAyLjUwIDEuMDAgLTAuMDFdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAg
ICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCA5MDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAg
ICAgICAgICAgICAoY292ZXJhZ2UgcmVjdCAwLjAwLCA5MDAuMDAgNTg1LjAwIHggNTAwLjAwKQog
ICAgICAgICAgICAgICAoaW50ZXJzZWN0cyBjb3ZlcmFnZSByZWN0IDEpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMWViMjFjMDJmM2IzNWI3YTFjMTk3
ZDUzNmIzOTI5MTVkNmM0N2MxMS4uNjA3ZjRmNTQxY2Y3ODM3Zjg3Y2NkMzgzNWU5MDEyMzhlMDg2
YmU3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
NjUwLDkgKzY1MCw2IEBAIHdlYmtpdC5vcmcvYi8yMzAyNzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvcGVyc3BlY3RpCiB3ZWJraXQub3JnL2IvMjMw
Mjc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2R5
bmFtaWMtZml4ZWQtcG9zLWNiLWNoYW5nZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMjMwMjc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2Zvcm1zL3BlcnNwZWN0aXZlLXRyYW5zZm9ybXMtZXF1aXZhbGVuY2UuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCi0jICd0cmFuc2Zvcm0tYm94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3Ig
Y29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5vcmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1i
b3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LQogd2Via2l0Lm9yZy9iLzIzNzUwMiBmYXN0L2RvbS9SYW5nZS9nZXRDbGllbnRSZWN0cy5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM3NTAyIGZhc3QvbXVsdGljb2wvbmV3bXVsdGlj
b2wvaGlkZS1ib3gtdmVydGljYWwtbHIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIzNzUwMiBpbXBvcnRlZC9ibGluay9mYXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2Zs
b2F0LWJpZy1saW5lLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGZlMjJhNDBjNTAzYzZkZjEwN2NkZjk2YjIy
YjFlYjE3MTMzMDE1My4uNmIyYTcwOTU2MWYyNzE3ZjMzZmM3ZTcwYzNhZjAwNmQ5ZmI4ZmY5MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMwMDEsOSAr
MzAwMSw2IEBAIGZhc3QvY2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMjAyOTU4IGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgJ3RyYW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJv
a2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRzLgotd2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJh
bnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjAzMzA1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMS5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMzMDUgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWlu
aGVyaXQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1NiBbIERl
YnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25z
L3Byb3BlcnRpZXMtdmFsdWUtMDAzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYzI3YjgzZTU0MjgxODZiODViZTJh
YjdkZGRmOTBiNmE4YmNjMzIyLi4zZmViNDQ1NmNjMTQ3NzQzMjUwY2E4OWE4MDk3MzViMjRkMzI1
YjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjE5
Niw5ICsyMTk2LDYgQEAgd2Via2l0Lm9yZy9iLzIyODE3NiBbIEJpZ1N1ciBNb250ZXJleSBdIGZh
c3QvdGV4dC92YXJpYWJsZS1zeXN0ZW0tZm9udC0yLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMjMw
MzI3IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2Ny
YXNodGVzdHMvdHJhbnNmb3JtLW1hcnF1ZWUtcmVzaXplLWRpdi1pbWFnZS0wMDEuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKLSMgJ3RyYW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBj
b21wb3NpdGVkIGVsZW1lbnRzLgotd2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJv
eC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
CiAjIHJkYXI6Ly84MzU5MTA0MAogWyBNb250ZXJleSsgXSBlZGl0aW5nL21hYy9kaWN0aW9uYXJ5
LWxvb2t1cC9kaWN0aW9uYXJ5LWxvb2t1cC1pbnB1dC5odG1sIFsgQ3Jhc2ggXQogWyBNb250ZXJl
eSsgXSBlZGl0aW5nL21hYy9kaWN0aW9uYXJ5LWxvb2t1cC9kaWN0aW9uYXJ5LWxvb2t1cC1pbnNp
ZGUtc2VsZWN0aW9uLmh0bWwgWyBDcmFzaCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGEzOGM0ZGI0YmE3ZGQzMmQ2YTQxOTJiOTIwNGNlOTZhNjdkZWFk
ZjIuLjkwMGM4YmYxYzM2MmEzZTZiYWJmZDJmNGNhMThkNWUzNjllMTAzNjcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC05MzksOSArOTM5LDYgQEAgd2Vi
a2l0Lm9yZy9iLzE0OTI0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bXVsdGljb2wvbXVsdGljb2wtc2gKIHdlYmtpdC5vcmcvYi8xNDkyNDUgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNwYW4tYWxsLWJsb2Nr
LXNpYmxpbmctMDAzLnhodCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE0OTI0NSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwt
bWFyZ2luLW5lc3RlZC1maXJzdGNoaWxkLTAwMS54aHQgWyBTa2lwIF0KIAotIyAndHJhbnNmb3Jt
LWJveCcgc3VwcG9ydCBpcyBicm9rZW4gZm9yIGNvbXBvc2l0ZWQgZWxlbWVudHMuCi13ZWJraXQu
b3JnL2IvMjM3NTUzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL2FuaW1hdGlvbi90cmFuc2Zvcm0tYm94LXdpbGwtY2hhbmdlLXRyYW5zZm9ybS1sYXll
ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KICMgVE9ETyBFWElGLXJlc29sdXRpb24gaXMg
bm90IHN1cHBvcnRlZAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kZW5zaXR5LXNp
emUtY29ycmVjdGlvbi8gWyBTa2lwIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457041</attachid>
            <date>2022-04-08 03:56:47 -0700</date>
            <delta_ts>2022-04-10 15:57:32 -0700</delta_ts>
            <desc>Patch, v4</desc>
            <filename>bug-211787-20220408035646.patch</filename>
            <type>text/plain</type>
            <size>33002</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEwZDdjMWU5YzZkMWM0
Njg2ZDQ3OTA4NDRlZGYxOWY2N2UyMjIyMS4uNzA3MGQxZDExOTRlOGYxOWQxYjYzYzk4ODUwMTI1
ZWUzYmIyNDBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIyLTA0LTA4ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9y
aWdpbkZvclBhaW50aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZH
VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVQZXJzcGVjdGl2ZU9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlQZXJzcGVj
dGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZVRyYW5z
Zm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlU
cmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnVu
YXBwbHlUcmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJh
bnNmb3JtIGNvbnN0KToKKwogMjAyMi0wNC0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSByZWZlcmVuY2UgYm94IC8gQ1RNIGNv
bXB1dGF0aW9uIGluIFJlbmRlckxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAppbmRleCBmNmQ1OWE1ZTFkNzQyZDRjNTI0OGE5N2YwZDRlYWFmYjRlZTIz
OGI5Li4yODM0NmMzYTZiYTBhY2FhYzA5MWU5N2Q5YmFkMzBkMmRmMTNkYmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTE5OTcsNyArMTk5Nyw3
IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVUcmFuc2Zvcm1lZEV4dGVudFZpYVRyYW5z
Zm9ybUxpc3QoY29uc3QgRmxvYXRSZWN0JiByCiAKICAgICBib29sIGFwcGx5VHJhbnNmb3JtT3Jp
Z2luID0gY29udGFpbnNSb3RhdGlvbihzdHlsZS50cmFuc2Zvcm0oKS5vcGVyYXRpb25zKCkpIHx8
IHN0eWxlLnRyYW5zZm9ybSgpLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKICAgICBpZiAo
YXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgdHJhbnNmb3JtT3JpZ2luID0gcmVuZGVy
ZXJCb3gubG9jYXRpb24oKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS50cmFuc2Zv
cm1PcmlnaW5YWSgpLCByZW5kZXJlckJveC5zaXplKCkpOworICAgICAgICB0cmFuc2Zvcm1Pcmln
aW4gPSBzdHlsZS5jb21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVyQm94KS54eSgpOwogICAg
ICAgICAvLyBJZ25vcmUgdHJhbnNmb3JtT3JpZ2luWiBiZWNhdXNlIHdlJ2xsIGJhaWwgaWYgd2Ug
ZW5jb3VudGVyIGFueSAzRCB0cmFuc2Zvcm1zLgogICAgICAgICBmbG9hdEJvdW5kcy5tb3ZlQnko
LXRyYW5zZm9ybU9yaWdpbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggNGFmOWU4NTdhYTA4MjJhOGRiMjY5OGViOGZhMzUyZjY3ZjY1MGQxMS4u
MmRhYzA1OGEzN2EzNTg1YTEyN2NhMTcwOWQyM2UwOTI3NmRmOTE0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNzg3LDQzICsxNzg3LDYyIEBAIGJvb2wg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9z
aXRpb25zRmxhZz4qIGZsYWdzCiAgICAgcmV0dXJuIHBvc2l0aW9uT3JPZmZzZXRDaGFuZ2VkOwog
fQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zv
cm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRy
aXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogW0xCU0VdIFVwc3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2Rl
bE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJl
cigpKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25j
YXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyZW5kZXJCb3guaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpCisgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgY29uc3QgYXV0byYg
c3R5bGUgPSByZW5kZXJCb3guc3R5bGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKICAgICBpZiAoIXN0eWxlLmhhc1BlcnNwZWN0aXZlKCkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJlZmVyZW5jZUJveFJlY3QgPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzSWZOZWVkZWQocmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0
eWxlKSwgcmVuZGVyZXIoKSk7Ci0gICAgYXV0byBzbmFwcGVkTGF5ZXJSZWN0ID0gc25hcFJlY3RU
b0RldmljZVBpeGVsc0lmTmVlZGVkKGxheWVyUmVjdCwgcmVuZGVyZXIoKSk7CisgICAgYXV0byB0
cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc0lmTmVlZGVk
KHJlbmRlcmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChzdHlsZSksIHJlbmRlcmVyKCkp
OworICAgIGF1dG8gcGVyc3BlY3RpdmVPcmlnaW4gPSBzdHlsZS5jb21wdXRlUGVyc3BlY3RpdmVP
cmlnaW4odHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCk7CiAKLSAgICBhdXRvIHBlcnNwZWN0aXZl
T3JpZ2luID0gcmVmZXJlbmNlQm94UmVjdC5sb2NhdGlvbigpIC0gdG9GbG9hdFNpemUoc25hcHBl
ZExheWVyUmVjdC5sb2NhdGlvbigpKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS5w
ZXJzcGVjdGl2ZU9yaWdpbigpLCByZWZlcmVuY2VCb3hSZWN0LnNpemUoKSk7CisgICAgLy8gSW4g
dGhlIHJlZ3VsYXIgY2FzZSBvZiBhIG5vbi1jbGlwcGVkLCBub24tc2Nyb2xsZWQgR3JhcGhpY3NM
YXllciwgYWxsIHRyYW5zZm9ybWF0aW9ucworICAgIC8vICh2aWEgQ1NTICd0cmFuc2Zvcm0nIC8g
J3BlcnNwZWN0aXZlJykgYXJlIGFwcGxpZWQgd2l0aCByZXNwZWN0IHRvIGEgcHJlZGVmaW5lZCBh
bmNob3IgcG9pbnQsCisgICAgLy8gd2hpY2ggZGVwZW5kcyBvbiB0aGUgY2hvc2VuIENTUyAndHJh
bnNmb3JtLWJveCcgLyAndHJhbnNmb3JtLW9yaWdpbicgcHJvcGVydGllcy4KKyAgICAvLworICAg
IC8vIEEgdHJhbnNmb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIENTUyAndHJhbnNmb3JtJyBwcm9wZXJ0
eSBpcyBhcHBsaWVkLCBieSB0cmFuc2xhdGluZworICAgIC8vIHRvIHRoZSAndHJhbnNmb3JtIG9y
aWdpbicsIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiwgYW5kIHRyYW5zbGF0aW5nIGJhY2su
CisgICAgLy8gV2hlbiBhbiBlbGVtZW50IHNwZWNpZmllcyBhIENTUyAncGVyc3BlY3RpdmUnIHBy
b3BlcnR5LCB0aGUgcGVyc3BlY3RpdmUgdHJhbnNmb3JtYXRpb24gbWF0cml4CisgICAgLy8gdGhh
dCdzIGNvbXB1dGVkIGhlcmUgaXMgcHJvcGFnYXRlZCB0byB0aGUgR3JhcGhpY3NMYXllciBieSBj
YWxsaW5nIHNldENoaWxkcmVuVHJhbnNmb3JtKCkuCisgICAgLy8KKyAgICAvLyBIb3dldmVyIHRo
ZSBHcmFwaGljc0xheWVyIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyAoZS5nLiBDQSBvbiBtYWNP
UykgYXBwbHkgdGhlIGNoaWxkcmVuIHRyYW5zZm9ybSwKKyAgICAvLyBkZWZpbmVkIG9uIHRoZSBw
YXJlbnQsIHdpdGggcmVzcGVjdCB0byB0aGUgYW5jaG9yIHBvaW50IG9mIHRoZSBwYXJlbnQsIHdo
ZW4gcmVuZGVyaW5nIGNoaWxkIGVsZW1lbnRzLgorICAgIC8vIFRoaXMgaXMgd3JvbmcsIGFzIHRo
ZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiAoYXBwbGllZCB0byBhIGNoaWxkIG9mIHRoZSBl
bGVtZW50IGRlZmluaW5nIHRoZQorICAgIC8vIDNkIGVmZmVjdCksIG11c3QgYmUgaW5kZXBlbmRh
bnQgb2YgdGhlIGNob3NlbiB0cmFuc2Zvcm0tb3JpZ2luICh0aGUgcGFyZW50cyB0cmFuc2Zvcm0g
b3JpZ2luCisgICAgLy8gbXVzdCBub3QgYWZmZWN0IGl0cyBjaGlsZHJlbikuCisgICAgLy8KKyAg
ICAvLyBUbyBjaXJjdW12ZW50IHRoaXMsIGV4cGxpY2l0ZWx5IHJlbW92ZSB0aGUgdHJhbnNmb3Jt
LW9yaWdpbiBkZXBlbmRlbmN5IGluIHRoZSBwZXJzcGVjdGl2ZSBtYXRyaXguCisgICAgYXV0byB0
cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGluZygpOworCisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHN0eWxlLnVuYXBwbHlUcmFuc2Zvcm1P
cmlnaW4odHJhbnNmb3JtLCB0cmFuc2Zvcm1PcmlnaW4pOworICAgIHN0eWxlLmFwcGx5UGVyc3Bl
Y3RpdmUodHJhbnNmb3JtLCByZW5kZXJlcigpLCBwZXJzcGVjdGl2ZU9yaWdpbik7CisgICAgc3R5
bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCB0cmFuc2Zvcm1PcmlnaW4pOworICAg
IHJldHVybiB0cmFuc2Zvcm07Cit9CiAKLSAgICAvLyBBIHBlcnNwZWN0aXZlIG9yaWdpbiBvZiAw
LDAgbWFrZXMgdGhlIHZhbmlzaGluZyBwb2ludCBpbiB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50
LgotICAgIC8vIFdlIHdhbnQgaXQgdG8gYmUgaW4gdGhlIHRvcC1sZWZ0LCBzbyBzdWJ0cmFjdCBo
YWxmIHRoZSBoZWlnaHQgYW5kIHdpZHRoLgotICAgIHBlcnNwZWN0aXZlT3JpZ2luIC09IHNuYXBw
ZWRMYXllclJlY3Quc2l6ZSgpIC8gMi4wZjsKK0Zsb2F0UG9pbnQzRCBSZW5kZXJMYXllcjo6dHJh
bnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoKSBjb25zdAoreworICAgIGlmICghcmVuZGVyZXIoKS5o
YXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7Ci0gICAgdC50cmFuc2xhdGUocGVyc3BlY3RpdmVPcmln
aW4ueCgpLCBwZXJzcGVjdGl2ZU9yaWdpbi55KCkpOwotICAgIHQuYXBwbHlQZXJzcGVjdGl2ZShz
dHlsZS51c2VkUGVyc3BlY3RpdmUocmVuZGVyZXIoKSkpOwotICAgIHQudHJhbnNsYXRlKC1wZXJz
cGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdpbi55KCkpOworICAgIGNvbnN0IGF1
dG8mIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOworICAgIGF1dG8gcmVmZXJlbmNlQm94UmVj
dCA9IHJlbmRlcmVyKCkudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChzdHlsZSk7CiAKLSAgICBy
ZXR1cm4gdDsKKyAgICBhdXRvIG9yaWdpbiA9IHN0eWxlLmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4o
cmVmZXJlbmNlQm94UmVjdCk7CisgICAgaWYgKHJlbmRlcmVyTmVlZHNQaXhlbFNuYXBwaW5nKHJl
bmRlcmVyKCkpKQorICAgICAgICBvcmlnaW4uc2V0WFkocm91bmRQb2ludFRvRGV2aWNlUGl4ZWxz
KExheW91dFBvaW50KG9yaWdpbi54eSgpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpKTsKKyAgICByZXR1cm4gb3JpZ2luOwogfQogCiBGbG9hdFBvaW50IFJlbmRl
ckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpbigpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigp
Lmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIHdyb25nLCB0cmFuc2Zvcm0tYm94IHVuYXdhcmUsIGdl
b21ldHJ5LgotICAgIHJldHVybiBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQocmVuZGVyZXIoKS5z
dHlsZSgpLnBlcnNwZWN0aXZlT3JpZ2luKCksIHJlbmRlcmVyQm9yZGVyQm94UmVjdCgpLnNpemUo
KSk7CisgICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChyZW5kZXJlcigpLnN0eWxl
KCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hS
ZWN0KHJlbmRlcmVyKCkuc3R5bGUoKSkuc2l6ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29s
IGlzQ29udGFpbmVyRm9yUG9zaXRpb25lZChSZW5kZXJMYXllciYgbGF5ZXIsIFBvc2l0aW9uVHlw
ZSBwb3NpdGlvbiwgYm9vbCBlc3RhYmxpc2hlc1RvcExheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3ZDNjYjE1N2QwZmJmMjAyZWE3ZDhhNjQ5MjNmODA0ZGYz
MDkxYzcyLi43NjZkZjM3YzQ1MzhhM2YxYjliMjg5ZTVmMmMyNTYwM2RkM2FkMjAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNzM5LDEwICs3MzksMTEgQEAgcHVi
bGljOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlcmFibGVUcmFuc2Zvcm0oT3B0aW9u
U2V0PFBhaW50QmVoYXZpb3I+KSBjb25zdDsKICAgICAKICAgICAvLyBHZXQgdGhlIHBlcnNwZWN0
aXZlIHRyYW5zZm9ybSwgd2hpY2ggaXMgYXBwbGllZCB0byB0cmFuc2Zvcm1lZCBzdWJsYXllcnMu
Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSAtd2Via2l0LXBlcnNwZWN0
aXZlLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGF5ZXIgaGFzIGEgcGVyc3BlY3RpdmUu
CiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgdHJhbnNmb3JtIGhhcyB0aGUgcGVyc3BlY3RpdmUtb3Jp
Z2luIGJha2VkIGluLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBlcnNwZWN0aXZlVHJhbnNm
b3JtKGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVjdCkgY29uc3Q7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggcGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSBjb25zdDsKICAgICBGbG9hdFBvaW50IHBl
cnNwZWN0aXZlT3JpZ2luKCkgY29uc3Q7CisgICAgRmxvYXRQb2ludDNEIHRyYW5zZm9ybU9yaWdp
bkZvclBhaW50aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0
dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5wcmVzZXJ2ZXMzRCgpOyB9CiAgICAgYm9vbCBoYXMzRFRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtICYmICFtX3RyYW5zZm9ybS0+aXNB
ZmZpbmUoKTsgfQogICAgIGJvb2wgaGFzVHJhbnNmb3JtZWRBbmNlc3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzVHJhbnNmb3JtZWRBbmNlc3RvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyNjNhYzc1YWM3ZTRkMmEzZDIzNTkx
NDZhYWMzZGY3Y2Y0OWJiOTIyLi4wZWNhOWY5MmE0NzdiM2UwMGU4NDViYzg2YTkzOWIwZGQzOGNi
ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcApAQCAtNjM3LDE2ICs2MzcsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZU9wYWNpdHkoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0T3BhY2l0eShjb21wb3NpdGluZ09wYWNpdHkoc3R5bGUub3BhY2l0eSgpKSk7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUm
KQordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIG1fb3duaW5nTGF5
ZXIudHJhbnNmb3JtKCksIGJ1dCB0aGF0IGN1cnJlbnRseSBoYXMgdHJhbnNmb3JtLW9yaWdpbgot
ICAgIC8vIGJha2VkIGludG8gaXQsIGFuZCB3ZSBkb24ndCB3YW50IHRoYXQuCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdDsKLSAgICBpZiAobV9vd25pbmdMYXllci5oYXNUcmFuc2Zvcm0oKSkg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyB1c2VzIHRoZSB3cm9uZywgdHJhbnNmb3JtLWJveCB1
bmF3YXJlLCBnZW9tZXRyeS4KLSAgICAgICAgcmVuZGVyZXIoKS5hcHBseVRyYW5zZm9ybSh0LCBy
ZW5kZXJlcigpLnN0eWxlKCksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMobV9vd25pbmdMYXllci5y
ZW5kZXJlckJvcmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0eWxl
OjppbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9ucyk7Ci0gICAgICAgIG1ha2VNYXRyaXhSZW5k
ZXJhYmxlKHQsIGNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7Ci0gICAgfQor
ICAgIGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKQorICAgICAgICBtX293bmluZ0xh
eWVyLnVwZGF0ZVRyYW5zZm9ybUZyb21TdHlsZSh0LCBzdHlsZSwgUmVuZGVyU3R5bGU6OmluZGl2
aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKICAgICAKICAgICBpZiAobV9jb250ZW50c0NvbnRh
aW5tZW50TGF5ZXIpIHsKICAgICAgICAgbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXItPnNldFRy
YW5zZm9ybSh0KTsKQEAgLTY1NywyMCArNjUyLDI1IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmKQogCiB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlv
dXRSZWN0JiBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3QsIExheW91dFNpemUgb2Zmc2V0RnJvbVBh
cmVudEdyYXBoaWNzTGF5ZXIpCiB7CisgICAgYXV0byBkZWZhdWx0QW5jaG9yUG9pbnQgPSBGbG9h
dFBvaW50M0QgeyAwLjUsIDAuNSwgMCB9OwogICAgIGlmICghcmVuZGVyZXIoKS5oYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSkgewotICAgICAgICBhdXRvIGRlZmF1bHRBbmNob3JQb2ludCA9
IEZsb2F0UG9pbnQzRCB7IDAuNSwgMC41LCAwIH07CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKICAgICAgICAgaWYgKG1fY29udGVu
dHNDb250YWlubWVudExheWVyKQogICAgICAgICAgICAgbV9jb250ZW50c0NvbnRhaW5tZW50TGF5
ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CiAKKyAgICAgICAgaWYgKG1f
Y2hpbGRDb250YWlubWVudExheWVyKQorICAgICAgICAgICAgbV9jaGlsZENvbnRhaW5tZW50TGF5
ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKKyAgICAgICAgaWYgKG1f
c2Nyb2xsQ29udGFpbmVyTGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVy
LT5zZXRBbmNob3JQb2ludChkZWZhdWx0QW5jaG9yUG9pbnQpOworCiAgICAgICAgIGlmIChtX3Nj
cm9sbGVkQ29udGVudHNMYXllcikKICAgICAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
LT5zZXRQcmVzZXJ2ZXMzRChmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
b25zdCBhdXRvIGRldmljZVNjYWxlRmFjdG9yID0gdGhpcy0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
LSAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94
UmVjdCgpOwotICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdp
bkZvclBhaW50aW5nKGJvcmRlckJveFJlY3QpOworICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0g
bV9vd25pbmdMYXllci50cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGluZygpOwogICAgIGF1dG8gbGF5
ZXJPZmZzZXQgPSByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHModG9MYXlvdXRQb2ludChvZmZzZXRG
cm9tUGFyZW50R3JhcGhpY3NMYXllciksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBhdXRvIGFu
Y2hvciA9IEZsb2F0UG9pbnQzRCB7CiAgICAgICAgIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC53
aWR0aCgpID8gKChsYXllck9mZnNldC54KCkgLSBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3QueCgp
KSArIHRyYW5zZm9ybU9yaWdpbi54KCkpIC8gcHJpbWFyeUdyYXBoaWNzTGF5ZXJSZWN0LndpZHRo
KCkgOiAwLjVmLApAQCAtNjg1LDExICs2ODUsMTQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtQW5kQW5jaG9yUG9pbnQoY29uc3QgTGF5b3V0UmVjdCYK
IAogICAgIGF1dG8gcmVtb3ZlQ2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzID0gWyZdKEdyYXBo
aWNzTGF5ZXIqIGxheWVyVG9JZ25vcmUgPSBudWxscHRyKSB7CiAgICAgICAgIGF1dG8qIGNsaXBw
aW5nTGF5ZXIgPSB0aGlzLT5jbGlwcGluZ0xheWVyKCk7Ci0gICAgICAgIGlmIChjbGlwcGluZ0xh
eWVyICYmIGNsaXBwaW5nTGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkKKyAgICAgICAgaWYgKGNsaXBw
aW5nTGF5ZXIgJiYgY2xpcHBpbmdMYXllciAhPSBsYXllclRvSWdub3JlKSB7CiAgICAgICAgICAg
ICBjbGlwcGluZ0xheWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybSh7IH0pOwotICAgICAgICAKKyAg
ICAgICAgICAgIGNsaXBwaW5nTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2lu
dCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAobV9zY3JvbGxDb250YWluZXJMYXllciAmJiBt
X3Njcm9sbENvbnRhaW5lckxheWVyICE9IGxheWVyVG9JZ25vcmUpIHsKICAgICAgICAgICAgIG1f
c2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHsgfSk7CisgICAgICAg
ICAgICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRBbmNob3JQb2ludChkZWZhdWx0QW5jaG9y
UG9pbnQpOwogICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNlcnZl
czNEKGZhbHNlKTsKICAgICAgICAgfQogCkBAIC03MDIsNyArNzA1LDcgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtQW5kQW5jaG9yUG9pbnQoY29uc3Qg
TGF5b3V0UmVjdCYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbGF5ZXJGb3JD
aGlsZHJlblRyYW5zZm9ybSA9IFsmXSB7CisgICAgYXV0byBsYXllckZvckNoaWxkcmVuVHJhbnNm
b3JtID0gWyZdKCkgLT4gc3RkOjp0dXBsZTxHcmFwaGljc0xheWVyKiwgRmxvYXRSZWN0PiB7CiAg
ICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5lckxheWVyKSB7CiAgICAgICAgICAgICBBU1NFUlQo
aXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSk7IC8vIFNjcm9sbCBjb250YWluZXIgbGF5ZXJzIGFy
ZSBvbmx5IGNyZWF0ZWQgZm9yIFJlbmRlckJveCBkZXJpdmVkIHJlbmRlcmVycy4KICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9zY3JvbGxDb250YWluZXJMYXllci5nZXQoKSwg
c2Nyb2xsQ29udGFpbmVyTGF5ZXJCb3goZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKSkp
OwpAQCAtNzEwLDE5ICs3MTMsMjYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNo
aWxkcmVuVHJhbnNmb3JtQW5kQW5jaG9yUG9pbnQoY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAg
aWYgKGF1dG8qIGxheWVyID0gY2xpcHBpbmdMYXllcigpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZShsYXllciwgY2xpcHBpbmdMYXllckJveChyZW5kZXJlcigpKSk7CiAKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIGJvcmRl
ckJveFJlY3QpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhpY3NMYXll
ci5nZXQoKSwgcmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkpOwogICAgIH07
CiAKLSAgICBhdXRvIFtsYXllckZvclBlcnNwZWN0aXZlLCBwZXJzcGVjdGl2ZVJlbGF0aXZlQm94
XSA9IGxheWVyRm9yQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICAvLyBGSVhNRTogcGVyc3BlY3Rp
dmVSZWxhdGl2ZUJveCBpc24ndCBxdWl0ZSByaWdodCBoZXJlLiBUaGlzIG5lZWRzIHdvcms6IHdl
YmtpdC5vcmcvYi8yMTE3ODcuCi0gICAgYXV0byBwZXJzcGVjdGl2ZVRyYW5zZm9ybSA9IG93bmlu
Z0xheWVyKCkucGVyc3BlY3RpdmVUcmFuc2Zvcm0ocGVyc3BlY3RpdmVSZWxhdGl2ZUJveCk7Ci0g
ICAgCi0gICAgLy8gSWYgd2UgaGF2ZSBzY3JvbGxpbmcgbGF5ZXJzLCB3ZSBuZWVkIHRoZSBjaGls
ZHJlbiB0cmFuc2Zvcm0gb24gbV9zY3JvbGxDb250YWluZXJMYXllciB0bwotICAgIC8vIGFmZmVj
dCBjaGlsZHJlbiBvZiBtX3Njcm9sbGVkQ29udGVudHNMYXllciwgc28gc2V0IHNldFByZXNlcnZl
czNEKHRydWUpLgotICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlID09IG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIpCi0gICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRQcmVzZXJ2ZXMz
RCh0cnVlKTsKLSAgICAKLSAgICBsYXllckZvclBlcnNwZWN0aXZlLT5zZXRDaGlsZHJlblRyYW5z
Zm9ybShwZXJzcGVjdGl2ZVRyYW5zZm9ybSk7CisgICAgYXV0byBbbGF5ZXJGb3JQZXJzcGVjdGl2
ZSwgbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3RdID0gbGF5ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSgp
OworICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlICE9IG1fZ3JhcGhpY3NMYXllcikgeworICAg
ICAgICAvLyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBsYXllcnMsIHdlIG5lZWQgdGhlIGNoaWxkcmVu
IHRyYW5zZm9ybSBvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyIHRvCisgICAgICAgIC8vIGFmZmVj
dCBjaGlsZHJlbiBvZiBtX3Njcm9sbGVkQ29udGVudHNMYXllciwgc28gc2V0IHNldFByZXNlcnZl
czNEKHRydWUpLgorICAgICAgICBpZiAobGF5ZXJGb3JQZXJzcGVjdGl2ZSA9PSBtX3Njcm9sbENv
bnRhaW5lckxheWVyKQorICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFBy
ZXNlcnZlczNEKHRydWUpOworCisgICAgICAgIGF1dG8gcGVyc3BlY3RpdmVBbmNob3JQb2ludCA9
IEZsb2F0UG9pbnQzRCB7CisgICAgICAgICAgICBsYXllckZvclBlcnNwZWN0aXZlUmVjdC53aWR0
aCgpID8gKHRyYW5zZm9ybU9yaWdpbi54KCkgLSBsYXllckZvclBlcnNwZWN0aXZlUmVjdC54KCkp
IC8gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3Qud2lkdGgoKSA6IDAuNWYsCisgICAgICAgICAgICBs
YXllckZvclBlcnNwZWN0aXZlUmVjdC5oZWlnaHQoKSA/ICh0cmFuc2Zvcm1PcmlnaW4ueSgpIC0g
bGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3QueSgpKSAvIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0Lmhl
aWdodCgpIDogMC41ZiwKKyAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbi56KCkKKyAgICAgICAg
fTsKKworICAgICAgICBsYXllckZvclBlcnNwZWN0aXZlLT5zZXRBbmNob3JQb2ludChwZXJzcGVj
dGl2ZUFuY2hvclBvaW50KTsKKyAgICB9CisKKyAgICBsYXllckZvclBlcnNwZWN0aXZlLT5zZXRD
aGlsZHJlblRyYW5zZm9ybShtX293bmluZ0xheWVyLnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkpOwog
ICAgIHJlbW92ZUNoaWxkcmVuVHJhbnNmb3JtRnJvbUxheWVycyhsYXllckZvclBlcnNwZWN0aXZl
KTsKIH0KIApAQCAtMjk3MCwxNyArMjk4MCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVJbWFnZUNvbnRlbnRzKFBhaW50ZWRDb250ZW50c0luZm8mIGNvbnRlbnRzSW5mbykKICAg
ICBpbWFnZS0+c3RhcnRBbmltYXRpb24oKTsKIH0KIAotRmxvYXRQb2ludDNEIFJlbmRlckxheWVy
QmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGNvbnN0IExheW91dFJl
Y3QmIGJvcmRlckJveCkgY29uc3QKLXsKLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBy
ZW5kZXJlcigpLnN0eWxlKCk7Ci0KLSAgICBGbG9hdFBvaW50M0Qgb3JpZ2luOwotICAgIG9yaWdp
bi5zZXRYWShyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMocG9pbnRGb3JMZW5ndGhQb2ludChzdHls
ZS50cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3JkZXJCb3guc2l6ZSgpKSwgZGV2aWNlU2NhbGVGYWN0
b3IoKSkpOwotICAgIG9yaWdpbi5zZXRaKHN0eWxlLnRyYW5zZm9ybU9yaWdpblooKSk7Ci0KLSAg
ICByZXR1cm4gb3JpZ2luOwotfQotCiAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIHRoZSB0b3At
bGVmdCBvZiB0aGlzIGNvbXBvc2l0aW5nIGxheWVyIGF0IHdoaWNoIHRoZSByZW5kZXJlcidzIGNv
bnRlbnRzIGFyZSBwYWludGVkLgogTGF5b3V0U2l6ZSBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRl
bnRPZmZzZXRJbkNvbXBvc2l0aW5nTGF5ZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDg1ODdkNjE0MGVhMWQxNTMwZDdl
ZDNmZDU2YjI3ZDlhZTg2NTJjNjEuLmFiZTQ0OWVlNmJmMWRhYjAzMDZkMzg1YmVmZmI3M2Y1MjEz
ZTBkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmgKQEAgLTMzMSw5ICszMzEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QmFja2dyb3VuZExh
eWVyUGFpbnRzRml4ZWRSb290QmFja2dyb3VuZChib29sKTsKIAogICAgIExheW91dFNpemUgY29u
dGVudE9mZnNldEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0OwotICAgIC8vIFJlc3VsdCBpcyB0
cmFuc2Zvcm0gb3JpZ2luIGluIGRldmljZSBwaXhlbHMuCi0gICAgRmxvYXRQb2ludDNEIGNvbXB1
dGVUcmFuc2Zvcm1PcmlnaW5Gb3JQYWludGluZyhjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJCb3gp
IGNvbnN0OwotCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXRSZWxhdGl2ZVRvUmVuZGVyZXJPcmlnaW5G
b3JEZXNjZW5kYW50TGF5ZXJzKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBlbnN1cmVDbGlwcGlu
Z1N0YWNrTGF5ZXJzKExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDIzNTNj
MTc3MDY5MmYzZDcxMzVjMjg5MWFlNjgzZmEzNDMzODdjMzYuLjM4Nzg3OTkwYjFhZDViNTY1Y2I4
MDk0NDU0MDk3NWJhODVjOTU3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xNjM3LDYgKzE2MzcsNyBAQCBzdGF0aWMg
Ym9vbCByZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2VvbWV0cnlVcGRhdGUoY29uc3QgUmVuZGVy
U3R5bGUmIG9sZFN0eWxlLAogICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2xhdGUoKSAhPSBuZXdT
dHlsZS50cmFuc2xhdGUoKQogICAgICAgICB8fCBvbGRTdHlsZS5zY2FsZSgpICE9IG5ld1N0eWxl
LnNjYWxlKCkKICAgICAgICAgfHwgb2xkU3R5bGUucm90YXRlKCkgIT0gbmV3U3R5bGUucm90YXRl
KCkKKyAgICAgICAgfHwgb2xkU3R5bGUudHJhbnNmb3JtQm94KCkgIT0gbmV3U3R5bGUudHJhbnNm
b3JtQm94KCkKICAgICAgICAgfHwgb2xkU3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpICE9IG5ld1N0
eWxlLnRyYW5zZm9ybU9yaWdpblgoKQogICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1Pcmln
aW5ZKCkgIT0gbmV3U3R5bGUudHJhbnNmb3JtT3JpZ2luWSgpCiAgICAgICAgIHx8IG9sZFN0eWxl
LnRyYW5zZm9ybU9yaWdpblooKSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1PcmlnaW5aKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGNkM2E1
NDBkZjU1NmExM2Q0MzJmOGNkNjAwN2Q1NjczZWQ5ZDY2MjUuLmJkNzE0M2I4MDgxNzM2NzZiNzFm
MmFmMjM5OTViMDRhNDgzZjU3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ1MCwyMiArMTQ1MCw0MyBAQCBib29sIFJlbmRlclN0
eWxlOjphZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLUZsb2F0UG9pbnQzRCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0Jv
eCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdp
bihjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAoreworICAgIHJldHVybiBib3Vu
ZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHBlcnNwZWN0aXZl
T3JpZ2luKCksIGJvdW5kaW5nQm94LnNpemUoKSk7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFw
cGx5UGVyc3BlY3RpdmUoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luVHJhbnNsYXRlKSBj
b25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0yLyNw
ZXJzcGVjdGl2ZQorICAgIC8vIFRoZSBwZXJzcGVjdGl2ZSBtYXRyaXggaXMgY29tcHV0ZWQgYXMg
Zm9sbG93czoKKyAgICAvLyAxLiBTdGFydCB3aXRoIHRoZSBpZGVudGl0eSBtYXRyaXguCisKKyAg
ICAvLyAyLiBUcmFuc2xhdGUgYnkgdGhlIGNvbXB1dGVkIFggYW5kIFkgdmFsdWVzIG9mIHBlcnNw
ZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob3JpZ2luVHJhbnNsYXRlLngo
KSwgb3JpZ2luVHJhbnNsYXRlLnkoKSk7CisKKyAgICAvLyAzLiBNdWx0aXBseSBieSB0aGUgbWF0
cml4IHRoYXQgd291bGQgYmUgb2J0YWluZWQgZnJvbSB0aGUgcGVyc3BlY3RpdmUoKSB0cmFuc2Zv
cm0gZnVuY3Rpb24sIHdoZXJlIHRoZSBsZW5ndGggaXMgcHJvdmlkZWQgYnkgdGhlIHZhbHVlIG9m
IHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eQorICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZl
KHVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcikpOworCisgICAgLy8gNC4gVHJhbnNsYXRlIGJ5IHRo
ZSBuZWdhdGVkIGNvbXB1dGVkIFggYW5kIFkgdmFsdWVzIG9mIHBlcnNwZWN0aXZlLW9yaWdpbgor
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLW9yaWdpblRyYW5zbGF0ZS54KCksIC1vcmlnaW5UcmFu
c2xhdGUueSgpKTsKK30KKworRmxvYXRQb2ludDNEIFJlbmRlclN0eWxlOjpjb21wdXRlVHJhbnNm
b3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0CiB7Ci0gICAgLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bQotICAgIC8vIDIuIFRy
YW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1v
cmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsKICAgICBvcmlnaW5UcmFu
c2xhdGUuc2V0WFkoYm91bmRpbmdCb3gubG9jYXRpb24oKSArIGZsb2F0UG9pbnRGb3JMZW5ndGhQ
b2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpKTsKICAgICBvcmln
aW5UcmFuc2xhdGUuc2V0Wih0cmFuc2Zvcm1PcmlnaW5aKCkpOworICAgIHJldHVybiBvcmlnaW5U
cmFuc2xhdGU7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYgb3JpZ2lu
VHJhbnNsYXRlKSBjb25zdAorewogICAgIGlmICghb3JpZ2luVHJhbnNsYXRlLmlzWmVybygpKQog
ICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qob3JpZ2luVHJhbnNsYXRlLngoKSwgb3JpZ2lu
VHJhbnNsYXRlLnkoKSwgb3JpZ2luVHJhbnNsYXRlLnooKSk7Ci0gICAgcmV0dXJuIG9yaWdpblRy
YW5zbGF0ZTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6dW5hcHBseVRyYW5zZm9ybU9yaWdpbihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWdp
blRyYW5zbGF0ZSkgY29uc3QKIHsKLSAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRy
YW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gOC4gVHJhbnNsYXRlIGJ5IHRoZSBuZWdhdGVkIGNvbXB1
dGVkIFgsIFkgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgaWYgKCFvcmln
aW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtb3Jp
Z2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55KCksIC1vcmlnaW5UcmFuc2xhdGUu
eigpKTsKIH0KQEAgLTE0NzcsNyArMTQ5OCw4IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIG9yaWdpblRyYW5zbGF0ZSA9IGFwcGx5
VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gpOworICAgIGF1dG8gb3JpZ2lu
VHJhbnNsYXRlID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihib3VuZGluZ0JveCk7CisgICAgYXBw
bHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOwogICAgIGFwcGx5
Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOwogICAgIHVuYXBw
bHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOwogfQpAQCAtMTU3
MSw3ICsxNTkzLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlNb3Rpb25QYXRoVHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS54KCksIHRyYXZlcnNhbFN0YXRlLmN1cnJl
bnQoKS55KCkpOwogCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUgYW5jaG9yIHNwZWNpZmll
ZCBieSBvZmZzZXQtYW5jaG9yLgotICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gZmxvYXRQb2lu
dEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkg
KyBib3VuZGluZ0JveC5sb2NhdGlvbigpOworICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gY29t
cHV0ZVRyYW5zZm9ybU9yaWdpbihib3VuZGluZ0JveCkueHkoKTsKICAgICBhdXRvIGFuY2hvciA9
IHRyYW5zZm9ybU9yaWdpbjsKICAgICBpZiAoIW9mZnNldEFuY2hvcigpLngoKS5pc0F1dG8oKSkK
ICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigp
LCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZGIxMmUzMDM2ZjM2
NDFhMzFmNzBiYzAxNzExYjkyOTZlNDEzMTA3Mi4uZDNlNjU1YmMyZjdiM2E3YzBiZDZjMmU2NDRi
ZTc4OGVjODNjZGNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTcwNyw4ICs3MDcsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRyYW5zZm9y
bU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpT
Y2FsZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZzZXQgfTsKIAogICAgIGJvb2wgYWZm
ZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQzRCBhcHBseVRy
YW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpIGNvbnN0OworCisgICAgRmxvYXRQb2ludCBjb21wdXRlUGVyc3BlY3RpdmVPcmln
aW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7CisgICAgdm9pZCBhcHBseVBl
cnNwZWN0aXZlKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgRmxvYXRQb2ludCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdDsKKworICAgIEZsb2F0UG9pbnQz
RCBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNv
bnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWdpblRyYW5zbGF0ZSkgY29uc3Q7CiAgICAgdm9pZCB1
bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRQ
b2ludDNEJiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0OworCiAgICAgLy8gYXBwbHlUcmFuc2Zvcm0g
Y2FsbHMgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKSwgdGhlbiBhcHBseUNTU1RyYW5zZm9ybSgpLCBm
b2xsb3dlZCBieSB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKCkuCiAgICAgdm9pZCBhcHBseVRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0
aW9ucykgY29uc3Q7CiAgICAgdm9pZCBhcHBseUNTU1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IDQ0YzVhNmU5YjlhM2Y0NDIy
YWIyYjY4MDAzZTA2YzkxMDc3ZDZjZDcuLjlkN2Q4ZDk2M2MzNTBkYjQ4N2Y0YjI5ZWU2YmJiNGI3
ZmU0NmQ3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBA
IC05OCw4ICs5OCw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1h
dGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogCiAgICAgLy8gSWYgd2UgZGlkbid0IGhhdmUgdGhl
IENTUyAidHJhbnNmb3JtIiBwcm9wZXJ0eSBzZXQsIHdlIG11c3QgYWNjb3VudCBmb3IgdGhlICJ0
cmFuc2Zvcm0iIGF0dHJpYnV0ZS4KICAgICBpZiAoIWhhc1NwZWNpZmllZFRyYW5zZm9ybSAmJiBz
dHlsZSkgewotICAgICAgICBhdXRvIGJvdW5kaW5nQm94ID0gcmVuZGVyZXIoKS0+dHJhbnNmb3Jt
UmVmZXJlbmNlQm94UmVjdCgpOwotICAgICAgICBhdXRvIHQgPSBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBi
b3VuZGluZ0JveC5sb2NhdGlvbigpOworICAgICAgICBhdXRvIHQgPSBzdHlsZS0+Y29tcHV0ZVRy
YW5zZm9ybU9yaWdpbihyZW5kZXJlcigpLT50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkpLnh5
KCk7CiAgICAgICAgIG1hdHJpeC50cmFuc2xhdGUodCk7CiAgICAgICAgIG1hdHJpeCAqPSB0cmFu
c2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwogICAgICAgICBtYXRyaXgudHJhbnNsYXRlKC10LngoKSwg
LXQueSgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyNTcxOGRkNzBlOWJhMmEzOTIxOWI1NmU1YTkxMGU1ZDRjZGEzMDFk
Li5kNDU2ODcwOTZkMGI0YjEwNzNmMWViOWNjOTNlNDA4MDRhMjM4ODIyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMjItMDQtMDggIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGln
YWxpYS5jb20+CisKKyAgICAgICAgUGVyc3BlY3RpdmUgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBi
eSB0cmFuc2Zvcm0tb3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTE3ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMTQzODA2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBl
Y3RhdGlvbjogYW5jaG9yIHBvaW50cyBpbiB0aGUgR3JhcGhpY3NMYXllciB0cmVlIGR1bXBzIGhh
dmUgY2hhbmdlZC4KKworICAgICAgICBVbnNraXAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFu
Z2UtdHJhbnNmb3JtLWxheWVyLmh0bWwKKyAgICAgICAgb24gYWxsIHBsYXRmb3JtczogJ3RyYW5z
Zm9ybS1ib3gnIGNoYW5nZXMgbm93IHByb3BlcnRseSB0cmlnZ2VyIEdyYXBoaWNzTGF5ZXIgZ2Vv
bWV0cnkgdXBkYXRlcy4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1h
ZGp1c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGNvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjItMDQtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEluY29ycmVjdCBDT1JQL0NPRVAgY2hlY2sgaW4gMzA0
IHJlc3BvbnNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2Nv
dmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRh
cnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAppbmRleCA3ZmQzNjY3MTI5YmM2YmY0OGM0NTk2
ZjgxZDFhODZjODU5MDNkNmU2Li5kMTVlYTk1NWEyMDc0OWM3MmRkM2M5ODVkZGMyZTNiZmEyZmU0
Zjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2Ut
YWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnkt
cXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtMjQsOSArMjQsMTAgQEAKICAgICAgICAgICAg
ICAgICAoR3JhcGhpY3NMYXllcgogICAgICAgICAgICAgICAgICAgKG9mZnNldEZyb21SZW5kZXJl
ciB3aWR0aD0xIGhlaWdodD0xKQogICAgICAgICAgICAgICAgICAgKHBvc2l0aW9uIDEuMDAgMS4w
MCkKKyAgICAgICAgICAgICAgICAgIChhbmNob3IgMC41MSAwLjUwKQogICAgICAgICAgICAgICAg
ICAgKGJvdW5kcyA1ODMuMDAgNTc4LjAwKQogICAgICAgICAgICAgICAgICAgKGJhY2tpbmdTdG9y
ZUF0dGFjaGVkIDEpCi0gICAgICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAg
MC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbLTMwNy41MCAtMjkwLjAwIDEu
MDAgLTEuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgICAgICAgICAgICAgIChjaGls
ZHJlblRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBd
IFstMzAwLjAwIC0yOTAuMDAgMS4wMCAtMS4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQogICAg
ICAgICAgICAgICAgICAgKGNoaWxkcmVuIDEKICAgICAgICAgICAgICAgICAgICAgKEdyYXBoaWNz
TGF5ZXIKICAgICAgICAgICAgICAgICAgICAgICAocG9zaXRpb24gMC4wMCAtNDAwLjAwKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNj
cm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDFiMDY0NThmMWUxZTgzMzdjMWUzM2NiMDg1YTExNmI2YTk3MzQzMmQuLjI0NmVi
NGE5NTNjN2E2ZWUzYjViZjA1NGY5YWZlMmM2Y2I4NTJlZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVy
YWdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvcGVy
c3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKQEAgLTI5LDgg
KzI5LDkgQEAKICAgICAgICAgICAoY2hpbGRyZW4gMgogICAgICAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKICAgICAgICAgICAgICAgKGJvdW5kcyBvcmlnaW4gMC4wMCA5MDAuMDApCisgICAgICAgICAg
ICAgIChhbmNob3IgMC41MSAwLjUwKQogICAgICAgICAgICAgICAoYm91bmRzIDU4NS4wMCA1MDAu
MDApCi0gICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4w
MF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFsyLjkzIDIuNTAgMS4wMCAtMC4wMV0gWzAuMDAgMC4w
MCAwLjAwIDEuMDBdKQorICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4w
MCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbMy4wMCAyLjUwIDEuMDAgLTAuMDFd
IFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAw
LCA5MDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAgICAgICAgICAgICAoY292ZXJhZ2UgcmVjdCAw
LjAwLCA5MDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAgICAgICAgICAgICAoaW50ZXJzZWN0cyBj
b3ZlcmFnZSByZWN0IDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggMWViMjFjMDJmM2IzNWI3YTFjMTk3ZDUzNmIzOTI5MTVkNmM0N2MxMS4uNjA3ZjRm
NTQxY2Y3ODM3Zjg3Y2NkMzgzNWU5MDEyMzhlMDg2YmU3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjUwLDkgKzY1MCw2IEBAIHdlYmtpdC5vcmcv
Yi8yMzAyNzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvcGVyc3BlY3RpCiB3ZWJraXQub3JnL2IvMjMwMjc3IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2R5bmFtaWMtZml4ZWQtcG9zLWNiLWNoYW5nZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMjc3IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3BlcnNwZWN0aXZlLXRyYW5z
Zm9ybXMtZXF1aXZhbGVuY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jICd0cmFuc2Zv
cm0tYm94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtp
dC5vcmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxh
eWVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIzNzUwMiBmYXN0
L2RvbS9SYW5nZS9nZXRDbGllbnRSZWN0cy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjM3NTAyIGZhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvaGlkZS1ib3gtdmVydGljYWwtbHIuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNzUwMiBpbXBvcnRlZC9ibGlu
ay9mYXN0L211bHRpY29sL3ZlcnRpY2FsLWxyL2Zsb2F0LWJpZy1saW5lLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMGZlMjJhNDBjNTAzYzZkZjEwN2NkZjk2YjIyYjFlYjE3MTMzMDE1My4uNmIyYTcwOTU2MWYy
NzE3ZjMzZmM3ZTcwYzNhZjAwNmQ5ZmI4ZmY5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMwMDEsOSArMzAwMSw2IEBAIGZhc3QvY2FudmFzL3NldC1j
b2xvcnMuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjAyOTU4IGNzczMvZmlsdGVy
cy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMg
J3RyYW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRz
Lgotd2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFu
c2Zvcm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjAz
MzA1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9w
cm9wZXJ0aWVzLXZhbHVlLTAwMS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8y
MDMzMDUgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLWluaGVyaXQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1NiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL3Byb3BlcnRpZXMtdmFsdWUtMDAzLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBiYzI3YjgzZTU0MjgxODZiODViZTJhYjdkZGRmOTBiNmE4YmNjMzIyLi4zZmViNDQ1
NmNjMTQ3NzQzMjUwY2E4OWE4MDk3MzViMjRkMzI1YjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjE5Niw5ICsyMTk2LDYgQEAgd2Via2l0Lm9yZy9i
LzIyODE3NiBbIEJpZ1N1ciBNb250ZXJleSBdIGZhc3QvdGV4dC92YXJpYWJsZS1zeXN0ZW0tZm9u
dC0yLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMjMwMzI3IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2NyYXNodGVzdHMvdHJhbnNmb3JtLW1hcnF1ZWUt
cmVzaXplLWRpdi1pbWFnZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgJ3RyYW5zZm9y
bS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRzLgotd2Via2l0
Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5
ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIHJkYXI6Ly84MzU5MTA0MAogWyBNb250
ZXJleSsgXSBlZGl0aW5nL21hYy9kaWN0aW9uYXJ5LWxvb2t1cC9kaWN0aW9uYXJ5LWxvb2t1cC1p
bnB1dC5odG1sIFsgQ3Jhc2ggXQogWyBNb250ZXJleSsgXSBlZGl0aW5nL21hYy9kaWN0aW9uYXJ5
LWxvb2t1cC9kaWN0aW9uYXJ5LWxvb2t1cC1pbnNpZGUtc2VsZWN0aW9uLmh0bWwgWyBDcmFzaCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGEzOGM0ZGI0
YmE3ZGQzMmQ2YTQxOTJiOTIwNGNlOTZhNjdkZWFkZjIuLjkwMGM4YmYxYzM2MmEzZTZiYWJmZDJm
NGNhMThkNWUzNjllMTAzNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0
YXRpb25zCkBAIC05MzksOSArOTM5LDYgQEAgd2Via2l0Lm9yZy9iLzE0OTI0NSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc2gKIHdlYmtp
dC5vcmcvYi8xNDkyNDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11
bHRpY29sL211bHRpY29sLXNwYW4tYWxsLWJsb2NrLXNpYmxpbmctMDAzLnhodCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzE0OTI0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtbWFyZ2luLW5lc3RlZC1maXJzdGNoaWxkLTAw
MS54aHQgWyBTa2lwIF0KIAotIyAndHJhbnNmb3JtLWJveCcgc3VwcG9ydCBpcyBicm9rZW4gZm9y
IGNvbXBvc2l0ZWQgZWxlbWVudHMuCi13ZWJraXQub3JnL2IvMjM3NTUzIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi90cmFuc2Zvcm0t
Ym94LXdpbGwtY2hhbmdlLXRyYW5zZm9ybS1sYXllci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci0KICMgVE9ETyBFWElGLXJlc29sdXRpb24gaXMgbm90IHN1cHBvcnRlZAogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9kZW5zaXR5LXNpemUtY29ycmVjdGlvbi8gWyBTa2lwIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457214</attachid>
            <date>2022-04-10 15:57:37 -0700</date>
            <delta_ts>2022-04-10 16:29:35 -0700</delta_ts>
            <desc>Patch, v5</desc>
            <filename>bug-211787-20220410155736.patch</filename>
            <type>text/plain</type>
            <size>35388</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM1ZmVmNmRhNmYzNjRm
ZmM0OGFiNDM2MjQzZDU4MWJmYWM4Nzk4My4uNGNhZDJkMDk5NDZhMjFiNzQ5NjJkNGY2OTg2MTE5
YjJlYTI3YzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTA0LTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9y
aWdpbkZvclBhaW50aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVBlcnNwZWN0aXZl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlVHJhbnNmb3Jt
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5z
Zm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dW5hcHBs
eVRyYW5zZm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0gY29uc3QpOgorCiAyMDIyLTA0LTEwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1
cHBvcnQgdGhyb3VnaCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCmluZGV4IGY2ZDU5YTVlMWQ3NDJkNGM1MjQ4YTk3ZjBkNGVhYWZiNGVlMjM4Yjku
LjI4MzQ2YzNhNmJhMGFjYWFjMDkxZTk3ZDliYWQzMGQyZGYxM2RiY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtMTk5Nyw3ICsxOTk3LDcgQEAg
Ym9vbCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZVRyYW5zZm9ybWVkRXh0ZW50VmlhVHJhbnNmb3Jt
TGlzdChjb25zdCBGbG9hdFJlY3QmIHIKIAogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4g
PSBjb250YWluc1JvdGF0aW9uKHN0eWxlLnRyYW5zZm9ybSgpLm9wZXJhdGlvbnMoKSkgfHwgc3R5
bGUudHJhbnNmb3JtKCkuYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpOwogICAgIGlmIChhcHBs
eVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSByZW5kZXJlckJv
eC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRyYW5zZm9ybU9y
aWdpblhZKCksIHJlbmRlcmVyQm94LnNpemUoKSk7CisgICAgICAgIHRyYW5zZm9ybU9yaWdpbiA9
IHN0eWxlLmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4ocmVuZGVyZXJCb3gpLnh5KCk7CiAgICAgICAg
IC8vIElnbm9yZSB0cmFuc2Zvcm1PcmlnaW5aIGJlY2F1c2Ugd2UnbGwgYmFpbCBpZiB3ZSBlbmNv
dW50ZXIgYW55IDNEIHRyYW5zZm9ybXMuCiAgICAgICAgIGZsb2F0Qm91bmRzLm1vdmVCeSgtdHJh
bnNmb3JtT3JpZ2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCBkMGUyOTdjNDJhNWJkZWQ2ZjNiNjcxODZjNTNiMTdhYmY3M2ZmZjI4Li5lMGM0
YjVmYzVjNWZlOTA4MjgwOTBhZjY4MDE3MmM4ODAyMThhNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE3ODQsNDMgKzE3ODQsNjIgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbihPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlv
bnNGbGFnPiogZmxhZ3MKICAgICByZXR1cm4gcG9zaXRpb25Pck9mZnNldENoYW5nZWQ7CiB9CiAK
LVRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybShj
b25zdCBMYXlvdXRSZWN0JiBsYXllclJlY3QpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBS
ZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSBjb25zdAogewotICAgIC8vIEZJWE1F
OiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2Jq
ZWN0IGRlcml2ZWQgcmVuZGVyZXJzCi0gICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkp
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8
UmVuZGVyQm94PihyZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlckJveC5oYXNUcmFuc2Zvcm1S
ZWxhdGVkUHJvcGVydHkoKSkKKyAgICBpZiAoIXJlbmRlcmVyKCkuaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBjb25zdCBhdXRvJiBzdHls
ZSA9IHJlbmRlckJveC5zdHlsZSgpOworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gcmVuZGVyZXIo
KS5zdHlsZSgpOwogICAgIGlmICghc3R5bGUuaGFzUGVyc3BlY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gcmVmZXJlbmNlQm94UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNJZk5lZWRlZChyZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qoc3R5bGUp
LCByZW5kZXJlcigpKTsKLSAgICBhdXRvIHNuYXBwZWRMYXllclJlY3QgPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzSWZOZWVkZWQobGF5ZXJSZWN0LCByZW5kZXJlcigpKTsKKyAgICBhdXRvIHRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSWZOZWVkZWQocmVu
ZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKSwgcmVuZGVyZXIoKSk7Cisg
ICAgYXV0byBwZXJzcGVjdGl2ZU9yaWdpbiA9IHN0eWxlLmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdp
bih0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KTsKIAotICAgIGF1dG8gcGVyc3BlY3RpdmVPcmln
aW4gPSByZWZlcmVuY2VCb3hSZWN0LmxvY2F0aW9uKCkgLSB0b0Zsb2F0U2l6ZShzbmFwcGVkTGF5
ZXJSZWN0LmxvY2F0aW9uKCkpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnBlcnNw
ZWN0aXZlT3JpZ2luKCksIHJlZmVyZW5jZUJveFJlY3Quc2l6ZSgpKTsKKyAgICAvLyBJbiB0aGUg
cmVndWxhciBjYXNlIG9mIGEgbm9uLWNsaXBwZWQsIG5vbi1zY3JvbGxlZCBHcmFwaGljc0xheWVy
LCBhbGwgdHJhbnNmb3JtYXRpb25zCisgICAgLy8gKHZpYSBDU1MgJ3RyYW5zZm9ybScgLyAncGVy
c3BlY3RpdmUnKSBhcmUgYXBwbGllZCB3aXRoIHJlc3BlY3QgdG8gYSBwcmVkZWZpbmVkIGFuY2hv
ciBwb2ludCwKKyAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gQ1NTICd0cmFuc2Zv
cm0tYm94JyAvICd0cmFuc2Zvcm0tb3JpZ2luJyBwcm9wZXJ0aWVzLgorICAgIC8vCisgICAgLy8g
QSB0cmFuc2Zvcm1hdGlvbiBnaXZlbiBieSB0aGUgQ1NTICd0cmFuc2Zvcm0nIHByb3BlcnR5IGlz
IGFwcGxpZWQsIGJ5IHRyYW5zbGF0aW5nCisgICAgLy8gdG8gdGhlICd0cmFuc2Zvcm0gb3JpZ2lu
JywgYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uLCBhbmQgdHJhbnNsYXRpbmcgYmFjay4KKyAg
ICAvLyBXaGVuIGFuIGVsZW1lbnQgc3BlY2lmaWVzIGEgQ1NTICdwZXJzcGVjdGl2ZScgcHJvcGVy
dHksIHRoZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgKKyAgICAvLyB0aGF0J3Mg
Y29tcHV0ZWQgaGVyZSBpcyBwcm9wYWdhdGVkIHRvIHRoZSBHcmFwaGljc0xheWVyIGJ5IGNhbGxp
bmcgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oKS4KKyAgICAvLworICAgIC8vIEhvd2V2ZXIgdGhlIEdy
YXBoaWNzTGF5ZXIgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIChlLmcuIENBIG9uIG1hY09TKSBh
cHBseSB0aGUgY2hpbGRyZW4gdHJhbnNmb3JtLAorICAgIC8vIGRlZmluZWQgb24gdGhlIHBhcmVu
dCwgd2l0aCByZXNwZWN0IHRvIHRoZSBhbmNob3IgcG9pbnQgb2YgdGhlIHBhcmVudCwgd2hlbiBy
ZW5kZXJpbmcgY2hpbGQgZWxlbWVudHMuCisgICAgLy8gVGhpcyBpcyB3cm9uZywgYXMgdGhlIHBl
cnNwZWN0aXZlIHRyYW5zZm9ybWF0aW9uIChhcHBsaWVkIHRvIGEgY2hpbGQgb2YgdGhlIGVsZW1l
bnQgZGVmaW5pbmcgdGhlCisgICAgLy8gM2QgZWZmZWN0KSwgbXVzdCBiZSBpbmRlcGVuZGFudCBv
ZiB0aGUgY2hvc2VuIHRyYW5zZm9ybS1vcmlnaW4gKHRoZSBwYXJlbnRzIHRyYW5zZm9ybSBvcmln
aW4KKyAgICAvLyBtdXN0IG5vdCBhZmZlY3QgaXRzIGNoaWxkcmVuKS4KKyAgICAvLworICAgIC8v
IFRvIGNpcmN1bXZlbnQgdGhpcywgZXhwbGljaXRlbHkgcmVtb3ZlIHRoZSB0cmFuc2Zvcm0tb3Jp
Z2luIGRlcGVuZGVuY3kgaW4gdGhlIHBlcnNwZWN0aXZlIG1hdHJpeC4KKyAgICBhdXRvIHRyYW5z
Zm9ybU9yaWdpbiA9IHRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgc3R5bGUudW5hcHBseVRyYW5zZm9ybU9yaWdp
bih0cmFuc2Zvcm0sIHRyYW5zZm9ybU9yaWdpbik7CisgICAgc3R5bGUuYXBwbHlQZXJzcGVjdGl2
ZSh0cmFuc2Zvcm0sIHJlbmRlcmVyKCksIHBlcnNwZWN0aXZlT3JpZ2luKTsKKyAgICBzdHlsZS5h
cHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIHRyYW5zZm9ybU9yaWdpbik7CisgICAgcmV0
dXJuIHRyYW5zZm9ybTsKK30KIAotICAgIC8vIEEgcGVyc3BlY3RpdmUgb3JpZ2luIG9mIDAsMCBt
YWtlcyB0aGUgdmFuaXNoaW5nIHBvaW50IGluIHRoZSBjZW50ZXIgb2YgdGhlIGVsZW1lbnQuCi0g
ICAgLy8gV2Ugd2FudCBpdCB0byBiZSBpbiB0aGUgdG9wLWxlZnQsIHNvIHN1YnRyYWN0IGhhbGYg
dGhlIGhlaWdodCBhbmQgd2lkdGguCi0gICAgcGVyc3BlY3RpdmVPcmlnaW4gLT0gc25hcHBlZExh
eWVyUmVjdC5zaXplKCkgLyAyLjBmOworRmxvYXRQb2ludDNEIFJlbmRlckxheWVyOjp0cmFuc2Zv
cm1PcmlnaW5Gb3JQYWludGluZygpIGNvbnN0Cit7CisgICAgaWYgKCFyZW5kZXJlcigpLmhhc1Ry
YW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKQorICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICB0LnRyYW5zbGF0ZShwZXJzcGVjdGl2ZU9yaWdpbi54
KCksIHBlcnNwZWN0aXZlT3JpZ2luLnkoKSk7Ci0gICAgdC5hcHBseVBlcnNwZWN0aXZlKHN0eWxl
LnVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcigpKSk7Ci0gICAgdC50cmFuc2xhdGUoLXBlcnNwZWN0
aXZlT3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSk7CisgICAgY29uc3QgYXV0byYg
c3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgYXV0byByZWZlcmVuY2VCb3hSZWN0ID0g
cmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKTsKIAotICAgIHJldHVy
biB0OworICAgIGF1dG8gb3JpZ2luID0gc3R5bGUuY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihyZWZl
cmVuY2VCb3hSZWN0KTsKKyAgICBpZiAocmVuZGVyZXJOZWVkc1BpeGVsU25hcHBpbmcocmVuZGVy
ZXIoKSkpCisgICAgICAgIG9yaWdpbi5zZXRYWShyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5
b3V0UG9pbnQob3JpZ2luLnh5KCkpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSkpOworICAgIHJldHVybiBvcmlnaW47CiB9CiAKIEZsb2F0UG9pbnQgUmVuZGVyTGF5
ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8g
RklYTUU6IFRoaXMgdXNlcyB0aGUgd3JvbmcsIHRyYW5zZm9ybS1ib3ggdW5hd2FyZSwgZ2VvbWV0
cnkuCi0gICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChyZW5kZXJlcigpLnN0eWxl
KCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpKTsK
KyAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5w
ZXJzcGVjdGl2ZU9yaWdpbigpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qo
cmVuZGVyZXIoKS5zdHlsZSgpKS5zaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b250YWluZXJGb3JQb3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBlIHBv
c2l0aW9uLCBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCmluZGV4IDdkM2NiMTU3ZDBmYmYyMDJlYTdkOGE2NDkyM2Y4MDRkZjMwOTFj
NzIuLjc2NmRmMzdjNDUzOGEzZjFiOWIyODllNWYyYzI1NjAzZGQzYWQyMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MzksMTAgKzczOSwxMSBAQCBwdWJsaWM6
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyYWJsZVRyYW5zZm9ybShPcHRpb25TZXQ8
UGFpbnRCZWhhdmlvcj4pIGNvbnN0OwogICAgIAogICAgIC8vIEdldCB0aGUgcGVyc3BlY3RpdmUg
dHJhbnNmb3JtLCB3aGljaCBpcyBhcHBsaWVkIHRvIHRyYW5zZm9ybWVkIHN1YmxheWVycy4KLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyIGhhcyBhIC13ZWJraXQtcGVyc3BlY3RpdmUu
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSBwZXJzcGVjdGl2ZS4KICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyB0cmFuc2Zvcm0gaGFzIHRoZSBwZXJzcGVjdGl2ZS1vcmlnaW4g
YmFrZWQgaW4uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVUcmFuc2Zvcm0o
Y29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgcGVyc3Bl
Y3RpdmVPcmlnaW4oKSBjb25zdDsKKyAgICBGbG9hdFBvaW50M0QgdHJhbnNmb3JtT3JpZ2luRm9y
UGFpbnRpbmcoKSBjb25zdDsKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlczNEKCk7IH0KICAgICBib29sIGhhczNEVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJhbnNmb3JtLT5pc0FmZmlu
ZSgpOyB9CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNUcmFuc2Zvcm1lZEFuY2VzdG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFh
YzNkZjdjZjQ5YmI5MjIuLjBlY2E5ZjkyYTQ3N2IzZTAwZTg0NWJjODZhOTM5YjBkZDM4Y2I4MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC02MzcsMTYgKzYzNywxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3Bh
Y2l0eShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRP
cGFjaXR5KGNvbXBvc2l0aW5nT3BhY2l0eShzdHlsZS5vcGFjaXR5KCkpKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCit2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgbV9vd25pbmdMYXllci50
cmFuc2Zvcm0oKSwgYnV0IHRoYXQgY3VycmVudGx5IGhhcyB0cmFuc2Zvcm0tb3JpZ2luCi0gICAg
Ly8gYmFrZWQgaW50byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhhdC4KICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0OwotICAgIGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIHdyb25nLCB0cmFuc2Zvcm0tYm94IHVuYXdh
cmUsIGdlb21ldHJ5LgotICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKHQsIHJlbmRl
cmVyKCkuc3R5bGUoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhtX293bmluZ0xheWVyLnJlbmRl
cmVyQm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5bGU6Omlu
ZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKLSAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFi
bGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKLSAgICB9CisgICAg
aWYgKG1fb3duaW5nTGF5ZXIuaGFzVHJhbnNmb3JtKCkpCisgICAgICAgIG1fb3duaW5nTGF5ZXIu
dXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHQsIHN0eWxlLCBSZW5kZXJTdHlsZTo6aW5kaXZpZHVh
bFRyYW5zZm9ybU9wZXJhdGlvbnMpOwogICAgIAogICAgIGlmIChtX2NvbnRlbnRzQ29udGFpbm1l
bnRMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+c2V0VHJhbnNm
b3JtKHQpOwpAQCAtNjU3LDIwICs2NTIsMjUgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KGNvbnN0IExheW91dFJl
Y3QmIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdCwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUGFyZW50
R3JhcGhpY3NMYXllcikKIHsKKyAgICBhdXRvIGRlZmF1bHRBbmNob3JQb2ludCA9IEZsb2F0UG9p
bnQzRCB7IDAuNSwgMC41LCAwIH07CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdEFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEIHsgMC41LCAwLjUsIDAgfTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRB
bmNob3JQb2ludChkZWZhdWx0QW5jaG9yUG9pbnQpOwogICAgICAgICBpZiAobV9jb250ZW50c0Nv
bnRhaW5tZW50TGF5ZXIpCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKIAorICAgICAgICBpZiAobV9jaGls
ZENvbnRhaW5tZW50TGF5ZXIpCisgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKKworICAgICAgICBpZiAobV9zY3Jv
bGxDb250YWluZXJMYXllcikKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNl
dEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKICAgICAgICAgaWYgKG1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyKQogICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNl
dFByZXNlcnZlczNEKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0
IGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSB0aGlzLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAg
IGF1dG8gYm9yZGVyQm94UmVjdCA9IG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0
KCk7Ci0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9y
UGFpbnRpbmcoYm9yZGVyQm94UmVjdCk7CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBtX293
bmluZ0xheWVyLnRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CiAgICAgYXV0byBsYXllck9m
ZnNldCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBvaW50KG9mZnNldEZyb21Q
YXJlbnRHcmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gYW5jaG9y
ID0gRmxvYXRQb2ludDNEIHsKICAgICAgICAgcHJpbWFyeUdyYXBoaWNzTGF5ZXJSZWN0LndpZHRo
KCkgPyAoKGxheWVyT2Zmc2V0LngoKSAtIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC54KCkpICsg
dHJhbnNmb3JtT3JpZ2luLngoKSkgLyBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3Qud2lkdGgoKSA6
IDAuNWYsCkBAIC02ODUsMTEgKzY4NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogCiAg
ICAgYXV0byByZW1vdmVDaGlsZHJlblRyYW5zZm9ybUZyb21MYXllcnMgPSBbJl0oR3JhcGhpY3NM
YXllciogbGF5ZXJUb0lnbm9yZSA9IG51bGxwdHIpIHsKICAgICAgICAgYXV0byogY2xpcHBpbmdM
YXllciA9IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKLSAgICAgICAgaWYgKGNsaXBwaW5nTGF5ZXIg
JiYgY2xpcHBpbmdMYXllciAhPSBsYXllclRvSWdub3JlKQorICAgICAgICBpZiAoY2xpcHBpbmdM
YXllciAmJiBjbGlwcGluZ0xheWVyICE9IGxheWVyVG9JZ25vcmUpIHsKICAgICAgICAgICAgIGNs
aXBwaW5nTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHsgfSk7Ci0gICAgICAgIAorICAgICAg
ICAgICAgY2xpcHBpbmdMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5lckxheWVyICYmIG1fc2Ny
b2xsQ29udGFpbmVyTGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkgewogICAgICAgICAgICAgbV9zY3Jv
bGxDb250YWluZXJMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oeyB9KTsKKyAgICAgICAgICAg
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2lu
dCk7CiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2VydmVzM0Qo
ZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTcwMiw3ICs3MDUsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlv
dXRSZWN0JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBsYXllckZvckNoaWxk
cmVuVHJhbnNmb3JtID0gWyZdIHsKKyAgICBhdXRvIGxheWVyRm9yQ2hpbGRyZW5UcmFuc2Zvcm0g
PSBbJl0oKSAtPiBzdGQ6OnR1cGxlPEdyYXBoaWNzTGF5ZXIqLCBGbG9hdFJlY3Q+IHsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpIHsKICAgICAgICAgICAgIEFTU0VSVChpczxS
ZW5kZXJCb3g+KHJlbmRlcmVyKCkpKTsgLy8gU2Nyb2xsIGNvbnRhaW5lciBsYXllcnMgYXJlIG9u
bHkgY3JlYXRlZCBmb3IgUmVuZGVyQm94IGRlcml2ZWQgcmVuZGVyZXJzLgogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpLCBzY3Jv
bGxDb250YWluZXJMYXllckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKSk7CkBA
IC03MTAsMTkgKzcxMywyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRy
ZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICBpZiAo
YXV0byogbGF5ZXIgPSBjbGlwcGluZ0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKGxheWVyLCBjbGlwcGluZ0xheWVyQm94KHJlbmRlcmVyKCkpKTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgYm9yZGVyQm94
UmVjdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9ncmFwaGljc0xheWVyLmdl
dCgpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSk7CiAgICAgfTsKIAot
ICAgIGF1dG8gW2xheWVyRm9yUGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlUmVsYXRpdmVCb3hdID0g
bGF5ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIC8vIEZJWE1FOiBwZXJzcGVjdGl2ZVJl
bGF0aXZlQm94IGlzbid0IHF1aXRlIHJpZ2h0IGhlcmUuIFRoaXMgbmVlZHMgd29yazogd2Via2l0
Lm9yZy9iLzIxMTc4Ny4KLSAgICBhdXRvIHBlcnNwZWN0aXZlVHJhbnNmb3JtID0gb3duaW5nTGF5
ZXIoKS5wZXJzcGVjdGl2ZVRyYW5zZm9ybShwZXJzcGVjdGl2ZVJlbGF0aXZlQm94KTsKLSAgICAK
LSAgICAvLyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBsYXllcnMsIHdlIG5lZWQgdGhlIGNoaWxkcmVu
IHRyYW5zZm9ybSBvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyIHRvCi0gICAgLy8gYWZmZWN0IGNo
aWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0Qo
dHJ1ZSkuCi0gICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgPT0gbV9zY3JvbGxDb250YWluZXJM
YXllcikKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNlcnZlczNEKHRy
dWUpOwotICAgIAotICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxkcmVuVHJhbnNmb3Jt
KHBlcnNwZWN0aXZlVHJhbnNmb3JtKTsKKyAgICBhdXRvIFtsYXllckZvclBlcnNwZWN0aXZlLCBs
YXllckZvclBlcnNwZWN0aXZlUmVjdF0gPSBsYXllckZvckNoaWxkcmVuVHJhbnNmb3JtKCk7Cisg
ICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgIT0gbV9ncmFwaGljc0xheWVyKSB7CisgICAgICAg
IC8vIElmIHdlIGhhdmUgc2Nyb2xsaW5nIGxheWVycywgd2UgbmVlZCB0aGUgY2hpbGRyZW4gdHJh
bnNmb3JtIG9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgdG8KKyAgICAgICAgLy8gYWZmZWN0IGNo
aWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0Qo
dHJ1ZSkuCisgICAgICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlID09IG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2Vy
dmVzM0QodHJ1ZSk7CisKKyAgICAgICAgYXV0byBwZXJzcGVjdGl2ZUFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEIHsKKyAgICAgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LndpZHRoKCkg
PyAodHJhbnNmb3JtT3JpZ2luLngoKSAtIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LngoKSkgLyBs
YXllckZvclBlcnNwZWN0aXZlUmVjdC53aWR0aCgpIDogMC41ZiwKKyAgICAgICAgICAgIGxheWVy
Rm9yUGVyc3BlY3RpdmVSZWN0LmhlaWdodCgpID8gKHRyYW5zZm9ybU9yaWdpbi55KCkgLSBsYXll
ckZvclBlcnNwZWN0aXZlUmVjdC55KCkpIC8gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3QuaGVpZ2h0
KCkgOiAwLjVmLAorICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luLnooKQorICAgICAgICB9Owor
CisgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldEFuY2hvclBvaW50KHBlcnNwZWN0aXZl
QW5jaG9yUG9pbnQpOworICAgIH0KKworICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxk
cmVuVHJhbnNmb3JtKG1fb3duaW5nTGF5ZXIucGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSk7CiAgICAg
cmVtb3ZlQ2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzKGxheWVyRm9yUGVyc3BlY3RpdmUpOwog
fQogCkBAIC0yOTcwLDE3ICsyOTgwLDYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUltYWdlQ29udGVudHMoUGFpbnRlZENvbnRlbnRzSW5mbyYgY29udGVudHNJbmZvKQogICAgIGlt
YWdlLT5zdGFydEFuaW1hdGlvbigpOwogfQogCi1GbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYg
Ym9yZGVyQm94KSBjb25zdAotewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0gICAgb3JpZ2luLnNl
dFhZKHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhwb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRy
YW5zZm9ybU9yaWdpblhZKCksIGJvcmRlckJveC5zaXplKCkpLCBkZXZpY2VTY2FsZUZhY3Rvcigp
KSk7Ci0gICAgb3JpZ2luLnNldFooc3R5bGUudHJhbnNmb3JtT3JpZ2luWigpKTsKLQotICAgIHJl
dHVybiBvcmlnaW47Ci19Ci0KIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcC1sZWZ0
IG9mIHRoaXMgY29tcG9zaXRpbmcgbGF5ZXIgYXQgd2hpY2ggdGhlIHJlbmRlcmVyJ3MgY29udGVu
dHMgYXJlIHBhaW50ZWQuCiBMYXlvdXRTaXplIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudE9m
ZnNldEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggODU4N2Q2MTQwZWExZDE1MzBkN2VkM2Zk
NTZiMjdkOWFlODY1MmM2MS4uYWJlNDQ5ZWU2YmYxZGFiMDMwNmQzODViZWZmYjczZjUyMTNlMGRm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMzMxLDkgKzMzMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kTGF5ZXJQ
YWludHNGaXhlZFJvb3RCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50
T2Zmc2V0SW5Db21wb3NpdGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgLy8gUmVzdWx0IGlzIHRyYW5z
Zm9ybSBvcmlnaW4gaW4gZGV2aWNlIHBpeGVscy4KLSAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRy
YW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29u
c3Q7Ci0KICAgICBMYXlvdXRTaXplIG9mZnNldFJlbGF0aXZlVG9SZW5kZXJlck9yaWdpbkZvckRl
c2NlbmRhbnRMYXllcnMoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGVuc3VyZUNsaXBwaW5nU3Rh
Y2tMYXllcnMoTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2smKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMjM1M2MxNzcw
NjkyZjNkNzEzNWMyODkxYWU2ODNmYTM0MzM4N2MzNi4uMzg3ODc5OTBiMWFkNWI1NjVjYjgwOTQ0
NTQwOTc1YmE4NWM5NTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2MzcsNiArMTYzNyw3IEBAIHN0YXRpYyBib29s
IHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZShjb25zdCBSZW5kZXJTdHls
ZSYgb2xkU3R5bGUsCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zbGF0ZSgpICE9IG5ld1N0eWxl
LnRyYW5zbGF0ZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnNjYWxlKCkgIT0gbmV3U3R5bGUuc2Nh
bGUoKQogICAgICAgICB8fCBvbGRTdHlsZS5yb3RhdGUoKSAhPSBuZXdTdHlsZS5yb3RhdGUoKQor
ICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1Cb3goKSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1C
b3goKQogICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkgIT0gbmV3U3R5bGUu
dHJhbnNmb3JtT3JpZ2luWCgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zZm9ybU9yaWdpblko
KSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUudHJh
bnNmb3JtT3JpZ2luWigpICE9IG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdpblooKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggY2QzYTU0MGRm
NTU2YTEzZDQzMmY4Y2Q2MDA3ZDU2NzNlZDlkNjYyNS4uYmQ3MTQzYjgwODE3MzY3NmI3MWYyYWYy
Mzk5NWIwNGE0ODNmNTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCkBAIC0xNDUwLDIyICsxNDUwLDQzIEBAIGJvb2wgUmVuZGVyU3R5bGU6
OmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotRmxvYXRQb2ludDNEIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBj
b25zdAorRmxvYXRQb2ludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2luKGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJvdW5kaW5n
Qm94LmxvY2F0aW9uKCkgKyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQocGVyc3BlY3RpdmVPcmln
aW4oKSwgYm91bmRpbmdCb3guc2l6ZSgpKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlQ
ZXJzcGVjdGl2ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFBvaW50JiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0
Cit7CisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI3BlcnNw
ZWN0aXZlCisgICAgLy8gVGhlIHBlcnNwZWN0aXZlIG1hdHJpeCBpcyBjb21wdXRlZCBhcyBmb2xs
b3dzOgorICAgIC8vIDEuIFN0YXJ0IHdpdGggdGhlIGlkZW50aXR5IG1hdHJpeC4KKworICAgIC8v
IDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCBhbmQgWSB2YWx1ZXMgb2YgcGVyc3BlY3Rp
dmUtb3JpZ2luCisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW5UcmFuc2xhdGUueCgpLCBv
cmlnaW5UcmFuc2xhdGUueSgpKTsKKworICAgIC8vIDMuIE11bHRpcGx5IGJ5IHRoZSBtYXRyaXgg
dGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBmcm9tIHRoZSBwZXJzcGVjdGl2ZSgpIHRyYW5zZm9ybSBm
dW5jdGlvbiwgd2hlcmUgdGhlIGxlbmd0aCBpcyBwcm92aWRlZCBieSB0aGUgdmFsdWUgb2YgdGhl
IHBlcnNwZWN0aXZlIHByb3BlcnR5CisgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUodXNl
ZFBlcnNwZWN0aXZlKHJlbmRlcmVyKSk7CisKKyAgICAvLyA0LiBUcmFuc2xhdGUgYnkgdGhlIG5l
Z2F0ZWQgY29tcHV0ZWQgWCBhbmQgWSB2YWx1ZXMgb2YgcGVyc3BlY3RpdmUtb3JpZ2luCisgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZSgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0
ZS55KCkpOworfQorCitGbG9hdFBvaW50M0QgUmVuZGVyU3R5bGU6OmNvbXB1dGVUcmFuc2Zvcm1P
cmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKIHsKLSAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gMi4gVHJhbnNs
YXRlIGJ5IHRoZSBjb21wdXRlZCBYLCBZLCBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdp
bi4KICAgICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRlOwogICAgIG9yaWdpblRyYW5zbGF0
ZS5zZXRYWShib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50
KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkpOwogICAgIG9yaWdpblRy
YW5zbGF0ZS5zZXRaKHRyYW5zZm9ybU9yaWdpblooKSk7CisgICAgcmV0dXJuIG9yaWdpblRyYW5z
bGF0ZTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFu
c2xhdGUpIGNvbnN0Cit7CiAgICAgaWYgKCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAg
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChvcmlnaW5UcmFuc2xhdGUueCgpLCBvcmlnaW5UcmFu
c2xhdGUueSgpLCBvcmlnaW5UcmFuc2xhdGUueigpKTsKLSAgICByZXR1cm4gb3JpZ2luVHJhbnNs
YXRlOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjp1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJh
bnNsYXRlKSBjb25zdAogewotICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNm
b3Jtcy0yLyNjdG0KLSAgICAvLyA4LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0ZWQgY29tcHV0ZWQg
WCwgWSBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdpbi4KICAgICBpZiAoIW9yaWdpblRy
YW5zbGF0ZS5pc1plcm8oKSkKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1vcmlnaW5U
cmFuc2xhdGUueCgpLCAtb3JpZ2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5zbGF0ZS56KCkp
OwogfQpAQCAtMTQ3Nyw3ICsxNDk4LDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gb3JpZ2luVHJhbnNsYXRlID0gYXBwbHlUcmFu
c2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CisgICAgYXV0byBvcmlnaW5UcmFu
c2xhdGUgPSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGJvdW5kaW5nQm94KTsKKyAgICBhcHBseVRy
YW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7CiAgICAgYXBwbHlDU1NU
cmFuc2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiAgICAgdW5hcHBseVRy
YW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7CiB9CkBAIC0xNTcxLDcg
KzE1OTMsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUodHJhdmVyc2FsU3RhdGUuY3VycmVudCgpLngoKSwgdHJhdmVyc2FsU3RhdGUuY3VycmVudCgp
LnkoKSk7CiAKICAgICAvLyBTaGlmdCBlbGVtZW50IHRvIHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5
IG9mZnNldC1hbmNob3IuCi0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBmbG9hdFBvaW50Rm9y
TGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2luWFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJv
dW5kaW5nQm94LmxvY2F0aW9uKCk7CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRl
VHJhbnNmb3JtT3JpZ2luKGJvdW5kaW5nQm94KS54eSgpOwogICAgIGF1dG8gYW5jaG9yID0gdHJh
bnNmb3JtT3JpZ2luOwogICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0bygpKQogICAg
ICAgICBhbmNob3IgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQob2Zmc2V0QW5jaG9yKCksIGJv
dW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkYjEyZTMwMzZmMzY0MWEz
MWY3MGJjMDE3MTFiOTI5NmU0MTMxMDcyLi5kM2U2NTViYzJmN2IzYTdjMGJkNmMyZTY0NGJlNzg4
ZWM4M2NkY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaApAQCAtNzA3LDggKzcwNywxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBP
cHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBpbmRpdmlkdWFsVHJhbnNmb3JtT3Bl
cmF0aW9ucyA9IHsgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2xhdGUsIFRyYW5zZm9y
bU9wZXJhdGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlNjYWxl
LCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OwogCiAgICAgYm9vbCBhZmZlY3Rl
ZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Q7Ci0gICAgRmxvYXRQb2ludDNEIGFwcGx5VHJhbnNm
b3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCkgY29uc3Q7CisKKyAgICBGbG9hdFBvaW50IGNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdDsKKyAgICB2b2lkIGFwcGx5UGVyc3Bl
Y3RpdmUoVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBG
bG9hdFBvaW50JiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0OworCisgICAgRmxvYXRQb2ludDNEIGNv
bXB1dGVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3Q7
CisgICAgdm9pZCBhcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdDsKICAgICB2b2lkIHVuYXBw
bHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFBvaW50
M0QmIG9yaWdpblRyYW5zbGF0ZSkgY29uc3Q7CisKICAgICAvLyBhcHBseVRyYW5zZm9ybSBjYWxs
cyBhcHBseVRyYW5zZm9ybU9yaWdpbigpLCB0aGVuIGFwcGx5Q1NTVHJhbnNmb3JtKCksIGZvbGxv
d2VkIGJ5IHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKS4KICAgICB2b2lkIGFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0
aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25z
KSBjb25zdDsKICAgICB2b2lkIGFwcGx5Q1NTVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKaW5kZXggZTA3MGM3YTczMDYyNmFkNWMyMDdk
ZWM3MjE4MDMzM2UzNTFlYzgzOC4uYWNhZDRmODU0YjJmNmU1ODEyYjU5ZjM0ZjBiNGQwN2NjMTUz
NDYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTEw
Nyw4ICsxMDcsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIAogICAgIC8vIElmIHdlIGRpZG4ndCBoYXZlIHRoZSBD
U1MgInRyYW5zZm9ybSIgcHJvcGVydHkgc2V0LCB3ZSBtdXN0IGFjY291bnQgZm9yIHRoZSAidHJh
bnNmb3JtIiBhdHRyaWJ1dGUuCiAgICAgaWYgKCFoYXNTcGVjaWZpZWRUcmFuc2Zvcm0gJiYgc3R5
bGUpIHsKLSAgICAgICAgYXV0byBib3VuZGluZ0JveCA9IHJlbmRlcmVyKCktPnRyYW5zZm9ybVJl
ZmVyZW5jZUJveFJlY3QoKTsKLSAgICAgICAgYXV0byB0ID0gZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91
bmRpbmdCb3gubG9jYXRpb24oKTsKKyAgICAgICAgYXV0byB0ID0gc3R5bGUtPmNvbXB1dGVUcmFu
c2Zvcm1PcmlnaW4ocmVuZGVyZXIoKS0+dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpKS54eSgp
OwogICAgICAgICBtYXRyaXgudHJhbnNsYXRlKHQpOwogICAgICAgICBtYXRyaXggKj0gdHJhbnNm
b3JtKCkuY29uY2F0ZW5hdGUoKTsKICAgICAgICAgbWF0cml4LnRyYW5zbGF0ZSgtdC54KCksIC10
LnkoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggODFhOGQzMDUyZGI4MjAyMjlkNWJkZDhjZWZhMGQ3NjA0YzQyM2VjMS4u
MDRjODc5M2VmYjkyZjg4OTdmYzI4OGZjYmU0ZjY1MjgyYTBlMjA3YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDIyLTA0LTEwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFBlcnNwZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkg
dHJhbnNmb3JtLW9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwZWN0
YXRpb246IGFuY2hvciBwb2ludHMgaW4gdGhlIEdyYXBoaWNzTGF5ZXIgdHJlZSBkdW1wcyBoYXZl
IGNoYW5nZWQuCisKKyAgICAgICAgVW5za2lwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi90cmFuc2Zvcm0tYm94LXdpbGwtY2hhbmdl
LXRyYW5zZm9ybS1sYXllci5odG1sCisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXM6ICd0cmFuc2Zv
cm0tYm94JyBjaGFuZ2VzIG5vdyBwcm9wZXJ0bHkgdHJpZ2dlciBHcmFwaGljc0xheWVyIGdlb21l
dHJ5IHVwZGF0ZXMuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRq
dXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBj
b21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIvY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFk
anVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdr
MS9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFn
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDQtMTAg
IFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYWNjZXNz
aWJpbGl0eS9hcmlhLWludmFsaWQuaHRtbCBpbiBpc29sYXRlZCB0cmVlIG1vZGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNl
Y29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBl
Y3RlZC50eHQKaW5kZXggN2ZkMzY2NzEyOWJjNmJmNDhjNDU5NmY4MWQxYTg2Yzg1OTAzZDZlNi4u
ZDE1ZWE5NTVhMjA3NDljNzJkZDNjOTg1ZGRjMmUzYmZhMmZlNGY4NSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5
LXF1YWQtbWFwcGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
dGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1leHBlY3Rl
ZC50eHQKQEAgLTI0LDkgKzI0LDEwIEBACiAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIK
ICAgICAgICAgICAgICAgICAgIChvZmZzZXRGcm9tUmVuZGVyZXIgd2lkdGg9MSBoZWlnaHQ9MSkK
ICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDEuMDApCisgICAgICAgICAgICAgICAg
ICAoYW5jaG9yIDAuNTEgMC41MCkKICAgICAgICAgICAgICAgICAgIChib3VuZHMgNTgzLjAwIDU3
OC4wMCkKICAgICAgICAgICAgICAgICAgIChiYWNraW5nU3RvcmVBdHRhY2hlZCAxKQotICAgICAg
ICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4w
MCAxLjAwIDAuMDAgMC4wMF0gWy0zMDcuNTAgLTI5MC4wMCAxLjAwIC0xLjAwXSBbMC4wMCAwLjAw
IDAuMDAgMS4wMF0pCisgICAgICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAg
MC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbLTMwMC4wMCAtMjkwLjAwIDEu
MDAgLTEuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgICAgIChjaGls
ZHJlbiAxCiAgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAg
ICAgICAgICAgKHBvc2l0aW9uIDAuMDAgLTQwMC4wMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2
ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dAppbmRleCAxYjA2NDU4ZjFl
MWU4MzM3YzFlMzNjYjA4NWExMTZiNmE5NzM0MzJkLi4yNDZlYjRhOTUzYzdhNmVlM2I1YmYwNTRm
OWFmZTJjNmNiODUyZWUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxp
bmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVy
LXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0CkBAIC0yOSw4ICsyOSw5IEBACiAgICAgICAgICAg
KGNoaWxkcmVuIDIKICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAgIChi
b3VuZHMgb3JpZ2luIDAuMDAgOTAwLjAwKQorICAgICAgICAgICAgICAoYW5jaG9yIDAuNTEgMC41
MCkKICAgICAgICAgICAgICAgKGJvdW5kcyA1ODUuMDAgNTAwLjAwKQotICAgICAgICAgICAgICAo
Y2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAw
LjAwXSBbMi45MyAyLjUwIDEuMDAgLTAuMDFdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAg
ICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAx
LjAwIDAuMDAgMC4wMF0gWzMuMDAgMi41MCAxLjAwIC0wLjAxXSBbMC4wMCAwLjAwIDAuMDAgMS4w
MF0pCiAgICAgICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgOTAwLjAwIDU4NS4wMCB4IDUw
MC4wMCkKICAgICAgICAgICAgICAgKGNvdmVyYWdlIHJlY3QgMC4wMCwgOTAwLjAwIDU4NS4wMCB4
IDUwMC4wMCkKICAgICAgICAgICAgICAgKGludGVyc2VjdHMgY292ZXJhZ2UgcmVjdCAxKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDFlYjIxYzAyZjNi
MzViN2ExYzE5N2Q1MzZiMzkyOTE1ZDZjNDdjMTEuLjYwN2Y0ZjU0MWNmNzgzN2Y4N2NjZDM4MzVl
OTAxMjM4ZTA4NmJlN2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTY1MCw5ICs2NTAsNiBAQCB3ZWJraXQub3JnL2IvMjMwMjc3IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3BlcnNwZWN0aQogd2Via2l0
Lm9yZy9iLzIzMDI3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9keW5hbWljLWZpeGVkLXBvcy1jYi1jaGFuZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIzMDI3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9wZXJzcGVjdGl2ZS10cmFuc2Zvcm1zLWVxdWl2YWxlbmNlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyAndHJhbnNmb3JtLWJveCcgc3VwcG9ydCBpcyBi
cm9rZW4gZm9yIGNvbXBvc2l0ZWQgZWxlbWVudHMuCi13ZWJraXQub3JnL2IvMjM3NTUzIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi90
cmFuc2Zvcm0tYm94LXdpbGwtY2hhbmdlLXRyYW5zZm9ybS1sYXllci5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMzc1MDIgZmFzdC9kb20vUmFuZ2UvZ2V0Q2xpZW50
UmVjdHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNzUwMiBmYXN0L211bHRpY29s
L25ld211bHRpY29sL2hpZGUtYm94LXZlcnRpY2FsLWxyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8yMzc1MDIgaW1wb3J0ZWQvYmxpbmsvZmFzdC9tdWx0aWNvbC92ZXJ0
aWNhbC1sci9mbG9hdC1iaWctbGluZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3RpbGluZy9jb3Zl
cmFnZS1hZGp1c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRq
dXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAppbmRleCBjNzAyODA2
ZDBhZWVmOGI2ZjM1ZjFlZjQ4YWQ0NzE4NGUyZjU3OTYzLi5hMDRmNGRmYmZkYjgzNjY0NzMwMWMx
MTQ4OTNlY2FmODQ1ZTA0Y2NhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNlY29uZGFyeS1xdWFk
LW1hcHBpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFw
cGluZy1leHBlY3RlZC50eHQKQEAgLTIzLDkgKzIzLDEwIEBACiAgICAgICAgICAgICAgICAgKEdy
YXBoaWNzTGF5ZXIKICAgICAgICAgICAgICAgICAgIChvZmZzZXRGcm9tUmVuZGVyZXIgd2lkdGg9
MSBoZWlnaHQ9MSkKICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDEuMDApCisgICAg
ICAgICAgICAgICAgICAoYW5jaG9yIDAuNTEgMC41MCkKICAgICAgICAgICAgICAgICAgIChib3Vu
ZHMgNTgzLjAwIDU3OC4wMCkKICAgICAgICAgICAgICAgICAgIChiYWNraW5nU3RvcmVBdHRhY2hl
ZCAxKQotICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4w
MCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAgMC4wMF0gWy0zMDcuNTAgLTI5MC4wMCAxLjAwIC0xLjAw
XSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFu
c2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbLTMwMC4w
MCAtMjkwLjAwIDEuMDAgLTEuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAg
ICAgICAgIChjaGlsZHJlbiAxCiAgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAg
ICAgICAgICAgICAgICAgICAgICAgKHBvc2l0aW9uIDAuMDAgLTQwMC4wMCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGZlMjJhNDBjNTAzYzZkZjEwN2Nk
Zjk2YjIyYjFlYjE3MTMzMDE1My4uNmIyYTcwOTU2MWYyNzE3ZjMzZmM3ZTcwYzNhZjAwNmQ5ZmI4
ZmY5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMw
MDEsOSArMzAwMSw2IEBAIGZhc3QvY2FudmFzL3NldC1jb2xvcnMuaHRtbCBbIEZhaWx1cmUgXQog
CiB3ZWJraXQub3JnL2IvMjAyOTU4IGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBl
ZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgJ3RyYW5zZm9ybS1ib3gnIHN1cHBvcnQg
aXMgYnJva2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRzLgotd2Via2l0Lm9yZy9iLzIzNzU1MyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRp
b24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjAzMzA1IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMzMDUgWyBEZWJ1ZyBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZh
bHVlLWluaGVyaXQtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwMzM1
NiBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
aXRpb25zL3Byb3BlcnRpZXMtdmFsdWUtMDAzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9jb21wb3NpdGluZy90aWxpbmcvcGVy
c3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2NvbXBvc2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1z
Y3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dAppbmRleCBjYjY4YzBkMWJlMWU2Njlj
NzBjZWMyNDQyYzcxMTcxNjYzNDAxNjM0Li40ZTg5YzU5YTFkMDQzMjEzOTc4OWYzMTM2NTY0Y2My
OTNhNjJkMzJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2NvbXBv
c2l0aW5nL3RpbGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2NvbXBvc2l0aW5nL3Rp
bGluZy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dApA
QCAtMjQsOCArMjQsOSBAQAogICAgICAgICAgIChjb250ZW50c1NjYWxlIDEuMDApCiAgICAgICAg
ICAgKGNoaWxkcmVuIDEKICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAg
IChhbmNob3IgMC41MSAwLjUwKQogICAgICAgICAgICAgICAoYm91bmRzIDU4NS4wMCA1MDAuMDAp
Ci0gICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0g
WzAuMDAgMS4wMCAwLjAwIDAuMDBdIFsyLjkzIDIuNTAgMS4wMCAtMC4wMV0gWzAuMDAgMC4wMCAw
LjAwIDEuMDBdKQorICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAw
LjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbMy4wMCAyLjUwIDEuMDAgLTAuMDFdIFsw
LjAwIDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCAw
LjAwIDU4NS4wMCB4IDUwMC4wMCkKICAgICAgICAgICAgICAgKGNvdmVyYWdlIHJlY3QgMC4wMCwg
MC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAgICAgIChpbnRlcnNlY3RzIGNvdmVyYWdl
IHJlY3QgMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZWY0ODM3ZjBhOThkZmFlM2I2MDBiZGZjYzQ4OWM2MTRlNWFiNzI4YS4uNDZjZjkzNzUzYjEzODdh
MWNlNzM4ODIzNzdjYTNmMGNmNWQ2NzJiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTIxOTYsOSArMjE5Niw2IEBAIHdlYmtpdC5vcmcvYi8yMjgxNzYg
WyBCaWdTdXIgTW9udGVyZXkgXSBmYXN0L3RleHQvdmFyaWFibGUtc3lzdGVtLWZvbnQtMi5odG1s
IFsKIAogd2Via2l0Lm9yZy9iLzIzMDMyNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy9jcmFzaHRlc3RzL3RyYW5zZm9ybS1tYXJxdWVlLXJlc2l6ZS1k
aXYtaW1hZ2UtMDAxLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi0jICd0cmFuc2Zvcm0tYm94JyBz
dXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5vcmcvYi8y
Mzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
YW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyByZGFyOi8vODM1OTEwNDAKIFsgTW9udGVyZXkrIF0g
ZWRpdGluZy9tYWMvZGljdGlvbmFyeS1sb29rdXAvZGljdGlvbmFyeS1sb29rdXAtaW5wdXQuaHRt
bCBbIENyYXNoIF0KIFsgTW9udGVyZXkrIF0gZWRpdGluZy9tYWMvZGljdGlvbmFyeS1sb29rdXAv
ZGljdGlvbmFyeS1sb29rdXAtaW5zaWRlLXNlbGVjdGlvbi5odG1sIFsgQ3Jhc2ggXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiOWM3NDk1OTUyZWUxZThl
YzJkMjZkZTQwOTFmOGNlZTAxYzU1MjgzLi4zMTAwNzYwMjllZTgzNWQwOWMyYjRiYzAxMzc1Zjky
OWZlN2I2NjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpA
QCAtOTM5LDkgKzkzOSw2IEBAIHdlYmtpdC5vcmcvYi8xNDkyNDUgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRpY29sL211bHRpY29sLXNoCiB3ZWJraXQub3JnL2Iv
MTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1zcGFuLWFsbC1ibG9jay1zaWJsaW5nLTAwMy54aHQgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xNDkyNDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW11bHRp
Y29sL211bHRpY29sLXNwYW4tYWxsLW1hcmdpbi1uZXN0ZWQtZmlyc3RjaGlsZC0wMDEueGh0IFsg
U2tpcCBdCiAKLSMgJ3RyYW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBjb21wb3Np
dGVkIGVsZW1lbnRzLgotd2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxs
LWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIFRP
RE8gRVhJRi1yZXNvbHV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZGVuc2l0eS1zaXplLWNvcnJlY3Rpb24vIFsgU2tpcCBdCiAK
</data>
<flag name="commit-queue"
          id="485753"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457215</attachid>
            <date>2022-04-10 16:04:53 -0700</date>
            <delta_ts>2022-04-11 05:58:20 -0700</delta_ts>
            <desc>Patch, v6</desc>
            <filename>bug-211787-20220410160452.patch</filename>
            <type>text/plain</type>
            <size>36268</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM1ZmVmNmRhNmYzNjRm
ZmM0OGFiNDM2MjQzZDU4MWJmYWM4Nzk4My4uNGNhZDJkMDk5NDZhMjFiNzQ5NjJkNGY2OTg2MTE5
YjJlYTI3YzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTA0LTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9y
aWdpbkZvclBhaW50aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVBlcnNwZWN0aXZl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlVHJhbnNmb3Jt
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5z
Zm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dW5hcHBs
eVRyYW5zZm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0gY29uc3QpOgorCiAyMDIyLTA0LTEwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1
cHBvcnQgdGhyb3VnaCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCmluZGV4IGY2ZDU5YTVlMWQ3NDJkNGM1MjQ4YTk3ZjBkNGVhYWZiNGVlMjM4Yjku
LjI4MzQ2YzNhNmJhMGFjYWFjMDkxZTk3ZDliYWQzMGQyZGYxM2RiY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtMTk5Nyw3ICsxOTk3LDcgQEAg
Ym9vbCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZVRyYW5zZm9ybWVkRXh0ZW50VmlhVHJhbnNmb3Jt
TGlzdChjb25zdCBGbG9hdFJlY3QmIHIKIAogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4g
PSBjb250YWluc1JvdGF0aW9uKHN0eWxlLnRyYW5zZm9ybSgpLm9wZXJhdGlvbnMoKSkgfHwgc3R5
bGUudHJhbnNmb3JtKCkuYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpOwogICAgIGlmIChhcHBs
eVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSByZW5kZXJlckJv
eC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRyYW5zZm9ybU9y
aWdpblhZKCksIHJlbmRlcmVyQm94LnNpemUoKSk7CisgICAgICAgIHRyYW5zZm9ybU9yaWdpbiA9
IHN0eWxlLmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4ocmVuZGVyZXJCb3gpLnh5KCk7CiAgICAgICAg
IC8vIElnbm9yZSB0cmFuc2Zvcm1PcmlnaW5aIGJlY2F1c2Ugd2UnbGwgYmFpbCBpZiB3ZSBlbmNv
dW50ZXIgYW55IDNEIHRyYW5zZm9ybXMuCiAgICAgICAgIGZsb2F0Qm91bmRzLm1vdmVCeSgtdHJh
bnNmb3JtT3JpZ2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCBkMGUyOTdjNDJhNWJkZWQ2ZjNiNjcxODZjNTNiMTdhYmY3M2ZmZjI4Li5lMGM0
YjVmYzVjNWZlOTA4MjgwOTBhZjY4MDE3MmM4ODAyMThhNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE3ODQsNDMgKzE3ODQsNjIgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbihPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlv
bnNGbGFnPiogZmxhZ3MKICAgICByZXR1cm4gcG9zaXRpb25Pck9mZnNldENoYW5nZWQ7CiB9CiAK
LVRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybShj
b25zdCBMYXlvdXRSZWN0JiBsYXllclJlY3QpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBS
ZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSBjb25zdAogewotICAgIC8vIEZJWE1F
OiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2Jq
ZWN0IGRlcml2ZWQgcmVuZGVyZXJzCi0gICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkp
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8
UmVuZGVyQm94PihyZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlckJveC5oYXNUcmFuc2Zvcm1S
ZWxhdGVkUHJvcGVydHkoKSkKKyAgICBpZiAoIXJlbmRlcmVyKCkuaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBjb25zdCBhdXRvJiBzdHls
ZSA9IHJlbmRlckJveC5zdHlsZSgpOworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gcmVuZGVyZXIo
KS5zdHlsZSgpOwogICAgIGlmICghc3R5bGUuaGFzUGVyc3BlY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gcmVmZXJlbmNlQm94UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNJZk5lZWRlZChyZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qoc3R5bGUp
LCByZW5kZXJlcigpKTsKLSAgICBhdXRvIHNuYXBwZWRMYXllclJlY3QgPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzSWZOZWVkZWQobGF5ZXJSZWN0LCByZW5kZXJlcigpKTsKKyAgICBhdXRvIHRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSWZOZWVkZWQocmVu
ZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKSwgcmVuZGVyZXIoKSk7Cisg
ICAgYXV0byBwZXJzcGVjdGl2ZU9yaWdpbiA9IHN0eWxlLmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdp
bih0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KTsKIAotICAgIGF1dG8gcGVyc3BlY3RpdmVPcmln
aW4gPSByZWZlcmVuY2VCb3hSZWN0LmxvY2F0aW9uKCkgLSB0b0Zsb2F0U2l6ZShzbmFwcGVkTGF5
ZXJSZWN0LmxvY2F0aW9uKCkpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnBlcnNw
ZWN0aXZlT3JpZ2luKCksIHJlZmVyZW5jZUJveFJlY3Quc2l6ZSgpKTsKKyAgICAvLyBJbiB0aGUg
cmVndWxhciBjYXNlIG9mIGEgbm9uLWNsaXBwZWQsIG5vbi1zY3JvbGxlZCBHcmFwaGljc0xheWVy
LCBhbGwgdHJhbnNmb3JtYXRpb25zCisgICAgLy8gKHZpYSBDU1MgJ3RyYW5zZm9ybScgLyAncGVy
c3BlY3RpdmUnKSBhcmUgYXBwbGllZCB3aXRoIHJlc3BlY3QgdG8gYSBwcmVkZWZpbmVkIGFuY2hv
ciBwb2ludCwKKyAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gQ1NTICd0cmFuc2Zv
cm0tYm94JyAvICd0cmFuc2Zvcm0tb3JpZ2luJyBwcm9wZXJ0aWVzLgorICAgIC8vCisgICAgLy8g
QSB0cmFuc2Zvcm1hdGlvbiBnaXZlbiBieSB0aGUgQ1NTICd0cmFuc2Zvcm0nIHByb3BlcnR5IGlz
IGFwcGxpZWQsIGJ5IHRyYW5zbGF0aW5nCisgICAgLy8gdG8gdGhlICd0cmFuc2Zvcm0gb3JpZ2lu
JywgYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uLCBhbmQgdHJhbnNsYXRpbmcgYmFjay4KKyAg
ICAvLyBXaGVuIGFuIGVsZW1lbnQgc3BlY2lmaWVzIGEgQ1NTICdwZXJzcGVjdGl2ZScgcHJvcGVy
dHksIHRoZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgKKyAgICAvLyB0aGF0J3Mg
Y29tcHV0ZWQgaGVyZSBpcyBwcm9wYWdhdGVkIHRvIHRoZSBHcmFwaGljc0xheWVyIGJ5IGNhbGxp
bmcgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oKS4KKyAgICAvLworICAgIC8vIEhvd2V2ZXIgdGhlIEdy
YXBoaWNzTGF5ZXIgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIChlLmcuIENBIG9uIG1hY09TKSBh
cHBseSB0aGUgY2hpbGRyZW4gdHJhbnNmb3JtLAorICAgIC8vIGRlZmluZWQgb24gdGhlIHBhcmVu
dCwgd2l0aCByZXNwZWN0IHRvIHRoZSBhbmNob3IgcG9pbnQgb2YgdGhlIHBhcmVudCwgd2hlbiBy
ZW5kZXJpbmcgY2hpbGQgZWxlbWVudHMuCisgICAgLy8gVGhpcyBpcyB3cm9uZywgYXMgdGhlIHBl
cnNwZWN0aXZlIHRyYW5zZm9ybWF0aW9uIChhcHBsaWVkIHRvIGEgY2hpbGQgb2YgdGhlIGVsZW1l
bnQgZGVmaW5pbmcgdGhlCisgICAgLy8gM2QgZWZmZWN0KSwgbXVzdCBiZSBpbmRlcGVuZGFudCBv
ZiB0aGUgY2hvc2VuIHRyYW5zZm9ybS1vcmlnaW4gKHRoZSBwYXJlbnRzIHRyYW5zZm9ybSBvcmln
aW4KKyAgICAvLyBtdXN0IG5vdCBhZmZlY3QgaXRzIGNoaWxkcmVuKS4KKyAgICAvLworICAgIC8v
IFRvIGNpcmN1bXZlbnQgdGhpcywgZXhwbGljaXRlbHkgcmVtb3ZlIHRoZSB0cmFuc2Zvcm0tb3Jp
Z2luIGRlcGVuZGVuY3kgaW4gdGhlIHBlcnNwZWN0aXZlIG1hdHJpeC4KKyAgICBhdXRvIHRyYW5z
Zm9ybU9yaWdpbiA9IHRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgc3R5bGUudW5hcHBseVRyYW5zZm9ybU9yaWdp
bih0cmFuc2Zvcm0sIHRyYW5zZm9ybU9yaWdpbik7CisgICAgc3R5bGUuYXBwbHlQZXJzcGVjdGl2
ZSh0cmFuc2Zvcm0sIHJlbmRlcmVyKCksIHBlcnNwZWN0aXZlT3JpZ2luKTsKKyAgICBzdHlsZS5h
cHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIHRyYW5zZm9ybU9yaWdpbik7CisgICAgcmV0
dXJuIHRyYW5zZm9ybTsKK30KIAotICAgIC8vIEEgcGVyc3BlY3RpdmUgb3JpZ2luIG9mIDAsMCBt
YWtlcyB0aGUgdmFuaXNoaW5nIHBvaW50IGluIHRoZSBjZW50ZXIgb2YgdGhlIGVsZW1lbnQuCi0g
ICAgLy8gV2Ugd2FudCBpdCB0byBiZSBpbiB0aGUgdG9wLWxlZnQsIHNvIHN1YnRyYWN0IGhhbGYg
dGhlIGhlaWdodCBhbmQgd2lkdGguCi0gICAgcGVyc3BlY3RpdmVPcmlnaW4gLT0gc25hcHBlZExh
eWVyUmVjdC5zaXplKCkgLyAyLjBmOworRmxvYXRQb2ludDNEIFJlbmRlckxheWVyOjp0cmFuc2Zv
cm1PcmlnaW5Gb3JQYWludGluZygpIGNvbnN0Cit7CisgICAgaWYgKCFyZW5kZXJlcigpLmhhc1Ry
YW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKQorICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICB0LnRyYW5zbGF0ZShwZXJzcGVjdGl2ZU9yaWdpbi54
KCksIHBlcnNwZWN0aXZlT3JpZ2luLnkoKSk7Ci0gICAgdC5hcHBseVBlcnNwZWN0aXZlKHN0eWxl
LnVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcigpKSk7Ci0gICAgdC50cmFuc2xhdGUoLXBlcnNwZWN0
aXZlT3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSk7CisgICAgY29uc3QgYXV0byYg
c3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgYXV0byByZWZlcmVuY2VCb3hSZWN0ID0g
cmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKTsKIAotICAgIHJldHVy
biB0OworICAgIGF1dG8gb3JpZ2luID0gc3R5bGUuY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihyZWZl
cmVuY2VCb3hSZWN0KTsKKyAgICBpZiAocmVuZGVyZXJOZWVkc1BpeGVsU25hcHBpbmcocmVuZGVy
ZXIoKSkpCisgICAgICAgIG9yaWdpbi5zZXRYWShyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5
b3V0UG9pbnQob3JpZ2luLnh5KCkpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSkpOworICAgIHJldHVybiBvcmlnaW47CiB9CiAKIEZsb2F0UG9pbnQgUmVuZGVyTGF5
ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8g
RklYTUU6IFRoaXMgdXNlcyB0aGUgd3JvbmcsIHRyYW5zZm9ybS1ib3ggdW5hd2FyZSwgZ2VvbWV0
cnkuCi0gICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChyZW5kZXJlcigpLnN0eWxl
KCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpKTsK
KyAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5w
ZXJzcGVjdGl2ZU9yaWdpbigpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qo
cmVuZGVyZXIoKS5zdHlsZSgpKS5zaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b250YWluZXJGb3JQb3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBlIHBv
c2l0aW9uLCBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCmluZGV4IDdkM2NiMTU3ZDBmYmYyMDJlYTdkOGE2NDkyM2Y4MDRkZjMwOTFj
NzIuLjc2NmRmMzdjNDUzOGEzZjFiOWIyODllNWYyYzI1NjAzZGQzYWQyMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MzksMTAgKzczOSwxMSBAQCBwdWJsaWM6
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyYWJsZVRyYW5zZm9ybShPcHRpb25TZXQ8
UGFpbnRCZWhhdmlvcj4pIGNvbnN0OwogICAgIAogICAgIC8vIEdldCB0aGUgcGVyc3BlY3RpdmUg
dHJhbnNmb3JtLCB3aGljaCBpcyBhcHBsaWVkIHRvIHRyYW5zZm9ybWVkIHN1YmxheWVycy4KLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyIGhhcyBhIC13ZWJraXQtcGVyc3BlY3RpdmUu
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSBwZXJzcGVjdGl2ZS4KICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyB0cmFuc2Zvcm0gaGFzIHRoZSBwZXJzcGVjdGl2ZS1vcmlnaW4g
YmFrZWQgaW4uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVUcmFuc2Zvcm0o
Y29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgcGVyc3Bl
Y3RpdmVPcmlnaW4oKSBjb25zdDsKKyAgICBGbG9hdFBvaW50M0QgdHJhbnNmb3JtT3JpZ2luRm9y
UGFpbnRpbmcoKSBjb25zdDsKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlczNEKCk7IH0KICAgICBib29sIGhhczNEVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJhbnNmb3JtLT5pc0FmZmlu
ZSgpOyB9CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNUcmFuc2Zvcm1lZEFuY2VzdG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFh
YzNkZjdjZjQ5YmI5MjIuLjBlY2E5ZjkyYTQ3N2IzZTAwZTg0NWJjODZhOTM5YjBkZDM4Y2I4MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC02MzcsMTYgKzYzNywxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3Bh
Y2l0eShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRP
cGFjaXR5KGNvbXBvc2l0aW5nT3BhY2l0eShzdHlsZS5vcGFjaXR5KCkpKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCit2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgbV9vd25pbmdMYXllci50
cmFuc2Zvcm0oKSwgYnV0IHRoYXQgY3VycmVudGx5IGhhcyB0cmFuc2Zvcm0tb3JpZ2luCi0gICAg
Ly8gYmFrZWQgaW50byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhhdC4KICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0OwotICAgIGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIHdyb25nLCB0cmFuc2Zvcm0tYm94IHVuYXdh
cmUsIGdlb21ldHJ5LgotICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKHQsIHJlbmRl
cmVyKCkuc3R5bGUoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhtX293bmluZ0xheWVyLnJlbmRl
cmVyQm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5bGU6Omlu
ZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKLSAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFi
bGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKLSAgICB9CisgICAg
aWYgKG1fb3duaW5nTGF5ZXIuaGFzVHJhbnNmb3JtKCkpCisgICAgICAgIG1fb3duaW5nTGF5ZXIu
dXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHQsIHN0eWxlLCBSZW5kZXJTdHlsZTo6aW5kaXZpZHVh
bFRyYW5zZm9ybU9wZXJhdGlvbnMpOwogICAgIAogICAgIGlmIChtX2NvbnRlbnRzQ29udGFpbm1l
bnRMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+c2V0VHJhbnNm
b3JtKHQpOwpAQCAtNjU3LDIwICs2NTIsMjUgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KGNvbnN0IExheW91dFJl
Y3QmIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdCwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUGFyZW50
R3JhcGhpY3NMYXllcikKIHsKKyAgICBhdXRvIGRlZmF1bHRBbmNob3JQb2ludCA9IEZsb2F0UG9p
bnQzRCB7IDAuNSwgMC41LCAwIH07CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdEFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEIHsgMC41LCAwLjUsIDAgfTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRB
bmNob3JQb2ludChkZWZhdWx0QW5jaG9yUG9pbnQpOwogICAgICAgICBpZiAobV9jb250ZW50c0Nv
bnRhaW5tZW50TGF5ZXIpCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKIAorICAgICAgICBpZiAobV9jaGls
ZENvbnRhaW5tZW50TGF5ZXIpCisgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKKworICAgICAgICBpZiAobV9zY3Jv
bGxDb250YWluZXJMYXllcikKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNl
dEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKICAgICAgICAgaWYgKG1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyKQogICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNl
dFByZXNlcnZlczNEKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0
IGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSB0aGlzLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAg
IGF1dG8gYm9yZGVyQm94UmVjdCA9IG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0
KCk7Ci0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9y
UGFpbnRpbmcoYm9yZGVyQm94UmVjdCk7CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBtX293
bmluZ0xheWVyLnRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CiAgICAgYXV0byBsYXllck9m
ZnNldCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBvaW50KG9mZnNldEZyb21Q
YXJlbnRHcmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gYW5jaG9y
ID0gRmxvYXRQb2ludDNEIHsKICAgICAgICAgcHJpbWFyeUdyYXBoaWNzTGF5ZXJSZWN0LndpZHRo
KCkgPyAoKGxheWVyT2Zmc2V0LngoKSAtIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC54KCkpICsg
dHJhbnNmb3JtT3JpZ2luLngoKSkgLyBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3Qud2lkdGgoKSA6
IDAuNWYsCkBAIC02ODUsMTEgKzY4NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogCiAg
ICAgYXV0byByZW1vdmVDaGlsZHJlblRyYW5zZm9ybUZyb21MYXllcnMgPSBbJl0oR3JhcGhpY3NM
YXllciogbGF5ZXJUb0lnbm9yZSA9IG51bGxwdHIpIHsKICAgICAgICAgYXV0byogY2xpcHBpbmdM
YXllciA9IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKLSAgICAgICAgaWYgKGNsaXBwaW5nTGF5ZXIg
JiYgY2xpcHBpbmdMYXllciAhPSBsYXllclRvSWdub3JlKQorICAgICAgICBpZiAoY2xpcHBpbmdM
YXllciAmJiBjbGlwcGluZ0xheWVyICE9IGxheWVyVG9JZ25vcmUpIHsKICAgICAgICAgICAgIGNs
aXBwaW5nTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHsgfSk7Ci0gICAgICAgIAorICAgICAg
ICAgICAgY2xpcHBpbmdMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5lckxheWVyICYmIG1fc2Ny
b2xsQ29udGFpbmVyTGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkgewogICAgICAgICAgICAgbV9zY3Jv
bGxDb250YWluZXJMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oeyB9KTsKKyAgICAgICAgICAg
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2lu
dCk7CiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2VydmVzM0Qo
ZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTcwMiw3ICs3MDUsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlv
dXRSZWN0JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBsYXllckZvckNoaWxk
cmVuVHJhbnNmb3JtID0gWyZdIHsKKyAgICBhdXRvIGxheWVyRm9yQ2hpbGRyZW5UcmFuc2Zvcm0g
PSBbJl0oKSAtPiBzdGQ6OnR1cGxlPEdyYXBoaWNzTGF5ZXIqLCBGbG9hdFJlY3Q+IHsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpIHsKICAgICAgICAgICAgIEFTU0VSVChpczxS
ZW5kZXJCb3g+KHJlbmRlcmVyKCkpKTsgLy8gU2Nyb2xsIGNvbnRhaW5lciBsYXllcnMgYXJlIG9u
bHkgY3JlYXRlZCBmb3IgUmVuZGVyQm94IGRlcml2ZWQgcmVuZGVyZXJzLgogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpLCBzY3Jv
bGxDb250YWluZXJMYXllckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKSk7CkBA
IC03MTAsMTkgKzcxMywyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRy
ZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICBpZiAo
YXV0byogbGF5ZXIgPSBjbGlwcGluZ0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKGxheWVyLCBjbGlwcGluZ0xheWVyQm94KHJlbmRlcmVyKCkpKTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgYm9yZGVyQm94
UmVjdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9ncmFwaGljc0xheWVyLmdl
dCgpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSk7CiAgICAgfTsKIAot
ICAgIGF1dG8gW2xheWVyRm9yUGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlUmVsYXRpdmVCb3hdID0g
bGF5ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIC8vIEZJWE1FOiBwZXJzcGVjdGl2ZVJl
bGF0aXZlQm94IGlzbid0IHF1aXRlIHJpZ2h0IGhlcmUuIFRoaXMgbmVlZHMgd29yazogd2Via2l0
Lm9yZy9iLzIxMTc4Ny4KLSAgICBhdXRvIHBlcnNwZWN0aXZlVHJhbnNmb3JtID0gb3duaW5nTGF5
ZXIoKS5wZXJzcGVjdGl2ZVRyYW5zZm9ybShwZXJzcGVjdGl2ZVJlbGF0aXZlQm94KTsKLSAgICAK
LSAgICAvLyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBsYXllcnMsIHdlIG5lZWQgdGhlIGNoaWxkcmVu
IHRyYW5zZm9ybSBvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyIHRvCi0gICAgLy8gYWZmZWN0IGNo
aWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0Qo
dHJ1ZSkuCi0gICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgPT0gbV9zY3JvbGxDb250YWluZXJM
YXllcikKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNlcnZlczNEKHRy
dWUpOwotICAgIAotICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxkcmVuVHJhbnNmb3Jt
KHBlcnNwZWN0aXZlVHJhbnNmb3JtKTsKKyAgICBhdXRvIFtsYXllckZvclBlcnNwZWN0aXZlLCBs
YXllckZvclBlcnNwZWN0aXZlUmVjdF0gPSBsYXllckZvckNoaWxkcmVuVHJhbnNmb3JtKCk7Cisg
ICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgIT0gbV9ncmFwaGljc0xheWVyKSB7CisgICAgICAg
IC8vIElmIHdlIGhhdmUgc2Nyb2xsaW5nIGxheWVycywgd2UgbmVlZCB0aGUgY2hpbGRyZW4gdHJh
bnNmb3JtIG9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgdG8KKyAgICAgICAgLy8gYWZmZWN0IGNo
aWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0Qo
dHJ1ZSkuCisgICAgICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlID09IG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2Vy
dmVzM0QodHJ1ZSk7CisKKyAgICAgICAgYXV0byBwZXJzcGVjdGl2ZUFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEIHsKKyAgICAgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LndpZHRoKCkg
PyAodHJhbnNmb3JtT3JpZ2luLngoKSAtIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LngoKSkgLyBs
YXllckZvclBlcnNwZWN0aXZlUmVjdC53aWR0aCgpIDogMC41ZiwKKyAgICAgICAgICAgIGxheWVy
Rm9yUGVyc3BlY3RpdmVSZWN0LmhlaWdodCgpID8gKHRyYW5zZm9ybU9yaWdpbi55KCkgLSBsYXll
ckZvclBlcnNwZWN0aXZlUmVjdC55KCkpIC8gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3QuaGVpZ2h0
KCkgOiAwLjVmLAorICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luLnooKQorICAgICAgICB9Owor
CisgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldEFuY2hvclBvaW50KHBlcnNwZWN0aXZl
QW5jaG9yUG9pbnQpOworICAgIH0KKworICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxk
cmVuVHJhbnNmb3JtKG1fb3duaW5nTGF5ZXIucGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSk7CiAgICAg
cmVtb3ZlQ2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzKGxheWVyRm9yUGVyc3BlY3RpdmUpOwog
fQogCkBAIC0yOTcwLDE3ICsyOTgwLDYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUltYWdlQ29udGVudHMoUGFpbnRlZENvbnRlbnRzSW5mbyYgY29udGVudHNJbmZvKQogICAgIGlt
YWdlLT5zdGFydEFuaW1hdGlvbigpOwogfQogCi1GbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYg
Ym9yZGVyQm94KSBjb25zdAotewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0gICAgb3JpZ2luLnNl
dFhZKHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhwb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRy
YW5zZm9ybU9yaWdpblhZKCksIGJvcmRlckJveC5zaXplKCkpLCBkZXZpY2VTY2FsZUZhY3Rvcigp
KSk7Ci0gICAgb3JpZ2luLnNldFooc3R5bGUudHJhbnNmb3JtT3JpZ2luWigpKTsKLQotICAgIHJl
dHVybiBvcmlnaW47Ci19Ci0KIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcC1sZWZ0
IG9mIHRoaXMgY29tcG9zaXRpbmcgbGF5ZXIgYXQgd2hpY2ggdGhlIHJlbmRlcmVyJ3MgY29udGVu
dHMgYXJlIHBhaW50ZWQuCiBMYXlvdXRTaXplIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudE9m
ZnNldEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggODU4N2Q2MTQwZWExZDE1MzBkN2VkM2Zk
NTZiMjdkOWFlODY1MmM2MS4uYWJlNDQ5ZWU2YmYxZGFiMDMwNmQzODViZWZmYjczZjUyMTNlMGRm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMzMxLDkgKzMzMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kTGF5ZXJQ
YWludHNGaXhlZFJvb3RCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50
T2Zmc2V0SW5Db21wb3NpdGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgLy8gUmVzdWx0IGlzIHRyYW5z
Zm9ybSBvcmlnaW4gaW4gZGV2aWNlIHBpeGVscy4KLSAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRy
YW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29u
c3Q7Ci0KICAgICBMYXlvdXRTaXplIG9mZnNldFJlbGF0aXZlVG9SZW5kZXJlck9yaWdpbkZvckRl
c2NlbmRhbnRMYXllcnMoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGVuc3VyZUNsaXBwaW5nU3Rh
Y2tMYXllcnMoTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2smKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMjM1M2MxNzcw
NjkyZjNkNzEzNWMyODkxYWU2ODNmYTM0MzM4N2MzNi4uMzg3ODc5OTBiMWFkNWI1NjVjYjgwOTQ0
NTQwOTc1YmE4NWM5NTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2MzcsNiArMTYzNyw3IEBAIHN0YXRpYyBib29s
IHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZShjb25zdCBSZW5kZXJTdHls
ZSYgb2xkU3R5bGUsCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zbGF0ZSgpICE9IG5ld1N0eWxl
LnRyYW5zbGF0ZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnNjYWxlKCkgIT0gbmV3U3R5bGUuc2Nh
bGUoKQogICAgICAgICB8fCBvbGRTdHlsZS5yb3RhdGUoKSAhPSBuZXdTdHlsZS5yb3RhdGUoKQor
ICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1Cb3goKSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1C
b3goKQogICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkgIT0gbmV3U3R5bGUu
dHJhbnNmb3JtT3JpZ2luWCgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zZm9ybU9yaWdpblko
KSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUudHJh
bnNmb3JtT3JpZ2luWigpICE9IG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdpblooKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4
IDAxYjk4YWY0ODFlZWZmMjdiNDYwYWE0NmJhZGFjMGVhZGY3ZDEyZTAuLmVkMzk5NzY5NTJjYTc4
ZGE1ZDQyZTMzNGZlYzY2MDY5ODUwYjEyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTM0Niw3ICszNDYsOSBAQCB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sCiAKICAgICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRl
OwogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikgJiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikK
LSAgICAgICAgb3JpZ2luVHJhbnNsYXRlID0gc3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJh
bnNmb3JtLCBib3VuZGluZ0JveCk7CisgICAgICAgIG9yaWdpblRyYW5zbGF0ZSA9IHN0eWxlLmNv
bXB1dGVUcmFuc2Zvcm1PcmlnaW4oYm91bmRpbmdCb3gpOworCisgICAgc3R5bGUuYXBwbHlUcmFu
c2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOwogCiAgICAgLy8gQ1NTIHRy
YW5zZm9ybXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgU1ZHIHRyYW5zZm9ybXMuCiAgICAgaWYgKGhh
c0NTU1RyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCmluZGV4IGNkM2E1NDBkZjU1NmExM2Q0MzJmOGNkNjAwN2Q1NjczZWQ5ZDY2MjUu
LmJkNzE0M2I4MDgxNzM2NzZiNzFmMmFmMjM5OTViMDRhNDgzZjU3ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ1MCwyMiArMTQ1
MCw0MyBAQCBib29sIFJlbmRlclN0eWxlOjphZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUZsb2F0UG9pbnQzRCBSZW5kZXJTdHlsZTo6YXBw
bHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyU3R5bGU6OmNv
bXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25z
dAoreworICAgIHJldHVybiBib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHBlcnNwZWN0aXZlT3JpZ2luKCksIGJvdW5kaW5nQm94LnNpemUoKSk7Cit9CisK
K3ZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5UGVyc3BlY3RpdmUoVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgRmxvYXRQb2lu
dCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9jc3MtdHJhbnNmb3Jtcy0yLyNwZXJzcGVjdGl2ZQorICAgIC8vIFRoZSBwZXJzcGVjdGl2ZSBt
YXRyaXggaXMgY29tcHV0ZWQgYXMgZm9sbG93czoKKyAgICAvLyAxLiBTdGFydCB3aXRoIHRoZSBp
ZGVudGl0eSBtYXRyaXguCisKKyAgICAvLyAyLiBUcmFuc2xhdGUgYnkgdGhlIGNvbXB1dGVkIFgg
YW5kIFkgdmFsdWVzIG9mIHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUob3JpZ2luVHJhbnNsYXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSk7CisKKyAgICAvLyAz
LiBNdWx0aXBseSBieSB0aGUgbWF0cml4IHRoYXQgd291bGQgYmUgb2J0YWluZWQgZnJvbSB0aGUg
cGVyc3BlY3RpdmUoKSB0cmFuc2Zvcm0gZnVuY3Rpb24sIHdoZXJlIHRoZSBsZW5ndGggaXMgcHJv
dmlkZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eQorICAgIHRyYW5z
Zm9ybS5hcHBseVBlcnNwZWN0aXZlKHVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcikpOworCisgICAg
Ly8gNC4gVHJhbnNsYXRlIGJ5IHRoZSBuZWdhdGVkIGNvbXB1dGVkIFggYW5kIFkgdmFsdWVzIG9m
IHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLW9yaWdpblRyYW5z
bGF0ZS54KCksIC1vcmlnaW5UcmFuc2xhdGUueSgpKTsKK30KKworRmxvYXRQb2ludDNEIFJlbmRl
clN0eWxlOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1z
LTIvI2N0bQotICAgIC8vIDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFog
dmFsdWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5z
bGF0ZTsKICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0WFkoYm91bmRpbmdCb3gubG9jYXRpb24oKSAr
IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0Jv
eC5zaXplKCkpKTsKICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0Wih0cmFuc2Zvcm1PcmlnaW5aKCkp
OworICAgIHJldHVybiBvcmlnaW5UcmFuc2xhdGU7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFw
cGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdAorewogICAgIGlmICghb3JpZ2lu
VHJhbnNsYXRlLmlzWmVybygpKQogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qob3JpZ2lu
VHJhbnNsYXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSwgb3JpZ2luVHJhbnNsYXRlLnooKSk7
Ci0gICAgcmV0dXJuIG9yaWdpblRyYW5zbGF0ZTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6dW5h
cHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50M0QmIG9yaWdpblRyYW5zbGF0ZSkgY29uc3QKIHsKLSAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gOC4gVHJhbnNsYXRl
IGJ5IHRoZSBuZWdhdGVkIGNvbXB1dGVkIFgsIFkgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1v
cmlnaW4uCiAgICAgaWYgKCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55
KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0KQEAgLTE0NzcsNyArMTQ5OCw4IEBAIHZvaWQg
UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIG9y
aWdpblRyYW5zbGF0ZSA9IGFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgYm91bmRpbmdC
b3gpOworICAgIGF1dG8gb3JpZ2luVHJhbnNsYXRlID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihi
b3VuZGluZ0JveCk7CisgICAgYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5U
cmFuc2xhdGUpOwogICAgIGFwcGx5Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gs
IG9wdGlvbnMpOwogICAgIHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5U
cmFuc2xhdGUpOwogfQpAQCAtMTU3MSw3ICsxNTkzLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBw
bHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnMKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS54KCks
IHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS55KCkpOwogCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0
byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgotICAgIGF1dG8gdHJhbnNm
b3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCks
IGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOworICAgIGF1dG8g
dHJhbnNmb3JtT3JpZ2luID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihib3VuZGluZ0JveCkueHko
KTsKICAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKICAgICBpZiAoIW9mZnNldEFu
Y2hvcigpLngoKS5pc0F1dG8oKSkKICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0
aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gu
bG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggZGIxMmUzMDM2ZjM2NDFhMzFmNzBiYzAxNzExYjkyOTZlNDEzMTA3Mi4uZDNlNjU1
YmMyZjdiM2E3YzBiZDZjMmU2NDRiZTc4OGVjODNjZGNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTcwNyw4ICs3MDcsMTQgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNm
b3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZz
ZXQgfTsKIAogICAgIGJvb2wgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0OwotICAg
IEZsb2F0UG9pbnQzRCBhcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OworCisgICAgRmxvYXRQb2ludCBj
b21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29u
c3Q7CisgICAgdm9pZCBhcHBseVBlcnNwZWN0aXZlKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luVHJhbnNsYXRlKSBjb25z
dDsKKworICAgIEZsb2F0UG9pbnQzRCBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1PcmlnaW4o
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWdpblRyYW5zbGF0
ZSkgY29uc3Q7CiAgICAgdm9pZCB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0OworCiAg
ICAgLy8gYXBwbHlUcmFuc2Zvcm0gY2FsbHMgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKSwgdGhlbiBh
cHBseUNTU1RyYW5zZm9ybSgpLCBmb2xsb3dlZCBieSB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKCku
CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+
ID0gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CiAgICAgdm9pZCBhcHBseUNTU1RyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0
aW9ucykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmlu
ZGV4IGUwNzBjN2E3MzA2MjZhZDVjMjA3ZGVjNzIxODAzMzNlMzUxZWM4MzguLmFjYWQ0Zjg1NGIy
ZjZlNTgxMmI1OWYzNGYwYjRkMDdjYzE1MzQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xMDcsOCArMTA3LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNW
R0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiAKICAgICAv
LyBJZiB3ZSBkaWRuJ3QgaGF2ZSB0aGUgQ1NTICJ0cmFuc2Zvcm0iIHByb3BlcnR5IHNldCwgd2Ug
bXVzdCBhY2NvdW50IGZvciB0aGUgInRyYW5zZm9ybSIgYXR0cmlidXRlLgogICAgIGlmICghaGFz
U3BlY2lmaWVkVHJhbnNmb3JtICYmIHN0eWxlKSB7Ci0gICAgICAgIGF1dG8gYm91bmRpbmdCb3gg
PSByZW5kZXJlcigpLT50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCk7Ci0gICAgICAgIGF1dG8g
dCA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWFkoKSwg
Ym91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CisgICAgICAgIGF1
dG8gdCA9IHN0eWxlLT5jb21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVyKCktPnRyYW5zZm9y
bVJlZmVyZW5jZUJveFJlY3QoKSkueHkoKTsKICAgICAgICAgbWF0cml4LnRyYW5zbGF0ZSh0KTsK
ICAgICAgICAgbWF0cml4ICo9IHRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCk7CiAgICAgICAgIG1h
dHJpeC50cmFuc2xhdGUoLXQueCgpLCAtdC55KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgxYThkMzA1MmRiODIwMjI5
ZDViZGQ4Y2VmYTBkNzYwNGM0MjNlYzEuLjA0Yzg3OTNlZmI5MmY4ODk3ZmMyODhmY2JlNGY2NTI4
MmEwZTIwN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wNC0xMCAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KKworICAgICAgICBQZXJzcGVjdGl2ZSBz
aG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9ybS1vcmlnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTc4NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjMxNDM4MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9uOiBhbmNob3IgcG9pbnRzIGluIHRoZSBHcmFw
aGljc0xheWVyIHRyZWUgZHVtcHMgaGF2ZSBjaGFuZ2VkLgorCisgICAgICAgIFVuc2tpcCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24v
dHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbAorICAgICAgICBv
biBhbGwgcGxhdGZvcm1zOiAndHJhbnNmb3JtLWJveCcgY2hhbmdlcyBub3cgcHJvcGVydGx5IHRy
aWdnZXIgR3JhcGhpY3NMYXllciBnZW9tZXRyeSB1cGRhdGVzLgorCisgICAgICAgICogY29tcG9z
aXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9u
LXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL2NvbXBv
c2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZl
LW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIyLTA0LTEwICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZhbGlkLmh0bWwgaW4gaXNv
bGF0ZWQgdHJlZSBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxp
bmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNl
Y29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CmluZGV4IDdmZDM2NjcxMjliYzZiZjQ4
YzQ1OTZmODFkMWE4NmM4NTkwM2Q2ZTYuLmQxNWVhOTU1YTIwNzQ5YzcyZGQzYzk4NWRkYzJlM2Jm
YTJmZTRmODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3Zl
cmFnZS1hZGp1c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNlY29u
ZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CkBAIC0yNCw5ICsyNCwxMCBAQAogICAgICAg
ICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAgICAgICAob2Zmc2V0RnJvbVJl
bmRlcmVyIHdpZHRoPTEgaGVpZ2h0PTEpCiAgICAgICAgICAgICAgICAgICAocG9zaXRpb24gMS4w
MCAxLjAwKQorICAgICAgICAgICAgICAgICAgKGFuY2hvciAwLjUxIDAuNTApCiAgICAgICAgICAg
ICAgICAgICAoYm91bmRzIDU4My4wMCA1NzguMDApCiAgICAgICAgICAgICAgICAgICAoYmFja2lu
Z1N0b3JlQXR0YWNoZWQgMSkKLSAgICAgICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBb
MS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFstMzA3LjUwIC0yOTAu
MDAgMS4wMCAtMS4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgICAgICAgICAgICAg
KGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAg
MC4wMF0gWy0zMDAuMDAgLTI5MC4wMCAxLjAwIC0xLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0p
CiAgICAgICAgICAgICAgICAgICAoY2hpbGRyZW4gMQogICAgICAgICAgICAgICAgICAgICAoR3Jh
cGhpY3NMYXllcgogICAgICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAwLjAwIC00MDAuMDAp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUt
b24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBl
Y3RlZC50eHQKaW5kZXggMWIwNjQ1OGYxZTFlODMzN2MxZTMzY2IwODVhMTE2YjZhOTczNDMyZC4u
MjQ2ZWI0YTk1M2M3YTZlZTNiNWJmMDU0ZjlhZmUyYzZjYjg1MmVlMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUt
Y292ZXJhZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGlu
Zy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dApAQCAt
MjksOCArMjksOSBAQAogICAgICAgICAgIChjaGlsZHJlbiAyCiAgICAgICAgICAgICAoR3JhcGhp
Y3NMYXllcgogICAgICAgICAgICAgICAoYm91bmRzIG9yaWdpbiAwLjAwIDkwMC4wMCkKKyAgICAg
ICAgICAgICAgKGFuY2hvciAwLjUxIDAuNTApCiAgICAgICAgICAgICAgIChib3VuZHMgNTg1LjAw
IDUwMC4wMCkKLSAgICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4w
MCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAgMC4wMF0gWzIuOTMgMi41MCAxLjAwIC0wLjAxXSBbMC4w
MCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4w
MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFszLjAwIDIuNTAgMS4wMCAt
MC4wMV0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQogICAgICAgICAgICAgICAodmlzaWJsZSByZWN0
IDAuMDAsIDkwMC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAgICAgIChjb3ZlcmFnZSBy
ZWN0IDAuMDAsIDkwMC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAgICAgIChpbnRlcnNl
Y3RzIGNvdmVyYWdlIHJlY3QgMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAxZWIyMWMwMmYzYjM1YjdhMWMxOTdkNTM2YjM5MjkxNWQ2YzQ3YzExLi42
MDdmNGY1NDFjZjc4MzdmODdjY2QzODM1ZTkwMTIzOGUwODZiZTdjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC02NTAsOSArNjUwLDYgQEAgd2Via2l0
Lm9yZy9iLzIzMDI3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9wZXJzcGVjdGkKIHdlYmtpdC5vcmcvYi8yMzAyNzcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZHluYW1pYy1maXhlZC1wb3MtY2ItY2hh
bmdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAyNzcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvcGVyc3BlY3RpdmUt
dHJhbnNmb3Jtcy1lcXVpdmFsZW5jZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgJ3Ry
YW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRzLgot
d2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zv
cm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjM3NTAy
IGZhc3QvZG9tL1JhbmdlL2dldENsaWVudFJlY3RzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMzc1MDIgZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9oaWRlLWJveC12ZXJ0aWNhbC1s
ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM3NTAyIGltcG9ydGVk
L2JsaW5rL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtbHIvZmxvYXQtYmlnLWxpbmUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1t
YXBwaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvY29tcG9z
aXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1l
eHBlY3RlZC50eHQKaW5kZXggYzcwMjgwNmQwYWVlZjhiNmYzNWYxZWY0OGFkNDcxODRlMmY1Nzk2
My4uYTA0ZjRkZmJmZGI4MzY2NDczMDFjMTE0ODkzZWNhZjg0NWUwNGNjYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2Ut
YWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1
c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CkBAIC0yMyw5ICsyMywx
MCBAQAogICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAgICAgICAo
b2Zmc2V0RnJvbVJlbmRlcmVyIHdpZHRoPTEgaGVpZ2h0PTEpCiAgICAgICAgICAgICAgICAgICAo
cG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAgICAgKGFuY2hvciAwLjUxIDAuNTAp
CiAgICAgICAgICAgICAgICAgICAoYm91bmRzIDU4My4wMCA1NzguMDApCiAgICAgICAgICAgICAg
ICAgICAoYmFja2luZ1N0b3JlQXR0YWNoZWQgMSkKLSAgICAgICAgICAgICAgICAgIChjaGlsZHJl
blRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFst
MzA3LjUwIC0yOTAuMDAgMS4wMCAtMS4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAg
ICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4w
MCAxLjAwIDAuMDAgMC4wMF0gWy0zMDAuMDAgLTI5MC4wMCAxLjAwIC0xLjAwXSBbMC4wMCAwLjAw
IDAuMDAgMS4wMF0pCiAgICAgICAgICAgICAgICAgICAoY2hpbGRyZW4gMQogICAgICAgICAgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgogICAgICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAw
LjAwIC00MDAuMDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDBmZTIyYTQwYzUwM2M2ZGYxMDdjZGY5NmIyMmIxZWIxNzEzMzAxNTMuLjZiMmE3MDk1NjFm
MjcxN2YzM2ZjN2U3MGMzYWYwMDZkOWZiOGZmOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMDAxLDkgKzMwMDEsNiBAQCBmYXN0L2NhbnZhcy9zZXQt
Y29sb3JzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMjk1OCBjc3MzL2ZpbHRl
cnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0j
ICd0cmFuc2Zvcm0tYm94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50
cy4KLXdlYmtpdC5vcmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJh
bnNmb3JtLWxheWVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIw
MzMwNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMv
cHJvcGVydGllcy12YWx1ZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjAzMzA1IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNpdGlvbnMvcHJvcGVydGllcy12YWx1ZS1pbmhlcml0LTAwMS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMzNTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMy5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJh
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9jb21wb3NpdGlu
Zy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50
eHQKaW5kZXggY2I2OGMwZDFiZTFlNjY5YzcwY2VjMjQ0MmM3MTE3MTY2MzQwMTYzNC4uNGU4OWM1
OWExZDA0MzIxMzk3ODlmMzEzNjU2NGNjMjkzYTYyZDMyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Ny
b2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGls
ZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKQEAgLTI0LDggKzI0LDkgQEAKICAgICAgICAgICAoY29u
dGVudHNTY2FsZSAxLjAwKQogICAgICAgICAgIChjaGlsZHJlbiAxCiAgICAgICAgICAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgICAgICAgICAoYW5jaG9yIDAuNTEgMC41MCkKICAgICAgICAgICAg
ICAgKGJvdW5kcyA1ODUuMDAgNTAwLjAwKQotICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zv
cm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbMi45MyAyLjUw
IDEuMDAgLTAuMDFdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgICAgICAgICAgKGNoaWxk
cmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAgMC4wMF0g
WzMuMDAgMi41MCAxLjAwIC0wLjAxXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCiAgICAgICAgICAg
ICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAg
ICAgIChjb3ZlcmFnZSByZWN0IDAuMDAsIDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAgICAgICAg
ICAgICAoaW50ZXJzZWN0cyBjb3ZlcmFnZSByZWN0IDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVmNDgzN2YwYTk4ZGZhZTNiNjAwYmRmY2M0ODljNjE0
ZTVhYjcyOGEuLjQ2Y2Y5Mzc1M2IxMzg3YTFjZTczODgyMzc3Y2EzZjBjZjVkNjcyYjEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMTk2LDkgKzIxOTYs
NiBAQCB3ZWJraXQub3JnL2IvMjI4MTc2IFsgQmlnU3VyIE1vbnRlcmV5IF0gZmFzdC90ZXh0L3Zh
cmlhYmxlLXN5c3RlbS1mb250LTIuaHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8yMzAzMjcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvY3Jhc2h0ZXN0cy90
cmFuc2Zvcm0tbWFycXVlZS1yZXNpemUtZGl2LWltYWdlLTAwMS5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAotIyAndHJhbnNmb3JtLWJveCcgc3VwcG9ydCBpcyBicm9rZW4gZm9yIGNvbXBvc2l0ZWQg
ZWxlbWVudHMuCi13ZWJraXQub3JnL2IvMjM3NTUzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi90cmFuc2Zvcm0tYm94LXdpbGwtY2hh
bmdlLXRyYW5zZm9ybS1sYXllci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KICMgcmRhcjov
LzgzNTkxMDQwCiBbIE1vbnRlcmV5KyBdIGVkaXRpbmcvbWFjL2RpY3Rpb25hcnktbG9va3VwL2Rp
Y3Rpb25hcnktbG9va3VwLWlucHV0Lmh0bWwgWyBDcmFzaCBdCiBbIE1vbnRlcmV5KyBdIGVkaXRp
bmcvbWFjL2RpY3Rpb25hcnktbG9va3VwL2RpY3Rpb25hcnktbG9va3VwLWluc2lkZS1zZWxlY3Rp
b24uaHRtbCBbIENyYXNoIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggYjljNzQ5NTk1MmVlMWU4ZWMyZDI2ZGU0MDkxZjhjZWUwMWM1NTI4My4uMzEwMDc2
MDI5ZWU4MzVkMDljMmI0YmMwMTM3NWY5MjlmZTdiNjY1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkzOSw5ICs5MzksNiBAQCB3ZWJraXQub3JnL2Iv
MTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1zaAogd2Via2l0Lm9yZy9iLzE0OTI0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtYmxvY2stc2libGluZy0w
MDMueGh0IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC1tYXJnaW4tbmVz
dGVkLWZpcnN0Y2hpbGQtMDAxLnhodCBbIFNraXAgXQogCi0jICd0cmFuc2Zvcm0tYm94JyBzdXBw
b3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5vcmcvYi8yMzc1
NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5p
bWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLQogIyBUT0RPIEVYSUYtcmVzb2x1dGlvbiBpcyBub3Qgc3VwcG9y
dGVkCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RlbnNpdHktc2l6ZS1jb3JyZWN0
aW9uLyBbIFNraXAgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457251</attachid>
            <date>2022-04-11 05:58:26 -0700</date>
            <delta_ts>2022-05-16 13:29:10 -0700</delta_ts>
            <desc>Patch, v7</desc>
            <filename>bug-211787-20220411055822.patch</filename>
            <type>text/plain</type>
            <size>36268</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlmNzQxY2Q1YjRhM2E0
MGU1Y2RmNjgyZWJhMzFlYWJkNGJjYzIyMi4uMjg4NDhjN2U2YWU5ZjAzYjY3MGMzYjFmNWM0ODBm
MTc4Zjg0Njc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTA0LTExICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFBlcnNw
ZWN0aXZlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3JtLW9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzg3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MzE0MzgwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgaXNzdWVzIHJlbGF0ZWQgdG8gcGVy
c3BlY3RpdmUgaGFuZGxpbmc6CisgICAgICAgIC0gJ3BlcnNwZWN0aXZlLW9yaWdpbicgYWx3YXlz
IHVzZWQgdGhlIGJvcmRlci1ib3ggYXMgcmVmZXJlbmNlIGJveCwgd2hlbiByZXNvbHZpbmcKKyAg
ICAgICAgICAgbGVuZ3RoIHBlcmNlbnRhZ2VzLCBpZ25vcmluZyB0aGUgY2hvaWNlIG9mICd0cmFu
c2Zvcm0tYm94Jy4gRml4IHRoYXQuCisKKyAgICAgICAgLSBQcm9wZXIgJ3RyYW5zZm9ybS1ib3gn
IGF3YXJlbmVzcyB0aHJvZ2hvdXQgUmVuZGVyTGF5ZXJCYWNraW5nIChmZXcgcGxhY2VzIHdpdGgg
aXNzdWUsIGUuZy4gcGVyc3BlY3RpdmVPcmlnaW4oKQorICAgICAgICAgIGFmZmVjdGluZyByZXBh
aW50ICYgY292ZXJhZ2UgcmVjdHMpCisKKyAgICAgICAgLSBUaGUgY2hvc2VuIHBlcnNwZWN0aXZl
IHRyYW5zZm9ybWF0aW9uIHdhcyBub3QgaW52YXJpYW50IHVuZGVyICd0cmFuc2Zvcm0tb3JpZ2lu
JyAvICd0cmFuc2Zvcm0tYm94JworICAgICAgICAgIGNoYW5nZXMgb2YgdGhlIGVsZW1lbnQgQSwg
dGhhdCBkZWZpbmVzIHRoZSBwZXJzcGVjdGl2ZS4gSG93ZXZlciB0aGUgcGVyc3BlY3RpdmUgc2V0
IG9uIGVsZW1lbnQgQQorICAgICAgICAgIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgcmVuZGVyaW5n
IG9mIGl0cyBkZXNjZW5kYW50czogdGhlIGNob2ljZSBvZiB0aGUgJ3RyYW5zZm9ybS1vcmlnaW4n
IC8gJ3RyYW5zZm9ybS1ib3gnCisgICAgICAgICAgb2YgZWxlbWVudCBBIHNob3VsZCBoYXZlIG5v
IGVmZmVjdCBvbiB0aGUgcGVyc3BlY3RpdmUgZXN0YWJsaXNoZWQgZm9yIHRoZSBjaGlsZHJlbi4K
KworICAgICAgICAtIEFzc3VyZSB0aGF0ICd0cmFuc2Zvcm0tYm94JyBjaGFuZ2VzIHRyaWdnZXIg
R3JhcGhpY0xheWVyIGdlb21ldHJ5IHVwZGF0ZXM6IHRoaXMgZnVsbHkgZml4ZXMgJ3RyYW5zZm9y
bS1ib3gnCisgICAgICAgICAgc3VwcG9ydCBmb3IgY29tcG9zaXRlZCBlbGVtZW50cywgYW5kIGJy
aW5ncyBpdHMgc3RhdGUgb24tcGFyIHdpdGggbm9uLWNvbXBvc2l0ZWQgZWxlbWVudHMgKGJvdGgg
c3VwcG9ydCBhbGwga2luZCBvZgorICAgICAgICAgIHRyYW5zZm9ybS1ib3ggLyB0cmFuc2Zvcm0t
b3JpZ2luIGNvbWJpbmF0aW9ucyBvbiByZWd1bGFyIGxheWVycywgY2xpcHBlZCBsYXllcnMsIHNj
cm9sbGVkIGxheWVycykuCisKKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSAobm90IHlldCB1cHN0
cmVhbWVkKSB0ZXN0IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0
aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwuCisKKyAg
ICAgICAgUHJlcGFyZWQgYSBuZXcgV1BUIHRlc3QgKHNlZSBhYm92ZSkgZm9yIHVwc3RyZWFtaW5n
LgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlVHJhbnNmb3JtZWRFeHRlbnRWaWFUcmFuc2Zv
cm1MaXN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp0cmFuc2Zvcm1PcmlnaW5Gb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9y
aWdpbkZvclBhaW50aW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvbXBvc2l0ZUNoYW5nZVJlcXVpcmVzR2Vv
bWV0cnlVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVBlcnNwZWN0aXZl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRlVHJhbnNmb3Jt
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5z
Zm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dW5hcHBs
eVRyYW5zZm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFw
cGx5TW90aW9uUGF0aFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0gY29uc3QpOgorCiAyMDIyLTA0LTExICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1
cHBvcnQgdGhyb3VnaCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwCmluZGV4IGY2ZDU5YTVlMWQ3NDJkNGM1MjQ4YTk3ZjBkNGVhYWZiNGVlMjM4Yjku
LjI4MzQ2YzNhNmJhMGFjYWFjMDkxZTk3ZDliYWQzMGQyZGYxM2RiY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtMTk5Nyw3ICsxOTk3LDcgQEAg
Ym9vbCBLZXlmcmFtZUVmZmVjdDo6Y29tcHV0ZVRyYW5zZm9ybWVkRXh0ZW50VmlhVHJhbnNmb3Jt
TGlzdChjb25zdCBGbG9hdFJlY3QmIHIKIAogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4g
PSBjb250YWluc1JvdGF0aW9uKHN0eWxlLnRyYW5zZm9ybSgpLm9wZXJhdGlvbnMoKSkgfHwgc3R5
bGUudHJhbnNmb3JtKCkuYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpOwogICAgIGlmIChhcHBs
eVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSByZW5kZXJlckJv
eC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRyYW5zZm9ybU9y
aWdpblhZKCksIHJlbmRlcmVyQm94LnNpemUoKSk7CisgICAgICAgIHRyYW5zZm9ybU9yaWdpbiA9
IHN0eWxlLmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4ocmVuZGVyZXJCb3gpLnh5KCk7CiAgICAgICAg
IC8vIElnbm9yZSB0cmFuc2Zvcm1PcmlnaW5aIGJlY2F1c2Ugd2UnbGwgYmFpbCBpZiB3ZSBlbmNv
dW50ZXIgYW55IDNEIHRyYW5zZm9ybXMuCiAgICAgICAgIGZsb2F0Qm91bmRzLm1vdmVCeSgtdHJh
bnNmb3JtT3JpZ2luKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAppbmRleCBkMGUyOTdjNDJhNWJkZWQ2ZjNiNjcxODZjNTNiMTdhYmY3M2ZmZjI4Li5lMGM0
YjVmYzVjNWZlOTA4MjgwOTBhZjY4MDE3MmM4ODAyMThhNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE3ODQsNDMgKzE3ODQsNjIgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbihPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlv
bnNGbGFnPiogZmxhZ3MKICAgICByZXR1cm4gcG9zaXRpb25Pck9mZnNldENoYW5nZWQ7CiB9CiAK
LVRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybShj
b25zdCBMYXlvdXRSZWN0JiBsYXllclJlY3QpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBS
ZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSBjb25zdAogewotICAgIC8vIEZJWE1F
OiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2Jq
ZWN0IGRlcml2ZWQgcmVuZGVyZXJzCi0gICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkp
KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8
UmVuZGVyQm94PihyZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlckJveC5oYXNUcmFuc2Zvcm1S
ZWxhdGVkUHJvcGVydHkoKSkKKyAgICBpZiAoIXJlbmRlcmVyKCkuaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBjb25zdCBhdXRvJiBzdHls
ZSA9IHJlbmRlckJveC5zdHlsZSgpOworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gcmVuZGVyZXIo
KS5zdHlsZSgpOwogICAgIGlmICghc3R5bGUuaGFzUGVyc3BlY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gcmVmZXJlbmNlQm94UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNJZk5lZWRlZChyZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qoc3R5bGUp
LCByZW5kZXJlcigpKTsKLSAgICBhdXRvIHNuYXBwZWRMYXllclJlY3QgPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzSWZOZWVkZWQobGF5ZXJSZWN0LCByZW5kZXJlcigpKTsKKyAgICBhdXRvIHRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzSWZOZWVkZWQocmVu
ZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKSwgcmVuZGVyZXIoKSk7Cisg
ICAgYXV0byBwZXJzcGVjdGl2ZU9yaWdpbiA9IHN0eWxlLmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdp
bih0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KTsKIAotICAgIGF1dG8gcGVyc3BlY3RpdmVPcmln
aW4gPSByZWZlcmVuY2VCb3hSZWN0LmxvY2F0aW9uKCkgLSB0b0Zsb2F0U2l6ZShzbmFwcGVkTGF5
ZXJSZWN0LmxvY2F0aW9uKCkpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnBlcnNw
ZWN0aXZlT3JpZ2luKCksIHJlZmVyZW5jZUJveFJlY3Quc2l6ZSgpKTsKKyAgICAvLyBJbiB0aGUg
cmVndWxhciBjYXNlIG9mIGEgbm9uLWNsaXBwZWQsIG5vbi1zY3JvbGxlZCBHcmFwaGljc0xheWVy
LCBhbGwgdHJhbnNmb3JtYXRpb25zCisgICAgLy8gKHZpYSBDU1MgJ3RyYW5zZm9ybScgLyAncGVy
c3BlY3RpdmUnKSBhcmUgYXBwbGllZCB3aXRoIHJlc3BlY3QgdG8gYSBwcmVkZWZpbmVkIGFuY2hv
ciBwb2ludCwKKyAgICAvLyB3aGljaCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gQ1NTICd0cmFuc2Zv
cm0tYm94JyAvICd0cmFuc2Zvcm0tb3JpZ2luJyBwcm9wZXJ0aWVzLgorICAgIC8vCisgICAgLy8g
QSB0cmFuc2Zvcm1hdGlvbiBnaXZlbiBieSB0aGUgQ1NTICd0cmFuc2Zvcm0nIHByb3BlcnR5IGlz
IGFwcGxpZWQsIGJ5IHRyYW5zbGF0aW5nCisgICAgLy8gdG8gdGhlICd0cmFuc2Zvcm0gb3JpZ2lu
JywgYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uLCBhbmQgdHJhbnNsYXRpbmcgYmFjay4KKyAg
ICAvLyBXaGVuIGFuIGVsZW1lbnQgc3BlY2lmaWVzIGEgQ1NTICdwZXJzcGVjdGl2ZScgcHJvcGVy
dHksIHRoZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgKKyAgICAvLyB0aGF0J3Mg
Y29tcHV0ZWQgaGVyZSBpcyBwcm9wYWdhdGVkIHRvIHRoZSBHcmFwaGljc0xheWVyIGJ5IGNhbGxp
bmcgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oKS4KKyAgICAvLworICAgIC8vIEhvd2V2ZXIgdGhlIEdy
YXBoaWNzTGF5ZXIgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIChlLmcuIENBIG9uIG1hY09TKSBh
cHBseSB0aGUgY2hpbGRyZW4gdHJhbnNmb3JtLAorICAgIC8vIGRlZmluZWQgb24gdGhlIHBhcmVu
dCwgd2l0aCByZXNwZWN0IHRvIHRoZSBhbmNob3IgcG9pbnQgb2YgdGhlIHBhcmVudCwgd2hlbiBy
ZW5kZXJpbmcgY2hpbGQgZWxlbWVudHMuCisgICAgLy8gVGhpcyBpcyB3cm9uZywgYXMgdGhlIHBl
cnNwZWN0aXZlIHRyYW5zZm9ybWF0aW9uIChhcHBsaWVkIHRvIGEgY2hpbGQgb2YgdGhlIGVsZW1l
bnQgZGVmaW5pbmcgdGhlCisgICAgLy8gM2QgZWZmZWN0KSwgbXVzdCBiZSBpbmRlcGVuZGFudCBv
ZiB0aGUgY2hvc2VuIHRyYW5zZm9ybS1vcmlnaW4gKHRoZSBwYXJlbnRzIHRyYW5zZm9ybSBvcmln
aW4KKyAgICAvLyBtdXN0IG5vdCBhZmZlY3QgaXRzIGNoaWxkcmVuKS4KKyAgICAvLworICAgIC8v
IFRvIGNpcmN1bXZlbnQgdGhpcywgZXhwbGljaXRlbHkgcmVtb3ZlIHRoZSB0cmFuc2Zvcm0tb3Jp
Z2luIGRlcGVuZGVuY3kgaW4gdGhlIHBlcnNwZWN0aXZlIG1hdHJpeC4KKyAgICBhdXRvIHRyYW5z
Zm9ybU9yaWdpbiA9IHRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgc3R5bGUudW5hcHBseVRyYW5zZm9ybU9yaWdp
bih0cmFuc2Zvcm0sIHRyYW5zZm9ybU9yaWdpbik7CisgICAgc3R5bGUuYXBwbHlQZXJzcGVjdGl2
ZSh0cmFuc2Zvcm0sIHJlbmRlcmVyKCksIHBlcnNwZWN0aXZlT3JpZ2luKTsKKyAgICBzdHlsZS5h
cHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIHRyYW5zZm9ybU9yaWdpbik7CisgICAgcmV0
dXJuIHRyYW5zZm9ybTsKK30KIAotICAgIC8vIEEgcGVyc3BlY3RpdmUgb3JpZ2luIG9mIDAsMCBt
YWtlcyB0aGUgdmFuaXNoaW5nIHBvaW50IGluIHRoZSBjZW50ZXIgb2YgdGhlIGVsZW1lbnQuCi0g
ICAgLy8gV2Ugd2FudCBpdCB0byBiZSBpbiB0aGUgdG9wLWxlZnQsIHNvIHN1YnRyYWN0IGhhbGYg
dGhlIGhlaWdodCBhbmQgd2lkdGguCi0gICAgcGVyc3BlY3RpdmVPcmlnaW4gLT0gc25hcHBlZExh
eWVyUmVjdC5zaXplKCkgLyAyLjBmOworRmxvYXRQb2ludDNEIFJlbmRlckxheWVyOjp0cmFuc2Zv
cm1PcmlnaW5Gb3JQYWludGluZygpIGNvbnN0Cit7CisgICAgaWYgKCFyZW5kZXJlcigpLmhhc1Ry
YW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKQorICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdDsKLSAgICB0LnRyYW5zbGF0ZShwZXJzcGVjdGl2ZU9yaWdpbi54
KCksIHBlcnNwZWN0aXZlT3JpZ2luLnkoKSk7Ci0gICAgdC5hcHBseVBlcnNwZWN0aXZlKHN0eWxl
LnVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcigpKSk7Ci0gICAgdC50cmFuc2xhdGUoLXBlcnNwZWN0
aXZlT3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSk7CisgICAgY29uc3QgYXV0byYg
c3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CisgICAgYXV0byByZWZlcmVuY2VCb3hSZWN0ID0g
cmVuZGVyZXIoKS50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKTsKIAotICAgIHJldHVy
biB0OworICAgIGF1dG8gb3JpZ2luID0gc3R5bGUuY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihyZWZl
cmVuY2VCb3hSZWN0KTsKKyAgICBpZiAocmVuZGVyZXJOZWVkc1BpeGVsU25hcHBpbmcocmVuZGVy
ZXIoKSkpCisgICAgICAgIG9yaWdpbi5zZXRYWShyb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5
b3V0UG9pbnQob3JpZ2luLnh5KCkpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSkpOworICAgIHJldHVybiBvcmlnaW47CiB9CiAKIEZsb2F0UG9pbnQgUmVuZGVyTGF5
ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgLy8g
RklYTUU6IFRoaXMgdXNlcyB0aGUgd3JvbmcsIHRyYW5zZm9ybS1ib3ggdW5hd2FyZSwgZ2VvbWV0
cnkuCi0gICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChyZW5kZXJlcigpLnN0eWxl
KCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpKTsK
KyAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5w
ZXJzcGVjdGl2ZU9yaWdpbigpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qo
cmVuZGVyZXIoKS5zdHlsZSgpKS5zaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b250YWluZXJGb3JQb3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBlIHBv
c2l0aW9uLCBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCmluZGV4IDdkM2NiMTU3ZDBmYmYyMDJlYTdkOGE2NDkyM2Y4MDRkZjMwOTFj
NzIuLjc2NmRmMzdjNDUzOGEzZjFiOWIyODllNWYyYzI1NjAzZGQzYWQyMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC03MzksMTAgKzczOSwxMSBAQCBwdWJsaWM6
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyYWJsZVRyYW5zZm9ybShPcHRpb25TZXQ8
UGFpbnRCZWhhdmlvcj4pIGNvbnN0OwogICAgIAogICAgIC8vIEdldCB0aGUgcGVyc3BlY3RpdmUg
dHJhbnNmb3JtLCB3aGljaCBpcyBhcHBsaWVkIHRvIHRyYW5zZm9ybWVkIHN1YmxheWVycy4KLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyIGhhcyBhIC13ZWJraXQtcGVyc3BlY3RpdmUu
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBsYXllciBoYXMgYSBwZXJzcGVjdGl2ZS4KICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyB0cmFuc2Zvcm0gaGFzIHRoZSBwZXJzcGVjdGl2ZS1vcmlnaW4g
YmFrZWQgaW4uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVUcmFuc2Zvcm0o
Y29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBjb25zdDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgcGVyc3Bl
Y3RpdmVPcmlnaW4oKSBjb25zdDsKKyAgICBGbG9hdFBvaW50M0QgdHJhbnNmb3JtT3JpZ2luRm9y
UGFpbnRpbmcoKSBjb25zdDsKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyZXIoKS5zdHlsZSgpLnByZXNlcnZlczNEKCk7IH0KICAgICBib29sIGhhczNEVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0gJiYgIW1fdHJhbnNmb3JtLT5pc0FmZmlu
ZSgpOyB9CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNUcmFuc2Zvcm1lZEFuY2VzdG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFh
YzNkZjdjZjQ5YmI5MjIuLjBlY2E5ZjkyYTQ3N2IzZTAwZTg0NWJjODZhOTM5YjBkZDM4Y2I4MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CkBAIC02MzcsMTYgKzYzNywxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3Bh
Y2l0eShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRP
cGFjaXR5KGNvbXBvc2l0aW5nT3BhY2l0eShzdHlsZS5vcGFjaXR5KCkpKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCit2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgbV9vd25pbmdMYXllci50
cmFuc2Zvcm0oKSwgYnV0IHRoYXQgY3VycmVudGx5IGhhcyB0cmFuc2Zvcm0tb3JpZ2luCi0gICAg
Ly8gYmFrZWQgaW50byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhhdC4KICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0OwotICAgIGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIHdyb25nLCB0cmFuc2Zvcm0tYm94IHVuYXdh
cmUsIGdlb21ldHJ5LgotICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKHQsIHJlbmRl
cmVyKCkuc3R5bGUoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhtX293bmluZ0xheWVyLnJlbmRl
cmVyQm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5bGU6Omlu
ZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKLSAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFi
bGUodCwgY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKLSAgICB9CisgICAg
aWYgKG1fb3duaW5nTGF5ZXIuaGFzVHJhbnNmb3JtKCkpCisgICAgICAgIG1fb3duaW5nTGF5ZXIu
dXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHQsIHN0eWxlLCBSZW5kZXJTdHlsZTo6aW5kaXZpZHVh
bFRyYW5zZm9ybU9wZXJhdGlvbnMpOwogICAgIAogICAgIGlmIChtX2NvbnRlbnRzQ29udGFpbm1l
bnRMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+c2V0VHJhbnNm
b3JtKHQpOwpAQCAtNjU3LDIwICs2NTIsMjUgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KGNvbnN0IExheW91dFJl
Y3QmIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdCwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUGFyZW50
R3JhcGhpY3NMYXllcikKIHsKKyAgICBhdXRvIGRlZmF1bHRBbmNob3JQb2ludCA9IEZsb2F0UG9p
bnQzRCB7IDAuNSwgMC41LCAwIH07CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKSB7Ci0gICAgICAgIGF1dG8gZGVmYXVsdEFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEIHsgMC41LCAwLjUsIDAgfTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRB
bmNob3JQb2ludChkZWZhdWx0QW5jaG9yUG9pbnQpOwogICAgICAgICBpZiAobV9jb250ZW50c0Nv
bnRhaW5tZW50TGF5ZXIpCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKIAorICAgICAgICBpZiAobV9jaGls
ZENvbnRhaW5tZW50TGF5ZXIpCisgICAgICAgICAgICBtX2NoaWxkQ29udGFpbm1lbnRMYXllci0+
c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsKKworICAgICAgICBpZiAobV9zY3Jv
bGxDb250YWluZXJMYXllcikKKyAgICAgICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNl
dEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2ludCk7CisKICAgICAgICAgaWYgKG1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyKQogICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNl
dFByZXNlcnZlczNEKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0
IGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSB0aGlzLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAg
IGF1dG8gYm9yZGVyQm94UmVjdCA9IG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0
KCk7Ci0gICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9y
UGFpbnRpbmcoYm9yZGVyQm94UmVjdCk7CisgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBtX293
bmluZ0xheWVyLnRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKCk7CiAgICAgYXV0byBsYXllck9m
ZnNldCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBvaW50KG9mZnNldEZyb21Q
YXJlbnRHcmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gYW5jaG9y
ID0gRmxvYXRQb2ludDNEIHsKICAgICAgICAgcHJpbWFyeUdyYXBoaWNzTGF5ZXJSZWN0LndpZHRo
KCkgPyAoKGxheWVyT2Zmc2V0LngoKSAtIHByaW1hcnlHcmFwaGljc0xheWVyUmVjdC54KCkpICsg
dHJhbnNmb3JtT3JpZ2luLngoKSkgLyBwcmltYXJ5R3JhcGhpY3NMYXllclJlY3Qud2lkdGgoKSA6
IDAuNWYsCkBAIC02ODUsMTEgKzY4NSwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogCiAg
ICAgYXV0byByZW1vdmVDaGlsZHJlblRyYW5zZm9ybUZyb21MYXllcnMgPSBbJl0oR3JhcGhpY3NM
YXllciogbGF5ZXJUb0lnbm9yZSA9IG51bGxwdHIpIHsKICAgICAgICAgYXV0byogY2xpcHBpbmdM
YXllciA9IHRoaXMtPmNsaXBwaW5nTGF5ZXIoKTsKLSAgICAgICAgaWYgKGNsaXBwaW5nTGF5ZXIg
JiYgY2xpcHBpbmdMYXllciAhPSBsYXllclRvSWdub3JlKQorICAgICAgICBpZiAoY2xpcHBpbmdM
YXllciAmJiBjbGlwcGluZ0xheWVyICE9IGxheWVyVG9JZ25vcmUpIHsKICAgICAgICAgICAgIGNs
aXBwaW5nTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHsgfSk7Ci0gICAgICAgIAorICAgICAg
ICAgICAgY2xpcHBpbmdMYXllci0+c2V0QW5jaG9yUG9pbnQoZGVmYXVsdEFuY2hvclBvaW50KTsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmIChtX3Njcm9sbENvbnRhaW5lckxheWVyICYmIG1fc2Ny
b2xsQ29udGFpbmVyTGF5ZXIgIT0gbGF5ZXJUb0lnbm9yZSkgewogICAgICAgICAgICAgbV9zY3Jv
bGxDb250YWluZXJMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oeyB9KTsKKyAgICAgICAgICAg
IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldEFuY2hvclBvaW50KGRlZmF1bHRBbmNob3JQb2lu
dCk7CiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2VydmVzM0Qo
ZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTcwMiw3ICs3MDUsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlv
dXRSZWN0JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBsYXllckZvckNoaWxk
cmVuVHJhbnNmb3JtID0gWyZdIHsKKyAgICBhdXRvIGxheWVyRm9yQ2hpbGRyZW5UcmFuc2Zvcm0g
PSBbJl0oKSAtPiBzdGQ6OnR1cGxlPEdyYXBoaWNzTGF5ZXIqLCBGbG9hdFJlY3Q+IHsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpIHsKICAgICAgICAgICAgIEFTU0VSVChpczxS
ZW5kZXJCb3g+KHJlbmRlcmVyKCkpKTsgLy8gU2Nyb2xsIGNvbnRhaW5lciBsYXllcnMgYXJlIG9u
bHkgY3JlYXRlZCBmb3IgUmVuZGVyQm94IGRlcml2ZWQgcmVuZGVyZXJzLgogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV90dXBsZShtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpLCBzY3Jv
bGxDb250YWluZXJMYXllckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKSk7CkBA
IC03MTAsMTkgKzcxMywyNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2hpbGRy
ZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0JgogICAgICAgICBpZiAo
YXV0byogbGF5ZXIgPSBjbGlwcGluZ0xheWVyKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKGxheWVyLCBjbGlwcGluZ0xheWVyQm94KHJlbmRlcmVyKCkpKTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgYm9yZGVyQm94
UmVjdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUobV9ncmFwaGljc0xheWVyLmdl
dCgpLCByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSk7CiAgICAgfTsKIAot
ICAgIGF1dG8gW2xheWVyRm9yUGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlUmVsYXRpdmVCb3hdID0g
bGF5ZXJGb3JDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIC8vIEZJWE1FOiBwZXJzcGVjdGl2ZVJl
bGF0aXZlQm94IGlzbid0IHF1aXRlIHJpZ2h0IGhlcmUuIFRoaXMgbmVlZHMgd29yazogd2Via2l0
Lm9yZy9iLzIxMTc4Ny4KLSAgICBhdXRvIHBlcnNwZWN0aXZlVHJhbnNmb3JtID0gb3duaW5nTGF5
ZXIoKS5wZXJzcGVjdGl2ZVRyYW5zZm9ybShwZXJzcGVjdGl2ZVJlbGF0aXZlQm94KTsKLSAgICAK
LSAgICAvLyBJZiB3ZSBoYXZlIHNjcm9sbGluZyBsYXllcnMsIHdlIG5lZWQgdGhlIGNoaWxkcmVu
IHRyYW5zZm9ybSBvbiBtX3Njcm9sbENvbnRhaW5lckxheWVyIHRvCi0gICAgLy8gYWZmZWN0IGNo
aWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0Qo
dHJ1ZSkuCi0gICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgPT0gbV9zY3JvbGxDb250YWluZXJM
YXllcikKLSAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldFByZXNlcnZlczNEKHRy
dWUpOwotICAgIAotICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxkcmVuVHJhbnNmb3Jt
KHBlcnNwZWN0aXZlVHJhbnNmb3JtKTsKKyAgICBhdXRvIFtsYXllckZvclBlcnNwZWN0aXZlLCBs
YXllckZvclBlcnNwZWN0aXZlUmVjdF0gPSBsYXllckZvckNoaWxkcmVuVHJhbnNmb3JtKCk7Cisg
ICAgaWYgKGxheWVyRm9yUGVyc3BlY3RpdmUgIT0gbV9ncmFwaGljc0xheWVyKSB7CisgICAgICAg
IC8vIElmIHdlIGhhdmUgc2Nyb2xsaW5nIGxheWVycywgd2UgbmVlZCB0aGUgY2hpbGRyZW4gdHJh
bnNmb3JtIG9uIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgdG8KKyAgICAgICAgLy8gYWZmZWN0IGNo
aWxkcmVuIG9mIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLCBzbyBzZXQgc2V0UHJlc2VydmVzM0Qo
dHJ1ZSkuCisgICAgICAgIGlmIChsYXllckZvclBlcnNwZWN0aXZlID09IG1fc2Nyb2xsQ29udGFp
bmVyTGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0UHJlc2Vy
dmVzM0QodHJ1ZSk7CisKKyAgICAgICAgYXV0byBwZXJzcGVjdGl2ZUFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEIHsKKyAgICAgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LndpZHRoKCkg
PyAodHJhbnNmb3JtT3JpZ2luLngoKSAtIGxheWVyRm9yUGVyc3BlY3RpdmVSZWN0LngoKSkgLyBs
YXllckZvclBlcnNwZWN0aXZlUmVjdC53aWR0aCgpIDogMC41ZiwKKyAgICAgICAgICAgIGxheWVy
Rm9yUGVyc3BlY3RpdmVSZWN0LmhlaWdodCgpID8gKHRyYW5zZm9ybU9yaWdpbi55KCkgLSBsYXll
ckZvclBlcnNwZWN0aXZlUmVjdC55KCkpIC8gbGF5ZXJGb3JQZXJzcGVjdGl2ZVJlY3QuaGVpZ2h0
KCkgOiAwLjVmLAorICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luLnooKQorICAgICAgICB9Owor
CisgICAgICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldEFuY2hvclBvaW50KHBlcnNwZWN0aXZl
QW5jaG9yUG9pbnQpOworICAgIH0KKworICAgIGxheWVyRm9yUGVyc3BlY3RpdmUtPnNldENoaWxk
cmVuVHJhbnNmb3JtKG1fb3duaW5nTGF5ZXIucGVyc3BlY3RpdmVUcmFuc2Zvcm0oKSk7CiAgICAg
cmVtb3ZlQ2hpbGRyZW5UcmFuc2Zvcm1Gcm9tTGF5ZXJzKGxheWVyRm9yUGVyc3BlY3RpdmUpOwog
fQogCkBAIC0yOTcwLDE3ICsyOTgwLDYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUltYWdlQ29udGVudHMoUGFpbnRlZENvbnRlbnRzSW5mbyYgY29udGVudHNJbmZvKQogICAgIGlt
YWdlLT5zdGFydEFuaW1hdGlvbigpOwogfQogCi1GbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoY29uc3QgTGF5b3V0UmVjdCYg
Ym9yZGVyQm94KSBjb25zdAotewotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKTsKLQotICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0gICAgb3JpZ2luLnNl
dFhZKHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhwb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnRy
YW5zZm9ybU9yaWdpblhZKCksIGJvcmRlckJveC5zaXplKCkpLCBkZXZpY2VTY2FsZUZhY3Rvcigp
KSk7Ci0gICAgb3JpZ2luLnNldFooc3R5bGUudHJhbnNmb3JtT3JpZ2luWigpKTsKLQotICAgIHJl
dHVybiBvcmlnaW47Ci19Ci0KIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcC1sZWZ0
IG9mIHRoaXMgY29tcG9zaXRpbmcgbGF5ZXIgYXQgd2hpY2ggdGhlIHJlbmRlcmVyJ3MgY29udGVu
dHMgYXJlIHBhaW50ZWQuCiBMYXlvdXRTaXplIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudE9m
ZnNldEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggODU4N2Q2MTQwZWExZDE1MzBkN2VkM2Zk
NTZiMjdkOWFlODY1MmM2MS4uYWJlNDQ5ZWU2YmYxZGFiMDMwNmQzODViZWZmYjczZjUyMTNlMGRm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMzMxLDkgKzMzMSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kTGF5ZXJQ
YWludHNGaXhlZFJvb3RCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50
T2Zmc2V0SW5Db21wb3NpdGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgLy8gUmVzdWx0IGlzIHRyYW5z
Zm9ybSBvcmlnaW4gaW4gZGV2aWNlIHBpeGVscy4KLSAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRy
YW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29u
c3Q7Ci0KICAgICBMYXlvdXRTaXplIG9mZnNldFJlbGF0aXZlVG9SZW5kZXJlck9yaWdpbkZvckRl
c2NlbmRhbnRMYXllcnMoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGVuc3VyZUNsaXBwaW5nU3Rh
Y2tMYXllcnMoTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2smKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMjM1M2MxNzcw
NjkyZjNkNzEzNWMyODkxYWU2ODNmYTM0MzM4N2MzNi4uMzg3ODc5OTBiMWFkNWI1NjVjYjgwOTQ0
NTQwOTc1YmE4NWM5NTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE2MzcsNiArMTYzNyw3IEBAIHN0YXRpYyBib29s
IHJlY29tcG9zaXRlQ2hhbmdlUmVxdWlyZXNHZW9tZXRyeVVwZGF0ZShjb25zdCBSZW5kZXJTdHls
ZSYgb2xkU3R5bGUsCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zbGF0ZSgpICE9IG5ld1N0eWxl
LnRyYW5zbGF0ZSgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnNjYWxlKCkgIT0gbmV3U3R5bGUuc2Nh
bGUoKQogICAgICAgICB8fCBvbGRTdHlsZS5yb3RhdGUoKSAhPSBuZXdTdHlsZS5yb3RhdGUoKQor
ICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1Cb3goKSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1C
b3goKQogICAgICAgICB8fCBvbGRTdHlsZS50cmFuc2Zvcm1PcmlnaW5YKCkgIT0gbmV3U3R5bGUu
dHJhbnNmb3JtT3JpZ2luWCgpCiAgICAgICAgIHx8IG9sZFN0eWxlLnRyYW5zZm9ybU9yaWdpblko
KSAhPSBuZXdTdHlsZS50cmFuc2Zvcm1PcmlnaW5ZKCkKICAgICAgICAgfHwgb2xkU3R5bGUudHJh
bnNmb3JtT3JpZ2luWigpICE9IG5ld1N0eWxlLnRyYW5zZm9ybU9yaWdpblooKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4
IDAxYjk4YWY0ODFlZWZmMjdiNDYwYWE0NmJhZGFjMGVhZGY3ZDEyZTAuLmVkMzk5NzY5NTJjYTc4
ZGE1ZDQyZTMzNGZlYzY2MDY5ODUwYjEyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTM0Niw3ICszNDYsOSBAQCB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sCiAKICAgICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRl
OwogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikgJiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikK
LSAgICAgICAgb3JpZ2luVHJhbnNsYXRlID0gc3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJh
bnNmb3JtLCBib3VuZGluZ0JveCk7CisgICAgICAgIG9yaWdpblRyYW5zbGF0ZSA9IHN0eWxlLmNv
bXB1dGVUcmFuc2Zvcm1PcmlnaW4oYm91bmRpbmdCb3gpOworCisgICAgc3R5bGUuYXBwbHlUcmFu
c2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOwogCiAgICAgLy8gQ1NTIHRy
YW5zZm9ybXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgU1ZHIHRyYW5zZm9ybXMuCiAgICAgaWYgKGhh
c0NTU1RyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCmluZGV4IGNkM2E1NDBkZjU1NmExM2Q0MzJmOGNkNjAwN2Q1NjczZWQ5ZDY2MjUu
LmJkNzE0M2I4MDgxNzM2NzZiNzFmMmFmMjM5OTViMDRhNDgzZjU3ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ1MCwyMiArMTQ1
MCw0MyBAQCBib29sIFJlbmRlclN0eWxlOjphZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUZsb2F0UG9pbnQzRCBSZW5kZXJTdHlsZTo6YXBw
bHlUcmFuc2Zvcm1PcmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29uc3QKK0Zsb2F0UG9pbnQgUmVuZGVyU3R5bGU6OmNv
bXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25z
dAoreworICAgIHJldHVybiBib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHBlcnNwZWN0aXZlT3JpZ2luKCksIGJvdW5kaW5nQm94LnNpemUoKSk7Cit9CisK
K3ZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5UGVyc3BlY3RpdmUoVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgRmxvYXRQb2lu
dCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9jc3MtdHJhbnNmb3Jtcy0yLyNwZXJzcGVjdGl2ZQorICAgIC8vIFRoZSBwZXJzcGVjdGl2ZSBt
YXRyaXggaXMgY29tcHV0ZWQgYXMgZm9sbG93czoKKyAgICAvLyAxLiBTdGFydCB3aXRoIHRoZSBp
ZGVudGl0eSBtYXRyaXguCisKKyAgICAvLyAyLiBUcmFuc2xhdGUgYnkgdGhlIGNvbXB1dGVkIFgg
YW5kIFkgdmFsdWVzIG9mIHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUob3JpZ2luVHJhbnNsYXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSk7CisKKyAgICAvLyAz
LiBNdWx0aXBseSBieSB0aGUgbWF0cml4IHRoYXQgd291bGQgYmUgb2J0YWluZWQgZnJvbSB0aGUg
cGVyc3BlY3RpdmUoKSB0cmFuc2Zvcm0gZnVuY3Rpb24sIHdoZXJlIHRoZSBsZW5ndGggaXMgcHJv
dmlkZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eQorICAgIHRyYW5z
Zm9ybS5hcHBseVBlcnNwZWN0aXZlKHVzZWRQZXJzcGVjdGl2ZShyZW5kZXJlcikpOworCisgICAg
Ly8gNC4gVHJhbnNsYXRlIGJ5IHRoZSBuZWdhdGVkIGNvbXB1dGVkIFggYW5kIFkgdmFsdWVzIG9m
IHBlcnNwZWN0aXZlLW9yaWdpbgorICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLW9yaWdpblRyYW5z
bGF0ZS54KCksIC1vcmlnaW5UcmFuc2xhdGUueSgpKTsKK30KKworRmxvYXRQb2ludDNEIFJlbmRl
clN0eWxlOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1z
LTIvI2N0bQotICAgIC8vIDIuIFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFog
dmFsdWVzIG9mIHRyYW5zZm9ybS1vcmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5z
bGF0ZTsKICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0WFkoYm91bmRpbmdCb3gubG9jYXRpb24oKSAr
IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1PcmlnaW5YWSgpLCBib3VuZGluZ0Jv
eC5zaXplKCkpKTsKICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0Wih0cmFuc2Zvcm1PcmlnaW5aKCkp
OworICAgIHJldHVybiBvcmlnaW5UcmFuc2xhdGU7Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OmFw
cGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdAorewogICAgIGlmICghb3JpZ2lu
VHJhbnNsYXRlLmlzWmVybygpKQogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qob3JpZ2lu
VHJhbnNsYXRlLngoKSwgb3JpZ2luVHJhbnNsYXRlLnkoKSwgb3JpZ2luVHJhbnNsYXRlLnooKSk7
Ci0gICAgcmV0dXJuIG9yaWdpblRyYW5zbGF0ZTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6dW5h
cHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50M0QmIG9yaWdpblRyYW5zbGF0ZSkgY29uc3QKIHsKLSAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtCi0gICAgLy8gOC4gVHJhbnNsYXRl
IGJ5IHRoZSBuZWdhdGVkIGNvbXB1dGVkIFgsIFkgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1v
cmlnaW4uCiAgICAgaWYgKCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUzZCgtb3JpZ2luVHJhbnNsYXRlLngoKSwgLW9yaWdpblRyYW5zbGF0ZS55
KCksIC1vcmlnaW5UcmFuc2xhdGUueigpKTsKIH0KQEAgLTE0NzcsNyArMTQ5OCw4IEBAIHZvaWQg
UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIG9y
aWdpblRyYW5zbGF0ZSA9IGFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgYm91bmRpbmdC
b3gpOworICAgIGF1dG8gb3JpZ2luVHJhbnNsYXRlID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihi
b3VuZGluZ0JveCk7CisgICAgYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5U
cmFuc2xhdGUpOwogICAgIGFwcGx5Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gs
IG9wdGlvbnMpOwogICAgIHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5U
cmFuc2xhdGUpOwogfQpAQCAtMTU3MSw3ICsxNTkzLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBw
bHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnMKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS54KCks
IHRyYXZlcnNhbFN0YXRlLmN1cnJlbnQoKS55KCkpOwogCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0
byB0aGUgYW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgotICAgIGF1dG8gdHJhbnNm
b3JtT3JpZ2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCks
IGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOworICAgIGF1dG8g
dHJhbnNmb3JtT3JpZ2luID0gY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihib3VuZGluZ0JveCkueHko
KTsKICAgICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKICAgICBpZiAoIW9mZnNldEFu
Y2hvcigpLngoKS5pc0F1dG8oKSkKICAgICAgICAgYW5jaG9yID0gZmxvYXRQb2ludEZvckxlbmd0
aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gu
bG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggZGIxMmUzMDM2ZjM2NDFhMzFmNzBiYzAxNzExYjkyOTZlNDEzMTA3Mi4uZDNlNjU1
YmMyZjdiM2E3YzBiZDZjMmU2NDRiZTc4OGVjODNjZGNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTcwNyw4ICs3MDcsMTQgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNm
b3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZz
ZXQgfTsKIAogICAgIGJvb2wgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0OwotICAg
IEZsb2F0UG9pbnQzRCBhcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OworCisgICAgRmxvYXRQb2ludCBj
b21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkgY29u
c3Q7CisgICAgdm9pZCBhcHBseVBlcnNwZWN0aXZlKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luVHJhbnNsYXRlKSBjb25z
dDsKKworICAgIEZsb2F0UG9pbnQzRCBjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1PcmlnaW4o
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWdpblRyYW5zbGF0
ZSkgY29uc3Q7CiAgICAgdm9pZCB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFuc2xhdGUpIGNvbnN0OworCiAg
ICAgLy8gYXBwbHlUcmFuc2Zvcm0gY2FsbHMgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKSwgdGhlbiBh
cHBseUNTU1RyYW5zZm9ybSgpLCBmb2xsb3dlZCBieSB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKCku
CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+
ID0gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CiAgICAgdm9pZCBhcHBseUNTU1RyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0
aW9ucykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmlu
ZGV4IGUwNzBjN2E3MzA2MjZhZDVjMjA3ZGVjNzIxODAzMzNlMzUxZWM4MzguLmFjYWQ0Zjg1NGIy
ZjZlNTgxMmI1OWYzNGYwYjRkMDdjYzE1MzQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xMDcsOCArMTA3LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNW
R0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiAKICAgICAv
LyBJZiB3ZSBkaWRuJ3QgaGF2ZSB0aGUgQ1NTICJ0cmFuc2Zvcm0iIHByb3BlcnR5IHNldCwgd2Ug
bXVzdCBhY2NvdW50IGZvciB0aGUgInRyYW5zZm9ybSIgYXR0cmlidXRlLgogICAgIGlmICghaGFz
U3BlY2lmaWVkVHJhbnNmb3JtICYmIHN0eWxlKSB7Ci0gICAgICAgIGF1dG8gYm91bmRpbmdCb3gg
PSByZW5kZXJlcigpLT50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCk7Ci0gICAgICAgIGF1dG8g
dCA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWFkoKSwg
Ym91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CisgICAgICAgIGF1
dG8gdCA9IHN0eWxlLT5jb21wdXRlVHJhbnNmb3JtT3JpZ2luKHJlbmRlcmVyKCktPnRyYW5zZm9y
bVJlZmVyZW5jZUJveFJlY3QoKSkueHkoKTsKICAgICAgICAgbWF0cml4LnRyYW5zbGF0ZSh0KTsK
ICAgICAgICAgbWF0cml4ICo9IHRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCk7CiAgICAgICAgIG1h
dHJpeC50cmFuc2xhdGUoLXQueCgpLCAtdC55KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgxYThkMzA1MmRiODIwMjI5
ZDViZGQ4Y2VmYTBkNzYwNGM0MjNlYzEuLmNhMzUyYTgwOGMyYWY1YzdjYzAxZjc2NjMxZjIwZGNh
NzdiMGViYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wNC0xMSAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KKworICAgICAgICBQZXJzcGVjdGl2ZSBz
aG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9ybS1vcmlnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTc4NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjMxNDM4MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9uOiBhbmNob3IgcG9pbnRzIGluIHRoZSBHcmFw
aGljc0xheWVyIHRyZWUgZHVtcHMgaGF2ZSBjaGFuZ2VkLgorCisgICAgICAgIFVuc2tpcCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy9hbmltYXRpb24v
dHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zvcm0tbGF5ZXIuaHRtbAorICAgICAgICBv
biBhbGwgcGxhdGZvcm1zOiAndHJhbnNmb3JtLWJveCcgY2hhbmdlcyBub3cgcHJvcGVydGx5IHRy
aWdnZXIgR3JhcGhpY3NMYXllciBnZW9tZXRyeSB1cGRhdGVzLgorCisgICAgICAgICogY29tcG9z
aXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9u
LXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL2NvbXBv
c2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZl
LW9uLXNjcm9sbGVyLXRpbGUtY292ZXJhZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIyLTA0LTEwICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZhbGlkLmh0bWwgaW4gaXNv
bGF0ZWQgdHJlZSBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxp
bmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNl
Y29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CmluZGV4IDdmZDM2NjcxMjliYzZiZjQ4
YzQ1OTZmODFkMWE4NmM4NTkwM2Q2ZTYuLmQxNWVhOTU1YTIwNzQ5YzcyZGQzYzk4NWRkYzJlM2Jm
YTJmZTRmODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3Zl
cmFnZS1hZGp1c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1c3RtZW50LXNlY29u
ZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CkBAIC0yNCw5ICsyNCwxMCBAQAogICAgICAg
ICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAgICAgICAob2Zmc2V0RnJvbVJl
bmRlcmVyIHdpZHRoPTEgaGVpZ2h0PTEpCiAgICAgICAgICAgICAgICAgICAocG9zaXRpb24gMS4w
MCAxLjAwKQorICAgICAgICAgICAgICAgICAgKGFuY2hvciAwLjUxIDAuNTApCiAgICAgICAgICAg
ICAgICAgICAoYm91bmRzIDU4My4wMCA1NzguMDApCiAgICAgICAgICAgICAgICAgICAoYmFja2lu
Z1N0b3JlQXR0YWNoZWQgMSkKLSAgICAgICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBb
MS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFstMzA3LjUwIC0yOTAu
MDAgMS4wMCAtMS4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAgICAgICAgICAgICAg
KGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAg
MC4wMF0gWy0zMDAuMDAgLTI5MC4wMCAxLjAwIC0xLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0p
CiAgICAgICAgICAgICAgICAgICAoY2hpbGRyZW4gMQogICAgICAgICAgICAgICAgICAgICAoR3Jh
cGhpY3NMYXllcgogICAgICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAwLjAwIC00MDAuMDAp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUt
b24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBl
Y3RlZC50eHQKaW5kZXggMWIwNjQ1OGYxZTFlODMzN2MxZTMzY2IwODVhMTE2YjZhOTczNDMyZC4u
MjQ2ZWI0YTk1M2M3YTZlZTNiNWJmMDU0ZjlhZmUyYzZjYjg1MmVlMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUt
Y292ZXJhZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGlu
Zy9wZXJzcGVjdGl2ZS1vbi1zY3JvbGxlci10aWxlLWNvdmVyYWdlLWV4cGVjdGVkLnR4dApAQCAt
MjksOCArMjksOSBAQAogICAgICAgICAgIChjaGlsZHJlbiAyCiAgICAgICAgICAgICAoR3JhcGhp
Y3NMYXllcgogICAgICAgICAgICAgICAoYm91bmRzIG9yaWdpbiAwLjAwIDkwMC4wMCkKKyAgICAg
ICAgICAgICAgKGFuY2hvciAwLjUxIDAuNTApCiAgICAgICAgICAgICAgIChib3VuZHMgNTg1LjAw
IDUwMC4wMCkKLSAgICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4w
MCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAgMC4wMF0gWzIuOTMgMi41MCAxLjAwIC0wLjAxXSBbMC4w
MCAwLjAwIDAuMDAgMS4wMF0pCisgICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4w
MCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFszLjAwIDIuNTAgMS4wMCAt
MC4wMV0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQogICAgICAgICAgICAgICAodmlzaWJsZSByZWN0
IDAuMDAsIDkwMC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAgICAgIChjb3ZlcmFnZSBy
ZWN0IDAuMDAsIDkwMC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAgICAgIChpbnRlcnNl
Y3RzIGNvdmVyYWdlIHJlY3QgMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAxZWIyMWMwMmYzYjM1YjdhMWMxOTdkNTM2YjM5MjkxNWQ2YzQ3YzExLi42
MDdmNGY1NDFjZjc4MzdmODdjY2QzODM1ZTkwMTIzOGUwODZiZTdjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC02NTAsOSArNjUwLDYgQEAgd2Via2l0
Lm9yZy9iLzIzMDI3NyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJh
bnNmb3Jtcy9wZXJzcGVjdGkKIHdlYmtpdC5vcmcvYi8yMzAyNzcgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvZHluYW1pYy1maXhlZC1wb3MtY2ItY2hh
bmdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAyNzcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvcGVyc3BlY3RpdmUt
dHJhbnNmb3Jtcy1lcXVpdmFsZW5jZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgJ3Ry
YW5zZm9ybS1ib3gnIHN1cHBvcnQgaXMgYnJva2VuIGZvciBjb21wb3NpdGVkIGVsZW1lbnRzLgot
d2Via2l0Lm9yZy9iLzIzNzU1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy9hbmltYXRpb24vdHJhbnNmb3JtLWJveC13aWxsLWNoYW5nZS10cmFuc2Zv
cm0tbGF5ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMjM3NTAy
IGZhc3QvZG9tL1JhbmdlL2dldENsaWVudFJlY3RzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMzc1MDIgZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9oaWRlLWJveC12ZXJ0aWNhbC1s
ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM3NTAyIGltcG9ydGVk
L2JsaW5rL2Zhc3QvbXVsdGljb2wvdmVydGljYWwtbHIvZmxvYXQtYmlnLWxpbmUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2UtYWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1t
YXBwaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvY29tcG9z
aXRpbmcvdGlsaW5nL2NvdmVyYWdlLWFkanVzdG1lbnQtc2Vjb25kYXJ5LXF1YWQtbWFwcGluZy1l
eHBlY3RlZC50eHQKaW5kZXggYzcwMjgwNmQwYWVlZjhiNmYzNWYxZWY0OGFkNDcxODRlMmY1Nzk2
My4uYTA0ZjRkZmJmZGI4MzY2NDczMDFjMTE0ODkzZWNhZjg0NWUwNGNjYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy90aWxpbmcvY292ZXJhZ2Ut
YWRqdXN0bWVudC1zZWNvbmRhcnktcXVhZC1tYXBwaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3RpbGluZy9jb3ZlcmFnZS1hZGp1
c3RtZW50LXNlY29uZGFyeS1xdWFkLW1hcHBpbmctZXhwZWN0ZWQudHh0CkBAIC0yMyw5ICsyMywx
MCBAQAogICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgICAgICAgICAo
b2Zmc2V0RnJvbVJlbmRlcmVyIHdpZHRoPTEgaGVpZ2h0PTEpCiAgICAgICAgICAgICAgICAgICAo
cG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAgICAgKGFuY2hvciAwLjUxIDAuNTAp
CiAgICAgICAgICAgICAgICAgICAoYm91bmRzIDU4My4wMCA1NzguMDApCiAgICAgICAgICAgICAg
ICAgICAoYmFja2luZ1N0b3JlQXR0YWNoZWQgMSkKLSAgICAgICAgICAgICAgICAgIChjaGlsZHJl
blRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFst
MzA3LjUwIC0yOTAuMDAgMS4wMCAtMS4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQorICAgICAg
ICAgICAgICAgICAgKGNoaWxkcmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4w
MCAxLjAwIDAuMDAgMC4wMF0gWy0zMDAuMDAgLTI5MC4wMCAxLjAwIC0xLjAwXSBbMC4wMCAwLjAw
IDAuMDAgMS4wMF0pCiAgICAgICAgICAgICAgICAgICAoY2hpbGRyZW4gMQogICAgICAgICAgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgogICAgICAgICAgICAgICAgICAgICAgIChwb3NpdGlvbiAw
LjAwIC00MDAuMDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDBmZTIyYTQwYzUwM2M2ZGYxMDdjZGY5NmIyMmIxZWIxNzEzMzAxNTMuLjZiMmE3MDk1NjFm
MjcxN2YzM2ZjN2U3MGMzYWYwMDZkOWZiOGZmOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMDAxLDkgKzMwMDEsNiBAQCBmYXN0L2NhbnZhcy9zZXQt
Y29sb3JzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIwMjk1OCBjc3MzL2ZpbHRl
cnMvc3ZnLWJsdXItZmlsdGVyLWNsaXBwZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0j
ICd0cmFuc2Zvcm0tYm94JyBzdXBwb3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50
cy4KLXdlYmtpdC5vcmcvYi8yMzc1NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvYW5pbWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJh
bnNmb3JtLWxheWVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIw
MzMwNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMv
cHJvcGVydGllcy12YWx1ZS0wMDEuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjAzMzA1IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNpdGlvbnMvcHJvcGVydGllcy12YWx1ZS1pbmhlcml0LTAwMS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMDMzNTYgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9wcm9wZXJ0aWVzLXZhbHVlLTAwMy5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvY29tcG9zaXRpbmcvdGlsaW5nL3BlcnNwZWN0aXZlLW9uLXNjcm9sbGVyLXRpbGUtY292ZXJh
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9jb21wb3NpdGlu
Zy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50
eHQKaW5kZXggY2I2OGMwZDFiZTFlNjY5YzcwY2VjMjQ0MmM3MTE3MTY2MzQwMTYzNC4uNGU4OWM1
OWExZDA0MzIxMzk3ODlmMzEzNjU2NGNjMjkzYTYyZDMyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Ny
b2xsZXItdGlsZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMS9jb21wb3NpdGluZy90aWxpbmcvcGVyc3BlY3RpdmUtb24tc2Nyb2xsZXItdGls
ZS1jb3ZlcmFnZS1leHBlY3RlZC50eHQKQEAgLTI0LDggKzI0LDkgQEAKICAgICAgICAgICAoY29u
dGVudHNTY2FsZSAxLjAwKQogICAgICAgICAgIChjaGlsZHJlbiAxCiAgICAgICAgICAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgICAgICAgICAoYW5jaG9yIDAuNTEgMC41MCkKICAgICAgICAgICAg
ICAgKGJvdW5kcyA1ODUuMDAgNTAwLjAwKQotICAgICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zv
cm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbMi45MyAyLjUw
IDEuMDAgLTAuMDFdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKKyAgICAgICAgICAgICAgKGNoaWxk
cmVuVHJhbnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAgMC4wMF0g
WzMuMDAgMi41MCAxLjAwIC0wLjAxXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCiAgICAgICAgICAg
ICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA1ODUuMDAgeCA1MDAuMDApCiAgICAgICAgICAg
ICAgIChjb3ZlcmFnZSByZWN0IDAuMDAsIDAuMDAgNTg1LjAwIHggNTAwLjAwKQogICAgICAgICAg
ICAgICAoaW50ZXJzZWN0cyBjb3ZlcmFnZSByZWN0IDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVmNDgzN2YwYTk4ZGZhZTNiNjAwYmRmY2M0ODljNjE0
ZTVhYjcyOGEuLjQ2Y2Y5Mzc1M2IxMzg3YTFjZTczODgyMzc3Y2EzZjBjZjVkNjcyYjEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMTk2LDkgKzIxOTYs
NiBAQCB3ZWJraXQub3JnL2IvMjI4MTc2IFsgQmlnU3VyIE1vbnRlcmV5IF0gZmFzdC90ZXh0L3Zh
cmlhYmxlLXN5c3RlbS1mb250LTIuaHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8yMzAzMjcgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvY3Jhc2h0ZXN0cy90
cmFuc2Zvcm0tbWFycXVlZS1yZXNpemUtZGl2LWltYWdlLTAwMS5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAotIyAndHJhbnNmb3JtLWJveCcgc3VwcG9ydCBpcyBicm9rZW4gZm9yIGNvbXBvc2l0ZWQg
ZWxlbWVudHMuCi13ZWJraXQub3JnL2IvMjM3NTUzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2FuaW1hdGlvbi90cmFuc2Zvcm0tYm94LXdpbGwtY2hh
bmdlLXRyYW5zZm9ybS1sYXllci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi0KICMgcmRhcjov
LzgzNTkxMDQwCiBbIE1vbnRlcmV5KyBdIGVkaXRpbmcvbWFjL2RpY3Rpb25hcnktbG9va3VwL2Rp
Y3Rpb25hcnktbG9va3VwLWlucHV0Lmh0bWwgWyBDcmFzaCBdCiBbIE1vbnRlcmV5KyBdIGVkaXRp
bmcvbWFjL2RpY3Rpb25hcnktbG9va3VwL2RpY3Rpb25hcnktbG9va3VwLWluc2lkZS1zZWxlY3Rp
b24uaHRtbCBbIENyYXNoIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggYjljNzQ5NTk1MmVlMWU4ZWMyZDI2ZGU0MDkxZjhjZWUwMWM1NTI4My4uMzEwMDc2
MDI5ZWU4MzVkMDljMmI0YmMwMTM3NWY5MjlmZTdiNjY1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkzOSw5ICs5MzksNiBAQCB3ZWJraXQub3JnL2Iv
MTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9t
dWx0aWNvbC1zaAogd2Via2l0Lm9yZy9iLzE0OTI0NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbXVsdGljb2wvbXVsdGljb2wtc3Bhbi1hbGwtYmxvY2stc2libGluZy0w
MDMueGh0IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTQ5MjQ1IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tdWx0aWNvbC9tdWx0aWNvbC1zcGFuLWFsbC1tYXJnaW4tbmVz
dGVkLWZpcnN0Y2hpbGQtMDAxLnhodCBbIFNraXAgXQogCi0jICd0cmFuc2Zvcm0tYm94JyBzdXBw
b3J0IGlzIGJyb2tlbiBmb3IgY29tcG9zaXRlZCBlbGVtZW50cy4KLXdlYmtpdC5vcmcvYi8yMzc1
NTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvYW5p
bWF0aW9uL3RyYW5zZm9ybS1ib3gtd2lsbC1jaGFuZ2UtdHJhbnNmb3JtLWxheWVyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLQogIyBUT0RPIEVYSUYtcmVzb2x1dGlvbiBpcyBub3Qgc3VwcG9y
dGVkCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RlbnNpdHktc2l6ZS1jb3JyZWN0
aW9uLyBbIFNraXAgXQogCg==
</data>
<flag name="review"
          id="485807"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>