<?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>231009</bug_id>
          
          <creation_ts>2021-09-30 01:00:02 -0700</creation_ts>
          <short_desc>Cocoa WebGL should support UI side compositing</short_desc>
          <delta_ts>2021-12-14 21:15:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234169</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>231010</dependson>
    
    <dependson>231427</dependson>
    
    <dependson>231804</dependson>
    
    <dependson>233123</dependson>
          <blocked>217211</blocked>
    
    <blocked>233756</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798778</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-30 01:00:02 -0700</bug_when>
    <thetext>Cocoa WebGL support UI side compositing

Currently WebGL needs IOKit in WP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798779</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-30 01:01:08 -0700</bug_when>
    <thetext>&lt;rdar://83437059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804268</commentid>
    <comment_count>2</comment_count>
      <attachid>441214</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-14 07:34:42 -0700</bug_when>
    <thetext>Created attachment 441214
Patch for feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804271</commentid>
    <comment_count>3</comment_count>
      <attachid>441215</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-14 07:42:29 -0700</bug_when>
    <thetext>Created attachment 441215
Patch for feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804685</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-14 21:23:59 -0700</bug_when>
    <thetext>I like the idea of a &quot;content provider&quot;. Can it be a function on GraphicsLayerClient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804781</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-15 06:29:53 -0700</bug_when>
    <thetext>&gt; I like the idea of a &quot;content provider&quot;. Can it be a function on GraphicsLayerClient?

In a way &quot;yes&quot;, considering that current GraphicsLayerClient can provide contents via painting via &quot;draws content&quot;.

However, in practice &quot;no&quot;, as the GraphicsLayerClient is general purpose and closed, the &quot;content provider&quot; is platform-specific and open-ended.

I&apos;d view it the other way, in that eventually GraphicsLayerClient::paintContents could be expressed as a &quot;content provider&quot;, and RenderLayerBacking (or RenderLayers?) could be the instance that returns &quot;paintContents content provider&quot;.

RenderLayerBacking does now: m_layer-&gt;setDrawsContent(true)
Instead it would do: m_layer-&gt;setContentFromProvider(this);

RenderLayerBacking does now: m_layer-&gt;setDrawsContent(false);
Instead it would do: m_layer-&gt;setContentFromProvider(nullptr); (or -&gt;setNoContents());

However, it&apos;s probably not within my expertise to implement that part, and it&apos;d be a refactor without much benefit..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816509</commentid>
    <comment_count>6</comment_count>
      <attachid>444701</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-18 10:51:02 -0800</bug_when>
    <thetext>Created attachment 444701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816750</commentid>
    <comment_count>7</comment_count>
      <attachid>444701</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-11-18 22:35:07 -0800</bug_when>
    <thetext>Comment on attachment 444701
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsLayer.h:525
&gt;      virtual void setContentsToPlatformLayer(PlatformLayer*, ContentsLayerPurpose) { }

Do you have a plan to remove setContentsToPlatformLayer?

&gt; Source/WebCore/platform/graphics/GraphicsLayer.h:526
&gt; +    virtual void setContentsFromDisplayDelegate(RefPtr&lt;GraphicsLayerContentsDisplayDelegate&gt;&amp;&amp;, ContentsLayerPurpose);

This name sounds inconsistent to me.
Other methods setting the contents layer are named setContentsTo*.
I prefer setContentsToDisplayDelegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816752</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-11-18 22:39:24 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #5)
&gt; RenderLayerBacking does now: m_layer-&gt;setDrawsContent(true)
&gt; Instead it would do: m_layer-&gt;setContentFromProvider(this);

setDrawsContent makes the primary layer paintable, not the content layer.
I think it should be setPrimaryProvider or setPrimaryToProvider for the consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816783</commentid>
    <comment_count>9</comment_count>
      <attachid>444791</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-19 01:36:42 -0800</bug_when>
    <thetext>Created attachment 444791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816809</commentid>
    <comment_count>10</comment_count>
      <attachid>444804</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-19 05:10:22 -0800</bug_when>
    <thetext>Created attachment 444804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816815</commentid>
    <comment_count>11</comment_count>
      <attachid>444807</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-19 05:31:54 -0800</bug_when>
    <thetext>Created attachment 444807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817277</commentid>
    <comment_count>12</comment_count>
      <attachid>444961</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-22 06:09:38 -0800</bug_when>
    <thetext>Created attachment 444961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817311</commentid>
    <comment_count>13</comment_count>
      <attachid>444976</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-22 10:36:11 -0800</bug_when>
    <thetext>Created attachment 444976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817399</commentid>
    <comment_count>14</comment_count>
      <attachid>445007</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-22 23:44:46 -0800</bug_when>
    <thetext>Created attachment 445007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817411</commentid>
    <comment_count>15</comment_count>
      <attachid>445014</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-23 00:50:11 -0800</bug_when>
    <thetext>Created attachment 445014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817432</commentid>
    <comment_count>16</comment_count>
      <attachid>445021</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-23 03:32:16 -0800</bug_when>
    <thetext>Created attachment 445021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817574</commentid>
    <comment_count>17</comment_count>
      <attachid>445067</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-23 22:34:59 -0800</bug_when>
    <thetext>Created attachment 445067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817617</commentid>
    <comment_count>18</comment_count>
      <attachid>445089</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-24 04:57:12 -0800</bug_when>
    <thetext>Created attachment 445089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819139</commentid>
    <comment_count>19</comment_count>
      <attachid>445537</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-01 00:30:26 -0800</bug_when>
    <thetext>Created attachment 445537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819174</commentid>
    <comment_count>20</comment_count>
      <attachid>445550</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-01 04:24:47 -0800</bug_when>
    <thetext>Created attachment 445550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819195</commentid>
    <comment_count>21</comment_count>
      <attachid>445561</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-01 05:04:32 -0800</bug_when>
    <thetext>Created attachment 445561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819212</commentid>
    <comment_count>22</comment_count>
      <attachid>445569</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-01 06:26:19 -0800</bug_when>
    <thetext>Created attachment 445569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819252</commentid>
    <comment_count>23</comment_count>
      <attachid>445576</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-01 08:22:15 -0800</bug_when>
    <thetext>Created attachment 445576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819328</commentid>
    <comment_count>24</comment_count>
      <attachid>445594</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-01 11:20:02 -0800</bug_when>
    <thetext>Created attachment 445594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819607</commentid>
    <comment_count>25</comment_count>
      <attachid>445686</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-02 00:43:30 -0800</bug_when>
    <thetext>Created attachment 445686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819630</commentid>
    <comment_count>26</comment_count>
      <attachid>445695</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-02 02:10:35 -0800</bug_when>
    <thetext>Created attachment 445695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819646</commentid>
    <comment_count>27</comment_count>
      <attachid>445702</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-02 03:56:28 -0800</bug_when>
    <thetext>Created attachment 445702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819661</commentid>
    <comment_count>28</comment_count>
      <attachid>445713</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-02 05:07:24 -0800</bug_when>
    <thetext>Created attachment 445713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819677</commentid>
    <comment_count>29</comment_count>
      <attachid>445716</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-02 06:41:40 -0800</bug_when>
    <thetext>Created attachment 445716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819679</commentid>
    <comment_count>30</comment_count>
      <attachid>445717</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-02 06:45:04 -0800</bug_when>
    <thetext>Created attachment 445717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819737</commentid>
    <comment_count>31</comment_count>
      <attachid>445717</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-02 09:48:57 -0800</bug_when>
    <thetext>Comment on attachment 445717
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsLayer.h:526
&gt; +    virtual void setContentsToDisplayDelegate(RefPtr&lt;GraphicsLayerContentsDisplayDelegate&gt;&amp;&amp;, ContentsLayerPurpose);

The name is a bit odd. Maybe setContentsDisplayDelegate?

Does calling setContentsToSolidColor() or setContentsToPlatformLayer() remove the delegate?

&gt; Source/WebCore/platform/graphics/GraphicsLayerContentsDisplayDelegate.h:47
&gt; +    virtual void willDelegateDisplay(PlatformCALayer&amp;);

This name is ambiguous. On first reading I expect it to return a bool. Does it mean &quot;prepare to render a frame&quot;?

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1363
&gt; +        m_contentsLayer = createPlatformCALayer(PlatformCALayer::LayerTypeContentsProvidedLayer, this);

Naively I would expect that the GraphicsLayerContentsDisplayDelegate would do the layer creation?

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1369
&gt; +        m_contentsLayer-&gt;setBackingStoreAttached(true);
&gt; +        m_contentsLayer-&gt;setAcceleratesDrawing(true);

I feel like these should be under delegate control too?

&gt; Source/WebCore/platform/graphics/cocoa/WebProcessGraphicsContextGLCocoa.mm:49
&gt; +    }
&gt; +    void display(PlatformCALayer&amp; layer) final

Blank lines between functions please.

&gt; Source/WebCore/platform/graphics/mac/WebLayer.mm:86
&gt; +    if (!layer-&gt;owner()-&gt;platformCALayerDrawsContent() &amp;&amp; !layer-&gt;owner()-&gt;platformCALayerDelegatesDisplay(layer.get()))

Maybe we should add a function that does both these checks.

&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm:56
&gt; +    }
&gt; +    void display(WebCore::PlatformCALayer&amp; layer) final

Blank lines please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819956</commentid>
    <comment_count>32</comment_count>
      <attachid>445717</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-02 16:59:46 -0800</bug_when>
    <thetext>Comment on attachment 445717
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsLayer.h:526
&gt;&gt; +    virtual void setContentsToDisplayDelegate(RefPtr&lt;GraphicsLayerContentsDisplayDelegate&gt;&amp;&amp;, ContentsLayerPurpose);
&gt; 
&gt; The name is a bit odd. Maybe setContentsDisplayDelegate?
&gt; 
&gt; Does calling setContentsToSolidColor() or setContentsToPlatformLayer() remove the delegate?

Just a idea. What about using overloading for the methods?

    virtual void setContents(Image*) { }
    virtual void setContents(const Color&amp;) { }
    virtual void setContents(RefPtr&lt;GraphicsLayerContentsDisplayDelegate&gt;&amp;&amp;, ContentsLayerPurpose);
    virtual void setContents(RefPtr&lt;Model&gt;&amp;&amp;) { }

&gt; Source/WebKit/WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp:73
&gt; +        , m_layerContentsDisplayDelegate(PlatformLayerDisplayDelegate::create(makeUnique&lt;WCPlatformLayerGCGL&gt;(m_graphicsContextGLIdentifier)))

We no longer need WCPlatformLayerGCGL. I will remove it in follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820111</commentid>
    <comment_count>33</comment_count>
      <attachid>445846</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-03 05:30:07 -0800</bug_when>
    <thetext>Created attachment 445846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820218</commentid>
    <comment_count>34</comment_count>
      <attachid>445872</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-03 10:46:39 -0800</bug_when>
    <thetext>Created attachment 445872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820504</commentid>
    <comment_count>35</comment_count>
      <attachid>445990</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-05 13:23:39 -0800</bug_when>
    <thetext>Created attachment 445990
Patch

* Fixed WinCairo build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820648</commentid>
    <comment_count>36</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-06 10:10:53 -0800</bug_when>
    <thetext>Thanks Fujii!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820967</commentid>
    <comment_count>37</comment_count>
      <attachid>446150</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-07 03:13:12 -0800</bug_when>
    <thetext>Created attachment 446150
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820969</commentid>
    <comment_count>38</comment_count>
      <attachid>446151</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-07 03:37:10 -0800</bug_when>
    <thetext>Created attachment 446151
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820981</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 04:22:35 -0800</bug_when>
    <thetext>Committed r286596 (?): &lt;https://commits.webkit.org/r286596&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446151.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821744</commentid>
    <comment_count>40</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-12-08 13:03:28 -0800</bug_when>
    <thetext>I believe the changes in https://trac.webkit.org/changeset/286596/webkit

Caused these two tests to timeout on iOS:
compositing/tiling/tiled-reflection-inwindow.html
fast/forms/ios/focus-select-and-switch-tabs.html

I don&apos;t think EWS caught this because it was considered flaky during the run. current history shows a very clear regression point though

History:
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;test=editing%2Fpasteboard%2Fdom-paste%2Fdom-paste-requires-user-gesture.html&amp;test=fast%2Fforms%2Fios%2Ffocus-select-and-switch-tabs.html&amp;platform=ios

Tracking in: https://bugs.webkit.org/show_bug.cgi?id=234032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821747</commentid>
    <comment_count>41</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2021-12-08 13:07:16 -0800</bug_when>
    <thetext>Reverted r286596 for reason:

broke 2 tests on iOS

Committed r286709 (244986@trunk): &lt;https://commits.webkit.org/244986@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822655</commentid>
    <comment_count>42</comment_count>
      <attachid>446713</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-10 05:27:24 -0800</bug_when>
    <thetext>Created attachment 446713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822689</commentid>
    <comment_count>43</comment_count>
      <attachid>446723</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-10 07:17:31 -0800</bug_when>
    <thetext>Created attachment 446723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822694</commentid>
    <comment_count>44</comment_count>
      <attachid>446726</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-10 07:29:00 -0800</bug_when>
    <thetext>Created attachment 446726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822706</commentid>
    <comment_count>45</comment_count>
      <attachid>446730</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-10 08:02:20 -0800</bug_when>
    <thetext>Created attachment 446730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822726</commentid>
    <comment_count>46</comment_count>
      <attachid>446730</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-10 08:34:58 -0800</bug_when>
    <thetext>Comment on attachment 446730
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/WebProcessGraphicsContextGLCocoa.mm:89
&gt; +    const bool m_isOpaque;
&gt; +    const float m_contentsScale;
&gt; +    std::unique_ptr&lt;IOSurface&gt; m_displayBuffer;

Doesn&apos;t really matter but I would flip the ordering to avoid padding.

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:140
&gt; +    // FIXME: This should be removed and m_bufferHandle should be used to ref the buffer once ShareableBitmap::Handle
&gt; +    // can be encoded multiple times.

File a bug to track?

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:117
&gt; +    // FIXME: For simplicity this should be moved to the end of display() once the buffer handles can be created once
&gt; +    // and stored in m_bufferHandle.

Reference the same bug.

&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm:91
&gt; +    const bool m_isOpaque;
&gt; +    const float m_contentsScale;
&gt; +    MachSendRight m_displayBuffer;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822914</commentid>
    <comment_count>47</comment_count>
      <attachid>446789</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-10 13:00:38 -0800</bug_when>
    <thetext>Created attachment 446789
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823440</commentid>
    <comment_count>48</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-13 01:35:25 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 446789 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823442</commentid>
    <comment_count>49</comment_count>
      <attachid>446976</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-13 01:38:45 -0800</bug_when>
    <thetext>Created attachment 446976
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823457</commentid>
    <comment_count>50</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-13 02:38:52 -0800</bug_when>
    <thetext>Committed r286943 (245168@main): &lt;https://commits.webkit.org/245168@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446976.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824236</commentid>
    <comment_count>51</comment_count>
      <attachid>446976</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-14 21:15:33 -0800</bug_when>
    <thetext>Comment on attachment 446976
Patch for landing

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:33104
&gt; +				7B582DD82716F55B004B92D0 /* (null) in Headers */,

What?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441214</attachid>
            <date>2021-10-14 07:34:42 -0700</date>
            <delta_ts>2021-10-14 07:42:24 -0700</delta_ts>
            <desc>Patch for feedback</desc>
            <filename>bug-231009-20211014173439.patch</filename>
            <type>text/plain</type>
            <size>101803</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4NDQ1NWFhMWZiMmFl
YzFkYWRhNWMwOWVjNzUwOGRmYjhjOTQ4Yi4uODYwZWFmZmU1ZmE3MGQ3NDZjNGQwNzg2NWRiMzky
OTZiNGMzMTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMS0xMC0xNCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0t
LQorICAgICAgICBXSVA6IFRoaXMgaXMgYSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIHRvIGdldCBm
ZWVkYmFjayBvbiB3aGF0CisgICAgICAgIGtpbmQgb2YgYWJzdHJhY3Rpb24gc2hvdWxkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQgcmV0dXJuIGluIG9yZGVyCisgICAgICAgIGZvciBHcmFwaGljc0xh
eWVyIHRvIGJlIGFibGUgdG8gcmVhZCB0aGUgY2FudmFzIHJlbmRlcmluZyBjb250ZXh0CisgICAg
ICAgIGltYWdlIHJlcGVhdGVkbHkgZWFjaCB0aW1lIGNhbnZhcyByZW5kZXJpbmcgY29udGV4dCBp
cyBwcmVwYXJlZCBmb3IKKyAgICAgICAgZGlzcGxheS4KKyAgICAgICAgQ3VycmVudGx5IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQgcmV0dXJucyBQbGF0Zm9ybUxheWVyLCBidXQgZm9yIFVJLXNpZGUK
KyAgICAgICAgY29tcG9zaXRpbmcgdGhpcyBjYW5ub3QgYmUgdGhlIGNhc2UuCisgICAgICAgIEN1
cnJlbnRseSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGNhbm5vdCByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyLAorICAgICAgICBhcyB0aGUgY29uY3JldGUgdHlwZSBvZiBQbGF0Zm9ybUNBTGF5ZXIgKCpS
ZW1vdGUgb3IgKkNvY29hKSBpcyBub3QKKyAgICAgICAga25vd24gYXQgdGhlIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQgaW5zdGFudGlhdGlvbiB0aW1lLiBUbyBrbm93IHRoaXMsCisgICAgICAgIHdl
J2QgbmVlZCB0byBleHRlbmQgR3JhcGhpY3NMYXllckZhY3RvcnkgYW5kIHBhc3MgdGhhdCBkb3du
IHRvd2FyZHMKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dC4KKyAgICAgICAgQ3VycmVu
dGx5LCB0aGVyZSBpcyBubyBjcm9zcy1wbGF0Zm9ybSwgY3Jvc3MtY29tcG9zaXRvciAocmVtb3Rl
IHZzIGluIHByb2Nlc3MpCisgICAgICAgIHNoYXJlZCBhYnN0cmFjdGlvbiB0aGF0IGNvdWxkIGJl
IHVzZWQgdG8gcmVwcmVzZW50IHNldHRpbmcgSU9TdXJmYWNlcyBjb250aW51b3VzbHkuCisgICAg
ICAgIC0tLQorCisgICAgICAgIEludHJvZHVjZSBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRl
ciwgd2hpY2ggaGFzIHRoZSByZXNwb25zaWJpbGl0eSBvZgorICAgICAgICAgMSkgQ3JlYXRlIGNv
bXBvc2l0b3Igb2JqZWN0cyB0byBzaG93IHRoZSBpdGVtIGluIHRoZSAnY29udGVudHMnIHBhcnQg
b2YKKyAgICAgICAgIHRoZSBjb21wb3NpdG9yIGxheWVyCisgICAgICAgICAyKSBGb3J3YXJkIGFu
ZCAocG90ZW50aWFsbHkpIGZvcm1hdCB0aGUgaXRlbSBjb250ZW50cyB0byB0aGUgZm9ybWF0IHRo
YXQKKyAgICAgICAgdGhlIGNvbXBvc2l0b3Igb2JqZWN0cyBuZWVkIHRoZSBpdGVtLgorCisgICAg
ICAgIFRoaXMgc3RydWN0dXJlIGFsbG93cyBmb3IgdGhlIGl0ZW0gKEdyYXBoaWNzQ29udGV4dEdM
KiwgTWVkaWFQbGF5ZXJQcml2YXRlKiwgTW9kZWwqKQorICAgICAgICB0byBkZWNpZGUgd2hhdCBr
aW5kIG9mIGNvbXBvc2l0b3Igb2JqZWN0IHRvIGNyZWF0ZSAoRm9yIENBOiBMYXllclR5cGUqKS4K
KyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgYWxsb3dzIGZvciB0aGUgY29tcG9zaXRvciB0byBkZWNp
ZGUgd2hhdCBvcGVyYXRpb24gc2V0cyB0aGUgY29udGVudHMKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLCBmdXR1cmUgR3JhcGhpY3NMYXllckNBTGF5ZXJD
b250ZW50c1Byb3ZpZGVyKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhpcyBmb3IgV2ViR0wgcmVu
ZGVyaW5nIGNvbnRleHRzIG9uIENvY29hOgorICAgICAgICAgMSkgQ3JlYXRlIFBsYXRmb3JtQ0FM
YXllciBvZiBMYXllclR5cGUgIklPU3VyZmFjZSBjb250ZW50cyIKKyAgICAgICAgIDIpIFNldCB0
aGUgZGlzcGxheSBidWZmZXIgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdG8KKyAgICAgICAg
ICAgIHRoZSBjb250ZW50cyBwcm9wZXJ0eSBvZiBQbGF0Zm9ybUNBTGF5ZXIKKworICAgICAgICBX
SVA6IEltcGxlbWVudHMgY3VycmVudCBpbi1wcm9jZXNzIGNvZGVwYXRoIGZvciBXZWJHTCBwYXJ0
aWFsbHkgaW4gYSB3YXkgdGhhdAorICAgICAgICBhbGxvd3MgZm9yIFVJLXNpZGUgY29tcG9zaXRp
bmcgcGFydCBiZSBpbXBsZW1lbnRlZC4gVGhlIGltcGxlbWVudGF0aW9uIGlzIHBhcnRpYWwsCisg
ICAgICAgIHRoZSBXZWJHTCBpbWFnZSBpcyB1cHNpZGUgZG93biBhbmQgbm90IGFsbCBjb21wb3Np
dG9yIGxheWVyIHByb3BlcnRpZXMgYXJlIHNldC4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9P
UFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjpsYXllckNvbnRlbnRzUHJvdmlkZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c1Byb3ZpZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3Jt
TGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNGcm9tUHJvdmlk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbnRlbnRz
UHJvdmlkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tUHJvdmlkZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyQ0EuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmguCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRl
cjo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRl
bnRzUHJvdmlkZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9HcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcjo6
Y29udGVudHNGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVySU9TdXJm
YWNlQ29udGVudHNQcm92aWRlcjo6c2V0TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgICgt
W1dlYkNvbnRlbnRzSU9TdXJmYWNlTGF5ZXIgaW5pdF0pOgorICAgICAgICAoLVtXZWJDb250ZW50
c0lPU3VyZmFjZUxheWVyIGRpc3BsYXldKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYSk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChw
cmludExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNw
bGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtE
aXNwbGF5QnVmZmVySW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmxheWVyQ29udGVudHNQcm92aWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZTo6bGF5ZXJDb250ZW50c1Byb3ZpZGVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1T
d2FwQ2hhaW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvbnRlbnRQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aERldmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFx
dWU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgc2V0VHJhbnNmb3JtOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXZWJHTExheWVyIHNldEFuY2hvclBvaW50Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXZWJHTExheWVyIHN3YXBDaGFpbl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHByZXBhcmVGb3JEaXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
YkdMTGF5ZXIgZGlzcGxheV0pOiBEZWxldGVkLgorICAgICAgICAoV2ViR0xMYXllclN3YXBDaGFp
bjo6cHJlc2VudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKwogMjAyMS0xMC0x
MiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVpbGQtdGlt
ZSBwZXJmXSBGb3J3YXJkLWRlY2xhcmUgbW9yZSB0aGluZ3MgaW4gRG9jdW1lbnQuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2YTA3M2I5M2FiYzM2NzU3NTk2NTQ1NzQ2Yjc3NDY1OGJiMGJiMGNhLi5lMjk0MjJlNTBh
Mjc1YWI0NTQxZTNkNGZjZTUxOTA5YzU1OTYwNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDIxLTEwLTE0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAg
ICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR1BVIHByb2Nlc3Mgc2lkZSBjaGFuZ2VzIGZvciBVSSBzaWRlIGNvbXBv
c2l0aW5nLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
UGFzc3dvcmRGaWVsZC5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZU1vZGVsSG9zdGluZy5tbToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nOjpkdW1wQWRkaXRpb25hbFBy
b3BlcnRpZXMpOgorICAgICAgICBVbmlmaWVkIGJ1aWxkIGZpeGVzLgorCiAyMDIxLTEwLTEyICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtCdWlsZC10aW1lIHBl
cmZdIEZvcndhcmQtZGVjbGFyZSBtb3JlIHRoaW5ncyBpbiBEb2N1bWVudC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCmluZGV4IGJjZmNlYjc5MzEzZWMwNWMzNTRjNWZlZmUzNGFiNTEwYWIzM2U3
MTcuLjU0ODlhMWFhZGMxOWM1ZTlmN2Y2ZjVkZGM0MWMxMWE5OTJkM2YxNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCkBAIC0yODIsNiArMjgyLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAKIAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVy
Lm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnND
b2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tCkBAIC0zMjgsMTEgKzMyOSwxMiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2VQb29sQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5t
bQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQogCisKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q2FzY2FkZUNvcmVUZXh0LmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC02MzUsNiArNjM3
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9HcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVmlkZW9Db250YWluZXJMYXllci5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBhNGMwYTc2MjdjMzc4MWRmY2QwNDkwNmZjNTIzMzA5YzkwNzMw
YzJjLi5lNTJkOTk2OTI1MjIyNDYxNjFmNDZmNWM4NTAyYzZkNTkxMGFhYzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTMyMCw2ICszMjAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlckNBLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJQb29sLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FM
YXllci5jcHAKQEAgLTMzMyw2ICszMzQsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViU3lz
dGVtQmFja2Ryb3BMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRC
YWNraW5nTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlZpZGVvQ29udGFp
bmVyTGF5ZXIubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL0dyYXBoaWNzTGF5ZXJJT1N1
cmZhY2VDb250ZW50c1Byb3ZpZGVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvRmxvYXRQb2ludENHLmNwcApAQCAtMzg1LDkgKzM4Nyw5IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KK3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlk
ZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
Q2FzY2FkZUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggOWY4NWU0OTg2YzUzYTFj
YzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgzYzg2ZDI3NTY1NGNhZGMx
Y2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4ICsyMDQ3Miw2IEBAIF9P
QkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfTUVUQUNMQVNT
XyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVs
bFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cK
LV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNTXyRfV2ViR0xMYXllcgog
X09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRfV2ViTGF5ZXIKIF9PQkpD
X0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0MSw2IEBAIF9PQkpDX0lW
QVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhpdFdhcm5pbmcKIF9PQkpD
X0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fdGFyZ2V0CiBfT0JKQ19J
VkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2FjdGlvbgogX09CSkNfSVZB
Ul8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVsZAotX09CSkNfSVZBUl8k
X1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2xheWVyT3du
ZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmltcAogX09CSkNfSVZBUl8k
X1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNfSVZBUl8kX1dlYlNjcmlw
dE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI1YTRiNGQ2YjcwMjQ3MzA3NWYy
OThmMzlhYzM5NjQ1OGIyN2NjZWEuLjg3YzllNmUyYmZkNWNiZmNkMzM2Y2YzZDlhN2U3N2QyN2Iy
M2NlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0MzAsNyArMTQzMCw2IEBACiAJCTQ5RUNFQjcwMTQ5OTc5MEQwMENERDNB
NCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5
RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxM0YxMDUx
OTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07CiAJCTQ5
RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNDExMDUxOTY5
NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87IH07Ci0JCTQ5RkZCRjNG
MTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xM
YXllci5oICovOyB9OwogCQk0QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0
ZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBOUUx
QUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkE5QzFBQUY1RTZD
MDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkFBMjFBQUY1RUEyMDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBQTAxQUFGNUVBMjAwNjI4MDNCIC8qIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjM1NCw2ICsyMzUzLDggQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjU4MkRENjI3MTZGNTVBMDA0QjkyRDAgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3QjU4MkREQzI3MTcxODhCMDA0QjkyRDAgLyogR3JhcGhpY3NMYXll
cklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNTgyRERBMjcxNzE4ODkwMDRCOTJEMCAvKiBHcmFwaGljc0xh
eWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdM
RVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5
MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTky
MDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5
MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAw
M0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODczNCw4ICs4NzM1LDYgQEAK
IAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlG
QzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTgg
LyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGQzEyOUIy
NDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybUFz
c29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMEZGQTlC
MUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY4NSw2ICsxMDY4
NCwxMSBAQAogCQk3QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xD
VkFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlE
MjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1
ODJERDYyNzE2RjU1QTAwNEI5MkQwIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c1By
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTgyREQ5MjcxNzE4NzUw
MDRCOTJEMCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlckNBLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyQ0EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjU4MkREQTI3MTcxODg5MDA0QjkyRDAgLyogR3JhcGhpY3NM
YXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1ODJEREIyNzE3MTg4QTAwNEI5MkQwIC8qIEdyYXBo
aWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlk
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTgyRERFMjcxNzE4RDAwMDRC
OTJEMCAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5jcHA7IHBhdGggPSBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFGIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNTUzLDYgKzIwNTU3LDggQEAKIAkJNDk1ODc4MUUxMkE1N0RCQzAwNzIzOEFD
IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk3QjU4MkREQjI3MTcxODhBMDA0QjkyRDAgLyogR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRl
bnRzUHJvdmlkZXIubW0gKi8sCisJCQkJN0I1ODJEREEyNzE3MTg4OTAwNEI5MkQwIC8qIEdyYXBo
aWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLmggKi8sCiAJCQkJMEY1RTIwMDUxOEU3
NzFGQzAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oICovLAogCQkJCTQ5NTg3
ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gKi8sCiAJ
CQkJMEYxMzE2M0YxNkVEMENERTAwMzVDQzA0IC8qIFBsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0g
Ki8sCkBAIC0yMDU3NCw2ICsyMDU4MCw3IEBACiAJCQkJNDk1ODc4MUUxMkE1N0RCQzAwNzIzOEFD
IC8qIGNvY29hICovLAogCQkJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyQ0EuY3BwICovLAogCQkJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyQ0EuaCAqLywKKwkJCQk3QjU4MkREOTI3MTcxODc1MDA0QjkyRDAgLyogR3JhcGhpY3NMYXll
ckNvbnRlbnRzUHJvdmlkZXJDQS5jcHAgKi8sCiAJCQkJN0FBM0E2OUQxOTRCNTlCNjAwMUNCRDI0
IC8qIExheWVyUG9vbC5jcHAgKi8sCiAJCQkJN0FBM0E2OUUxOTRCNTlCNjAwMUNCRDI0IC8qIExh
eWVyUG9vbC5oICovLAogCQkJCTBGREY0NUE2MUJEMUM2RkQwMEU0RkE4QyAvKiBQbGF0Zm9ybUNB
QW5pbWF0aW9uLmNwcCAqLywKQEAgLTI3MjUxLDYgKzI3MjU4LDcgQEAKIAkJCQkwRjU4MEIwOTBG
MTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJBMjY5
MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCNTgyREQ2MjcxNkY1
NUEwMDRCOTJEMCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oICovLAogCQkJCTFB
QzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJ
CTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8s
CiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmgg
Ki8sCkBAIC0yNzUxNCw2ICsyNzUyMiw3IEBACiAJCQkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3
IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwICovLAogCQkJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVC
MjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJQ0RGOTk1MDEyNEMyODE0OTAw
MkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAgKi8sCisJCQkJN0I1ODJEREUyNzE3
MThEMDAwNEI5MkQwIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNw
cCAqLywKIAkJCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVX
ZWJNLmggKi8sCiAJCQkJRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAq
LywKIAkJCQlGNDhEMkFBNDIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKQEAg
LTI3NTYxLDggKzI3NTcwLDYgQEAKIAkJCQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyogV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMubW0gKi8sCiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNEIC8q
IFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4RTAw
MEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlGRkJG
M0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2
NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJB
NEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkpOwpAQCAt
MzI0ODQsNiArMzI0OTEsNyBAQAogCQkJCUE4MTg1RjQ1MDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1
bWVudEZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDkyRjUxMzIy
NjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QjU4MkREQzI3MTcxODhCMDA0QjkyRDAgLyogR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRl
bnRzUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODI2QkYyMjNGQjU5NzcwMEI5MjJC
MSAvKiBEb2N1bWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERUZEQTBCMjcx
MjI2MzgwMDU1NTlBNyAvKiBEb2N1bWVudElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
NkQzNzM2MEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNTMzMiw2ICszNTM0MCw3IEBACiAJCQkJQTUyQjM0OEYxRkEzQkRBNjAwOEI2MjQ2IC8q
IFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlBQ0Y5MjFG
OTdFN0RBMDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTdBNTM1RDFGNTg5OUZFMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTYxMUYzRUJD
ODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUyQjM0OTYxRkEzRTI5MDAwOEI2MjQ2IC8qIFNlcnZpY2VX
b3JrZXJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjA4NSw3ICszNjA5NCw2
IEBACiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVu
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQyRDMyRjAwMDlENDQ3IC8qIFdl
YkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RkZCRjNGMTFDOTNFRTMwMDZB
NzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0
MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVDMzYy
RDkyNUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUM3QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmplY3QuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJkNWMyNWI2YmFlYTIyM2Y1Njdi
Li40M2FjMTE1Y2M5NDZmMDFhNDI0Nzk2NjgyMzFjYjk5YmM1N2E0NmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fu
dmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZh
c0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiArODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c1Byb3ZpZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwogUGl4ZWxGb3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxGb3JtYXQoKSBj
b25zdAogewogICAgIHJldHVybiBQaXhlbEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzcyMDA3
OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGViOTk3OGU4MDIzZS4uNGQyNDdjNjZhNGUzY2VjZGRjNGE2
NzQzNmRiZTk1MmE3Yjk0NGIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gdXNlZCBmb3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgeyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEdy
YXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25z
dDsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQogICAgIHZv
aWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihib29sIGhhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCBkNmRlZjUyY2RkZmIxNjIwYmVjZGRiYmUwNzJjZmI5NmRjYjYzYjhlLi40MDc1
NDU5ZjI2MTQ5ZDJhNmU5NTZiYTEzZWI4ZmE2NjI1NTNhOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgpAQCAtNjQzMiw5ICs2NDMzLDExIEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxv
c3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2Vk
OwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c1Byb3ZpZGVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5UmVzb2x1
dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAgaWYgKGlzQ29udGV4
dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNQcm92aWRlcigpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChX
ZWJHTFNoYXJlZE9iamVjdCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGI3MTcwZDJiZDcxZjEx
MTc1ODg2ZjExMzdkMTFlMjIyYjQzMjUyYjEuLmFlYmMxZTU1MzhjZDAzMWFlOGQwZDA3MDhlODhi
NzQ5NzYxYTY3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAK
ICAgICBHcmFwaGljc0NvbnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHQuZ2V0KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3Vw
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaAppbmRleCBlZGFhNGNlNWVhNzJlNzMwYmM1MjU0NmM3MDA2ZWQyMzcyNzM5NjBk
Li45Y2QwYjc4OTBlNmFjOGY2MjgzNzg4NDUyYmM3ODhmZjY2YTEwYjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c1By
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlk
ZXI+IGxheWVyQ29udGVudHNQcm92aWRlcigpIGNvbnN0ID0gMDsKIAogICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIGJvb2wgaGFzQWxwaGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpAQCAtMTI3
MSw3ICsxMjcxLDkgQEAgcHVibGljOgogICAgIC8vIGVycm9yIGxpc3QuIFJldHVybiB0cnVlIGlm
IGF0IGxlYXN0IG9uZSBlcnJvciBpcyBtb3ZlZC4KICAgICB2aXJ0dWFsIGJvb2wgbW92ZUVycm9y
c1RvU3ludGhldGljRXJyb3JMaXN0KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KCkgPSAwOworICAgIC8vIFByZXBhcmVzIHRoZSBjb250ZXh0IGZvciBkaXNwbGF5
LgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBwcmVwYXJhdGlvbiBwcm9kdWNlZCBhIG5ldyBmcmFt
ZS4KKyAgICB2aXJ0dWFsIGJvb2wgcHJlcGFyZUZvckRpc3BsYXkoKSA9IDA7CiAKICAgICAvLyBG
SVhNRTogc2hvdWxkIGJlIHJlbW92ZWQsIGNhbGxlciBzaG91bGQga2VlcCB0cmFjayBvZiBjaGFu
Z2VkIHN0YXRlLgogICAgIHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IDU2YTM3OWY4M2MwM2M5MDIyOTZkNmY1NTYxYjNlMWM2Zjk4YjZhNzEuLjIyZWZhN2I3
MDE4N2I5OWYxMTM4N2RjZDdiMDY1ZTZjZWNkNTk1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c1By
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEz
LDEwIEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNGcm9tUHJvdmlkZXIoUmVmUHRyPEdyYXBoaWNz
TGF5ZXJDb250ZW50c1Byb3ZpZGVyPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkKK3sKK30KKwog
dm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImIGNvbG9yLCBmbG9h
dCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDIxOWY3NTMwY2RiYzE0MTQ5
MTczMDllYjEzNjc4YTExOTZlYTM4Y2YuLmI3ODIwYTY2MTlhYzc2NjM2YzcwZWRhOTIyZGY2YzZk
NDE5YjI2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NMYXllckZh
Y3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcjsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21Qcm92aWRlcihSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
UHJvdmlkZXI+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4m
JikgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9k
ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYzk3M2YwMWE4ZTM5Y2ZjMDc3YWIwOWMwNGE2YjFhNDljNDA1YTZlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllckNvbnRlbnRzUHJvdmlkZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKworI2lmIFVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNlbmRpZgorbmFtZXNwYWNlIFdlYkNv
cmUgeworI2lmIFVTRShDQSkKK2NsYXNzIEdyYXBoaWNzTGF5ZXJDQTsKKyNlbmRpZgorCisvLyBQ
bGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yICdhdHRhY2hpbmcgY29udGVudHMgdG8gR3Jh
cGhpY3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291
cmNlcyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0g
c3BlY2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3Zp
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+Cit7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXIoKSA9
IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBjb250ZW50c0ZvckxheWVyKEdyYXBoaWNzTGF5ZXJDQSYgb3duZXIpID0gMDsKKyNlbmRp
ZgorCitwcm90ZWN0ZWQ6CisjaWYgVVNFKENBKQorICAgIC8vIFRoZXNlIGZhY3RvcnkgbWV0aG9k
cyBjb3VsZCBiZSByZW1vdmVkIGlmIHRoZSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIgd291bGQgYmUg
bW92ZWQgZnJvbQorICAgIC8vIEdyYXBoaWNzTGF5ZXJDQSB0byBQbGF0Zm9ybUNBTGF5ZXJGYWN0
b3J5LgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5
ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDQSYgb3duZXIpOwor
ICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxh
dGZvcm1MYXllciosIEdyYXBoaWNzTGF5ZXJDQSYgb3duZXIpOworICAgIC8vIEFkZCBjcmVhdGVQ
bGF0Zm9ybUNBTGF5ZXIgZm9yIE1vZGVsIHdoZW4gbW9kZWwgZ29lcyB0aHJvdWdoIHRoaXMgcHJv
dmlkZXIuCisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmNwcAppbmRleCA3YWVlMzhmMzlmM2IzZGFkNjI0MDgyZGJiYjkwODQ0NjNiYzMyYTRiLi5k
YzA3ZjRhMzAwMmNkODBmYTE1MDZlNDAyYWFhOGE0ZDQ2ZTc5YTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkBAIC0yOSwxMCArMjksMTggQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllcklPU3Vy
ZmFjZUNvbnRlbnRzUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJzKQogICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0cnMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgLCBtX2xheWVyQ29udGVudHNQcm92aWRlcihHcmFwaGljc0xh
eWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcjo6Y3JlYXRlKCkpCisjZW5kaWYKIHsKICAgICBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKIH0KQEAgLTEzMSw3ICsxMzksNyBAQCB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogfQogCi1Q
bGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25z
dAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmgKaW5kZXggZTllY2I4N2M3MGE1NDMwMDgyZjc0NmQ2MjZhMDUxZWJkYzY3MjUyNS4u
YjBjMTMyMDBmYmE0OTFkMWJmOWEzZGMwMDU0MjAzZDBjMWYwZDRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC0zNCwxNyArMzQsMTUgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotT0JKQ19DTEFT
UyBXZWJHTExheWVyOworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1jbGFz
cyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjsKK2NsYXNzIEdyYXBoaWNzTGF5
ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyOworY2xhc3MgSU9TdXJmYWNlOwogI2VuZGlmCiAK
IC8vIEEgYmFzZSBjbGFzcyBmb3IgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgcHJveHkgc2lkZSBp
bXBsZW1lbnRhdGlvbgpAQCAtNTgsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdGhlciBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgdXNpbmcgR3JhcGhpY3ND
b250ZXh0R0w6OmlzRW5hYmxlZDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBs
YXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25zdCBmaW5hbDsKICAgICBFeHRlbnNpb25zR0wmIGdl
dEV4dGVuc2lvbnMoKSBmaW5hbDsKICAgICB2b2lkIHNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wp
IGZpbmFsOwogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwpAQCAtOTIs
MTQgKzkwLDEyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeU1hcmtD
b250ZXh0Q2hhbmdlZCgpID0gMDsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiYgcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICBSZWY8
R3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXI+IG1fbGF5ZXJDb250ZW50c1By
b3ZpZGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsK
ICNlbmRpZgogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsK
LSNlbmRpZgogCiAgICAgLy8gR3VhcmRlZCBieSB3YWl0VW50aWxJbml0aWFsaXplZCgpLgogICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX2F2YWlsYWJsZUV4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCAyZDJmMTFhNDdkNjQ2ZGVkOTAxMWI1YjJlOGUzZTIzZjZmNzY2MWVlLi45ZjNjZGUxNmZkOGNm
ZWJiNDFlNzE3ZDlmOWE5ODdkZDY5MDJiOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNvbnRlbnRzUHJvdmlkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgpA
QCAtMTM0OCw2ICsxMzQ5LDI4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tUHJvdmlkZXIoUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiYmIHByb3ZpZGVyLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgcHJvdmlkZXIgPT0gbV9j
b250ZW50c1Byb3ZpZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZW50c0xh
eWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgIG1f
Y29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c1Byb3ZpZGVyID0gbnVsbHB0
cjsKKyAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6Ok5v
bmU7CisgICAgaWYgKHByb3ZpZGVyKSB7CisgICAgICAgIGlmIChhdXRvIGNvbnRlbnRzTGF5ZXIg
PSBwcm92aWRlci0+Y29udGVudHNGb3JMYXllcigqdGhpcykpIHsKKyAgICAgICAgICAgIG1fY29u
dGVudHNMYXllciA9IFdURk1vdmUoY29udGVudHNMYXllcik7CisgICAgICAgICAgICBtX2NvbnRl
bnRzUHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKKyAgICAgICAgICAgIG1fY29udGVudHNM
YXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICB9CisgICAgfQorCisgICAgbm90ZVN1Ymxh
eWVyc0NoYW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0
Zm9ybUxheWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZv
cm1MYXllciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAppbmRleCA5ZDQ0ZjZhYjM4MGM4ODY2NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3
Li5iMGEwYzM2MWNlZjI3NmUwNGZlMTczNmZjNGIxNGRhYTI5ZmQ3YzZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApA
QCAtMTUwLDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxh
eWVyKiBjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1M
YXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENvbnRlbnRzRnJvbVByb3ZpZGVyKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNQcm92aWRlcj4mJiBwcm92aWRlciwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkgb3Zl
cnJpZGU7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSBv
dmVycmlkZTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBtX2NvbnRlbnRzUHJvdmlkZXI7
CiAKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAg
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1h
dGlvbnM7CkBAIC02NjMsNiArNjY2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzRXZlclBh
aW50ZWQgOiAxOwogICAgIGJvb2wgbV9oYXNEZXNjZW5kYW50c1dpdGhSdW5uaW5nVHJhbnNmb3Jt
QW5pbWF0aW9ucyA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVk
Q2hhbmdlcyA6IDE7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3Zp
ZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXJD
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q29udGVudHNQcm92aWRlckNBLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDc0M2UwZjgzNmFkMjFkMzE2YjVi
ODNhNzRiYmJmODdjZjI4OTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXJDQS5jcHAKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNQ
cm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+
IEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGUgdHlwZSwgR3JhcGhpY3NMYXllckNBJiBvd25lcikKK3sK
KyAgICByZXR1cm4gb3duZXIuY3JlYXRlUGxhdGZvcm1DQUxheWVyKHR5cGUsICZvd25lcik7Cit9
CisKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyOjpj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXJD
QSYgb3duZXIpCit7CisgICAgcmV0dXJuIG93bmVyLmNyZWF0ZVBsYXRmb3JtQ0FMYXllcihsYXll
ciwgJm93bmVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMWYzOTJmNTQ3NzM5NGNjM2M3
NzVmYTRkMTk4Yzc0MzgyOTJhYTUyZC4uNWE4NTg4ZjI4ZjlmZTg5MDk0YWI4ZmRmMjUwZjM5MmYx
MDk0MWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC0yMzEsOCArMjMxLDggQEAgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5
ZXJUeXBlKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVy
OgogICAgICAgICB0cyA8PCAiYXYtcGxheWVyLWxheWVyIjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAg
ICAgICAgdHMgPDwgImNvbnRlbnRzLXByb3ZpZGVkLWxheWVyIjsKKyAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNJT1N1cmZhY2VMYXllcjoKKyAgICAgICAgdHMgPDwg
ImNvbnRlbnRzLWlvc3VyZmFjZS1sYXllciI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgogICAgICAgICB0cyA8PCAic2hhcGUt
bGF5ZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRkYTky
ZDE1ODM0Li5kN2FjNjRhNzc3ODc4OGFkZWQ4YjRjNmUxMTE1ZDZhOWMzNWE2MmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaApAQCAtNzAsNyArNzAsOSBAQCBwdWJsaWM6CiAgICAgICAgIExheWVyVHlwZVRpbGVkQmFj
a2luZ1RpbGVMYXllciwKICAgICAgICAgTGF5ZXJUeXBlUm9vdExheWVyLAogICAgICAgICBMYXll
clR5cGVBVlBsYXllckxheWVyLAotICAgICAgICBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXIsCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIExheWVyVHlwZUNvbnRlbnRzSU9TdXJm
YWNlTGF5ZXIsCisjZW5kaWYKICAgICAgICAgTGF5ZXJUeXBlQmFja2Ryb3BMYXllciwKICAgICAg
ICAgTGF5ZXJUeXBlU2hhcGVMYXllciwKICAgICAgICAgTGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNr
ZHJvcExheWVyLApAQCAtMzU1LDcgKzM1Nyw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU+IHsKICAgICAgICAgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVM
YXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVy
VHlwZVJvb3RMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGU6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXIsCi0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
OjpMYXllclR5cGVDb250ZW50c0lPU3VyZmFjZUxheWVyLAorI2VuZGlmCiAgICAgICAgIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXllclR5cGVCYWNrZHJvcExheWVyLAog
ICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZTo6TGF5ZXJUeXBlU2hh
cGVMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6Okxh
eWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250
ZW50c1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9HcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVj
OTRkMjJiYjYxYmFjOWM2Y2Q0NTE3MGYyNjdlNThmMTBlYTY3MDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9HcmFwaGljc0xheWVy
SU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSU9TdXJmYWNlOworCisvLyBDb250ZW50cyBwcm92aWRlciBmb3IgY2FzZXMg
d2hlcmUgSU9TdXJmYWNlIGlzIGFjY2Vzc2libGUuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyQ29udGVudHNQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxHcmFwaGlj
c0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3Zp
ZGVyKTsKKyAgICB9CisgICAgfkdyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVy
KCkgZmluYWw7CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlciBvdmVycmlk
ZXMuCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY29udGVudHNGb3JMYXllcihHcmFwaGlj
c0xheWVyQ0EmIG93bmVyKSBmaW5hbDsKKworICAgIHZvaWQgc2V0TGF5ZXJDb250ZW50cyhJT1N1
cmZhY2UmKTsKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJv
dmlkZXIoKTsKKyAgICBDRlR5cGVSZWYgbV9wZW5kaW5nQ29udGVudHMgPSBudWxscHRyOworICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fbGF5ZXI7Cit9OworCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvR3JhcGhpY3NMYXllcklP
U3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9HcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYjY2ODc1NzY1YzVmODNmNDc2MTUzZmQyMzUxN2YxNjZhZTAwNTUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
R3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIubW0KQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92
aWRlci5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjaW5jbHVkZSAiSU9TdXJm
YWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKy8vIEZJWE1FOiBBZGQgY29udGVudHNTY2Fs
ZSBwcm9wZXJ0eS4KKy8vIEZJWE1FOiBBZGQgY29udGVudHNPcGFxdWUgcHJvcGVydHkuCitHcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcjo6R3JhcGhpY3NMYXllcklPU3VyZmFj
ZUNvbnRlbnRzUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VD
b250ZW50c1Byb3ZpZGVyOjp+R3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIo
KSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJJT1N1
cmZhY2VDb250ZW50c1Byb3ZpZGVyOjpjb250ZW50c0ZvckxheWVyKEdyYXBoaWNzTGF5ZXJDQSYg
b3duZXIpCit7CisgICAgLy8gRklYTUU6IGRlZmluZSBhc3BlY3RzIG9mIG11bHRpcGxlIGNhbGxz
IG9yIHN1YnNjcmliZS91bnN1YnNjcmliZSBwYXR0ZXJuIHdpdGggbXVsdGlwbGUgbGF5ZXJzLgor
ICAgIGlmIChtX2xheWVyKSB7CisgICAgICAgIGlmICghbV9sYXllci0+b3duZXIoKSkKKyAgICAg
ICAgICAgIG1fbGF5ZXItPnNldE93bmVyKCZvd25lcik7CisgICAgICAgIEFTU0VSVChtX2xheWVy
LT5vd25lcigpID09ICZvd25lcik7CisgICAgICAgIHJldHVybiBtX2xheWVyOworICAgIH0KKyAg
ICBtX2xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNJT1N1cmZhY2VMYXllciwgb3duZXIpOworICAgIGlmIChtX3BlbmRpbmdDb250
ZW50cykKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHMoKF9fYnJpZGdlIGlkKXN0ZDo6ZXhj
aGFuZ2UobV9wZW5kaW5nQ29udGVudHMsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gbV9sYXllcjsK
K30KKwordm9pZCBHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcjo6c2V0TGF5
ZXJDb250ZW50cyhJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgaWYgKCFtX2xheWVyKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJdCBpcyBub3QgbmljZSB0byBuZWVkIHRvIGNhY2hlIHRoZSBjb250
ZW50cy4KKyAgICAgICAgLy8gRklYTUU6IFJlZj8KKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHMg
PSAoX19icmlkZ2UgQ0ZUeXBlUmVmKXN1cmZhY2UuYXNMYXllckNvbnRlbnRzKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9sYXllci0+c2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVy
Q29udGVudHMoKSk7CisgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggYzA4YmIwNzQ5NDYxMjZkZjU2OWE4
NDFkMGI1NjFmYTk2NzU3YTM2NC4uNGMzM2FiMjE0ODY5Y2FhMzIzZmZkNTU1NTk0ZGRmNWM5MzZj
ZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYg
QEAKICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5n
Q0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2lt
cG9ydCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KQEAgLTY4LDYgKzY3LDIxIEBACiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgogCisvLyBGSVhNRTogTW92ZSB0byBvd24gZmlsZS4KK0BpbnRl
cmZhY2UgV2ViQ29udGVudHNJT1N1cmZhY2VMYXllciA6IENBTGF5ZXIKK0BlbmQKK0BpbXBsZW1l
bnRhdGlvbiBXZWJDb250ZW50c0lPU3VyZmFjZUxheWVyCistIChpZClpbml0Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKy0gKHZvaWQpZGlzcGxheQor
eworICAgIC8vIERpc2FibGUgZGlzcGxheSB0byB1c2UgdGhlIGNvbnRlbnRzIGFzIHRoZSBkaXNw
bGF5IGNvbnRlbnRzLgorfQorQGVuZAorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIExh
eWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXAgPSBIYXNoTWFwPHZvaWQqLCBQbGF0Zm9ybUNBTGF5ZXIq
PjsKQEAgLTIxMSw5ICsyMjUsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAm
JiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAg
cmV0dXJuIExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9m
Q2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRl
bnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAg
LTI2NSw5ICsyNzYsOCBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29j
b2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBpZiAoUEFM
Ojppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJD
bGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24n
dCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJz
LgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIExheWVyVHlwZUNvbnRl
bnRzSU9TdXJmYWNlTGF5ZXI6CisgICAgICAgIGxheWVyQ2xhc3MgPSBbV2ViQ29udGVudHNJT1N1
cmZhY2VMYXllciBjbGFzc107CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxMYXllcjoKQEAgLTMxMCw3ICszMjAsNyBAQCB2
b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICB9CiAgICAgCiAgICAg
Ly8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCi0gICAg
aWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUg
PT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVy
VHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3Rv
bSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xh
eWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9
PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9u
c107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNw
cAppbmRleCBiNjI4ZGE5NmI4NmZjMjJhYzNmMGNjNTA5MjZjNDgyMzhmN2Q1ZjQ2Li4wOWRmZGI5
Nzg3Y2UyMzlhMjM5NWNhOGRkYjkyYmI0MmViZmEzZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcApAQCAtNzMxLDcgKzczMSw2IEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZvcm1DQUxheWVyKiBsYXllciwgaW50CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjogbGF5
ZXJUeXBlTmFtZSA9ICJ0aWxlZC1iYWNraW5nLXRpbGUtbGF5ZXIiOyBicmVhazsKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUm9vdExheWVyOiBsYXllclR5cGVOYW1lID0gInJv
b3QtbGF5ZXIiOyBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllcjogbGF5ZXJUeXBlTmFtZSA9ICJhdnBsYXllci1sYXllciI7IGJyZWFrOwotICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6IGxh
eWVyVHlwZU5hbWUgPSAiY29udGVudHMtcHJvdmlkZWQtbGF5ZXIiOyBicmVhazsKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjogbGF5ZXJUeXBlTmFtZSA9
ICJiYWNrZHJvcC1sYXllciI7IGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVTaGFwZUxheWVyOiBsYXllclR5cGVOYW1lID0gInNoYXBlLWxheWVyIjsgYnJlYWs7CiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXll
cjogbGF5ZXJUeXBlTmFtZSA9ICJsaWdodC1zeXN0ZW0tYmFja2Ryb3AtbGF5ZXIiOyBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGNjYmM0ZGQx
MzJlYjU2MzlhMmFlNGM2N2NlZDkxYWNkYTdjMjNjMWUuLjk0OTUzODdjOGJkM2ExNTE3YzI1Y2M3
MWFjMGU5YzA1ZDZlYzYyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQpAQCAtMzYsNyArMzYsNiBAQAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKICNpbXBvcnQgPENvcmVHcmFw
aGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL01ldGFsU1BJLmg+CkBAIC02MCw2ICs1OSw3IEBAIFdURl9XRUFLX0xJ
TktfRk9SQ0VfSU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CisKIGJvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkKIHsKICAgICAvLyBUaGUgQU5HTEUg
aXMgd2VhayBsaW5rZWQgaW4gZnVsbCwgYW5kIHRoZSBFR0xfSW5pdGlhbGl6ZSBpcyBleHBsaWNp
dGx5IHdlYWsgbGlua2VkIGFib3ZlCkBAIC0xOTMsMjkgKzE5MywxNSBAQCBzdGF0aWMgYm9vbCBu
ZWVkc0VBR0xPbk1hYygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nl
c3MoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICAvLyBN
YWtlIHNwYWNlIGZvciB0aGUgaW5jb21pbmcgY29udGV4dCBpZiB3ZSdyZSBmdWxsLgotICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlY3ljbGVDb250
ZXh0SWZOZWNlc3NhcnkoKTsKLSAgICBpZiAoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkuaGFzVG9vTWFueUNvbnRleHRzKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzLCBob3N0V2luZG93LCBu
dWxscHRyKSk7Ci0KKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKFdURk1vdmUoYXR0cmlidXRlcykpKTsKICAgICBpZiAoIWNvbnRleHQtPm1f
Y29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQuZ2V0
KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVJlZjxHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycywgR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4qIHN3YXBDaGFpbikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycywgbnVsbHB0ciwgc3dhcENoYWluKSk7Ci19Ci0K
LUdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbiogc3dhcENoYWluKQorR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
cykKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJzKQogewogICAgIG1faXNGb3JXZWJHTDIg
PSBhdHRycy53ZWJHTFZlcnNpb24gPT0gR3JhcGhpY3NDb250ZXh0R0xXZWJHTFZlcnNpb246Oldl
YkdMMjsKQEAgLTM1MywxOCArMzM5LDYgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICB2
YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKICAgICBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7IC8v
IFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAotICAgIGlmIChzd2Fw
Q2hhaW4pCi0gICAgICAgIG1fc3dhcENoYWluID0gc3dhcENoYWluOwotICAgIGVsc2UgewotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9w
dE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRl
dmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5E
RUJVRwotICAgICAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2Vu
ZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgICAgICBtX3N3YXBDaGFpbiA9
ICZbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07Ci0gICAgfQotCiAgICAgLy8gQ3JlYXRlIHRoZSB0
ZXh0dXJlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZnJhbWVidWZmZXIuCiAgICAgR0xlbnVt
IHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogCkBAIC00Mzks
MTQgKzQxMywxMiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6fkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKCkKICAgICB9CiAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlclBidWZmZXIpCiAgICAgICAg
IEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIp
OwotICAgIGlmIChtX3N3YXBDaGFpbikgewotICAgICAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0g
bV9zd2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKLSAgICAgICAgaWYgKHJlY3ljbGVkQnVmZmVy
LmhhbmRsZSkKLSAgICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJl
Y3ljbGVkQnVmZmVyLmhhbmRsZSk7Ci0gICAgICAgIGF1dG8gY29udGVudHNIYW5kbGUgPSBtX3N3
YXBDaGFpbi0+ZGV0YWNoQ2xpZW50KCk7Ci0gICAgICAgIGlmIChjb250ZW50c0hhbmRsZSkKLSAg
ICAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIGNvbnRlbnRzSGFuZGxl
KTsKLSAgICB9CisgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1fc3dhcENoYWluLnJlY3ljbGVC
dWZmZXIoKTsKKyAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQorICAgICAgICBFR0xfRGVz
dHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpOworICAgIGF1
dG8gY29udGVudHNIYW5kbGUgPSBtX3N3YXBDaGFpbi5kZXRhY2hDbGllbnQoKTsKKyAgICBpZiAo
Y29udGVudHNIYW5kbGUpCisgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmos
IGNvbnRlbnRzSGFuZGxlKTsKICAgICBpZiAobV9jb250ZXh0T2JqKSB7CiAgICAgICAgIG1ha2VD
dXJyZW50KG1fZGlzcGxheU9iaiwgRUdMX05PX0NPTlRFWFQpOwogICAgICAgICBFR0xfRGVzdHJv
eUNvbnRleHQobV9kaXNwbGF5T2JqLCBtX2NvbnRleHRPYmopOwpAQCAtNTY3LDEyICs1MzksMTAg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNr
aW5nKCkKICAgICAgICAgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwog
ICAgIH0KICAgICAvLyBSZXNldCB0aGUgZnV0dXJlIHJlY3ljbGVkIGJ1ZmZlciBub3csIGJlY2F1
c2UgaXQgbW9zdCBsaWtlbHkgd2lsbCBub3QgYmUgcmV1c2FibGUgYXQgdGhlIHRpbWUgaXQgd2ls
bCBiZSByZXVzZWQuCi0gICAgaWYgKG1fc3dhcENoYWluKSB7Ci0gICAgICAgIGF1dG8gcmVjeWNs
ZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVjeWNsZUJ1ZmZlcigpOwotICAgICAgICBpZiAocmVj
eWNsZWRCdWZmZXIuaGFuZGxlKQotICAgICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlz
cGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKLSAgICAgICAgcmVjeWNsZWRCdWZmZXIu
c3VyZmFjZS5yZXNldCgpOwotICAgIH0KKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2Fw
Q2hhaW4ucmVjeWNsZUJ1ZmZlcigpOworICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCisg
ICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhh
bmRsZSk7CisgICAgcmVjeWNsZWRCdWZmZXIuc3VyZmFjZS5yZXNldCgpOwogICAgIHJldHVybiBh
bGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpOwogfQogCkBAIC03MTMsMjEgKzY4
MywyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVz
dGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcgZQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQorYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChtX2xheWVyQ29tcG9z
aXRlZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcHJlcGFyZVRleHR1cmVJbXBsKCk7CiAKICAgICAvLyBUaGUgSU9TdXJmYWNlIHdp
bGwgYmUgdXNlZCBmcm9tIG90aGVyIGdyYXBoaWNzIHN1YnN5c3RlbSwgc28gZmx1c2ggR0wgY29t
bWFuZHMuCiAgICAgZ2w6OkZsdXNoKCk7CiAKLSAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9z
d2FwQ2hhaW4tPnJlY3ljbGVCdWZmZXIoKTsKKyAgICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9z
d2FwQ2hhaW4ucmVjeWNsZUJ1ZmZlcigpOwogCiAgICAgRUdMX1JlbGVhc2VUZXhJbWFnZShtX2Rp
c3BsYXlPYmosIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAg
bV9zd2FwQ2hhaW4tPnByZXNlbnQoeyBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBt
X2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOworICAgIG1fc3dhcENoYWluLnByZXNlbnQoeyBXVEZN
b3ZlKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpLCBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyIH0pOwog
ICAgIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKIAogICAgIGJvb2wg
aGFzTmV3QmFja2luZyA9IGZhbHNlOwpAQCAtNzQ5LDkgKzcxOSw5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAgICAgYm9vbCBzdWNjZXNz
ID0gd2FpdEFuZFVwZGF0ZU9sZGVzdEZyYW1lKCk7CiAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShz
dWNjZXNzKTsgLy8gRklYTUU6IGltcGxlbWVudCBjb250ZXh0IGxvc3QuCiAgICAgfQorICAgIHJl
dHVybiB0cnVlOwogfQogCi0KICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04p
CiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7
CkBAIC03NjMsNyArNzMzLDcgQEAgR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmFzQ1YoKQogCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKIHsKLSAgICBhdXRvJiBkaXNw
bGF5QnVmZmVyID0gbV9zd2FwQ2hhaW4tPmRpc3BsYXlCdWZmZXIoKTsKKyAgICBhdXRvJiBkaXNw
bGF5QnVmZmVyID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmICghZGlzcGxh
eUJ1ZmZlci5zdXJmYWNlIHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0g
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKQEAgLTc5NSwxMiArNzY1LDEyIEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9z
aXRlZFJlc3VsdHMoKQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1w
bGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSgpCiB7Ci0gICAgYXV0byAmZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWluLT5kaXNw
bGF5QnVmZmVyKCk7CisgICAgYXV0byAmZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWluLmRpc3Bs
YXlCdWZmZXIoKTsKICAgICBpZiAoIWRpc3BsYXlCdWZmZXIuc3VyZmFjZSB8fCAhZGlzcGxheUJ1
ZmZlci5oYW5kbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChkaXNwbGF5QnVm
ZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBtX3N3YXBDaGFpbi0+bWFya0Rpc3BsYXlCdWZmZXJJ
blVzZSgpOworICAgIG1fc3dhcENoYWluLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZh
Y2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC04MTMsNiArNzgzLDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCiAgICAgY3VycmVudENvbnRleHQgPSBu
dWxscHRyOwogfQogCitJT1N1cmZhY2UqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5
QnVmZmVyKCkKK3sKKyAgICBBU1NFUlQobV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZh
Y2UpOworICAgIHJldHVybiBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQo
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0Rpc3BsYXlCdWZmZXJJ
blVzZSgpCit7CisgICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworfQor
CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25zdAoreworICAgIHJldHVybiBudWxs
cHRyOworfQorCisKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KaW5kZXggMTkz
NGVmNWVmMzM2OWEyMzY5OTZiMmU2ZGUwZDc2MzhiMTkxOWZhZC4uNmE2ZmY2YmM4ZDdhNDM3NDIx
NzRmZjIyNWRjMGE5NGQwMDQxNWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpICYmIFBMQVRGT1JNKENPQ09BKQogCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgotI2ltcG9ydCAi
V2ViR0xMYXllci5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJv
dmlkZXIuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQpAQCAtNDEsMTkgKzQxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKIHsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhb
W1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQ
aXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcK
LSAgICAgICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAogCi1QbGF0Zm9ybUxheWVyKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjpsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25zdAogewotICAgIHJldHVybiBt
X3dlYkdMTGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGF5ZXJDb250ZW50c1Byb3ZpZGVyLmNv
cHlSZWYoKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKQEAg
LTYzLDIwICs1NiwxMyBAQCBHcmFwaGljc0NvbnRleHRHTENWKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6YXNDVigpCiB9CiAjZW5kaWYKIAotR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4mIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9y
bVN3YXBDaGFpbigpCi17Ci0gICAgcmV0dXJuIFttX3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKLX0K
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSgpCiB7Ci0gICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOwotICAgIGF1dG8m
IGRpc3BsYXlCdWZmZXIgPSBzYy5kaXNwbGF5QnVmZmVyKCk7Ci0gICAgaWYgKCFkaXNwbGF5QnVm
ZmVyLnN1cmZhY2UpCisgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHNjLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZh
Y2UoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNw
bGF5QnVmZmVyLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1Jv
dGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvbnRlbnRQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJDb250ZW50UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ5ZjQ1YzJjMjdlNDBkZDMxN2IyZDFiOWNjYTI4OGJjOGYyYTRhMjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb250ZW50
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EuY3BwCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworICNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgeworCitjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
ZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wKK3sKK3B1YmxpYzoKKyAgICAv
LyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCisgICAgUmVmUHRyPEdyYXBoaWNz
TGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGVudHNQcm92aWRlci5jb3B5UmVmKCk7Cisg
ICAgfQorICAgIGJvb2wgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwor
ICAgICAgICBtX2NvbnRlbnRzUHJvdmlkZXItPnNldExheWVyQ29udGVudHMoKmRpc3BsYXlCdWZm
ZXIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMpCisgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRl
cykKKyAgICAgICAgLCBtX2NvbnRlbnRzUHJvdmlkZXIoR3JhcGhpY3NMYXllcklPU3VyZmFjZUNv
bnRlbnRzUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgIHsKKyAgICB9CisgICAgUmVmPEdyYXBoaWNz
TGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyPiBtX2NvbnRlbnRzUHJvdmlkZXI7CisgICAg
ZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworfTsKKworfQorCitSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KikKK3sKKyAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZWN5Y2xlQ29u
dGV4dElmTmVjZXNzYXJ5KCk7CisgICAgaWYgKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLmhhc1Rvb01hbnlDb250ZXh0cygpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKGF0dHJzKSk7CisgICAgaWYgKCFjb250ZXh0LT5tX2NvbnRleHRP
YmopCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7CisgICAg
cmV0dXJuIGNvbnRleHQ7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTQ0YzVhNDI0YTdhM2U0NjM0Yjg2NGIzYmYyMDcwMTcyNjYyNDU1ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgotI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDxtZW1vcnk+Ci0jaW1wb3J0IDx3dGYv
TmFrZWRQdHIuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8g
QSBsYXllciBjbGFzcyBpbXBsZW1lbnRpbmcgZnJvbnQgYnVmZmVyIG1hbmFnZW1lbnQgb2YgYSAz
LWJ1ZmZlcmluZyBzd2FwCi0vLyBjaGFpbiBvZiBJT1N1cmZhY2VzLgotQGludGVyZmFjZSBXZWJH
TExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0
KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWU7Ci0K
LS0gKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJikgc3dhcENo
YWluOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZTljZmY1MDNhM2QyZmI2NjVjYjcwMDM0
NTFhZjUxZGY0Njc4OTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNz
TGF5ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1D
QUxheWVyLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KLQotY2xh
c3MgV2ViR0xMYXllclN3YXBDaGFpbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xM
YXllclN3YXBDaGFpbihXZWJHTExheWVyKiBsYXllcikgIDogbV9sYXllcihsYXllcikgeyB9Owot
ICAgIH5XZWJHTExheWVyU3dhcENoYWluKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwotICAgIHZvaWQg
cHJlc2VudChCdWZmZXImJikgb3ZlcnJpZGU7Ci0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRp
c3BsYXlTdXJmYWNlKCkgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLnN1cmZhY2UuZ2V0KCk7IH0K
LXByaXZhdGU6Ci0gICAgV2ViR0xMYXllciogY29uc3QgbV9sYXllcjsKLX07Ci0KLUBpbXBsZW1l
bnRhdGlvbiBXZWJHTExheWVyIHsKLSAgICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7Ci0gICAg
c3RkOjpvcHRpb25hbDxXZWJHTExheWVyU3dhcENoYWluPiBfc3dhcENoYWluOwotfQotCi0tIChp
ZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVu
dHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAgIHNlbGYu
Y29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRlbnRzU2NhbGUg
PSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIF9zd2FwQ2hhaW4uZW1wbGFjZShzZWxmKTsKLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIgY29u
dGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2NvdW50
IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlzIG1l
YW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0aGlz
IGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNjYWxl
IG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRoZSB0
b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBbc3Vw
ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQotCi0t
ICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5jaG9y
UG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW4KLXsKLSAgICByZXR1
cm4gX3N3YXBDaGFpbi52YWx1ZSgpOwotfQotCi0tICh2b2lkKXByZXBhcmVGb3JEaXNwbGF5Ci17
Ci0gICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0g
WUVTOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICBpZiAoX3N3YXBDaGFpbi0+ZGlzcGxh
eVN1cmZhY2UoKSAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5KSB7Ci0gICAgICAgIHNlbGYuY29udGVu
dHMgPSBfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgpLT5hc0xheWVyQ29udGVudHMoKTsKLSAg
ICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICB9Ci0g
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7Ci0KLSAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87Ci19
Ci0KLUBlbmQKLQotdm9pZCBXZWJHTExheWVyU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZlciYmIGJ1
ZmZlcikKLXsKLSAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFjZSk7Ci0gICAgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OnByZXNlbnQoV1RGTW92ZShidWZmZXIpKTsK
LSAgICBbbV9sYXllciBwcmVwYXJlRm9yRGlzcGxheV07Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlmNDVjMmMyN2U0MGRkMzE3YjJkMWI5Y2NhMjg4
YmM4ZjJhNGEyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNwcApA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKyAjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCit7
CitwdWJsaWM6CisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb3ZlcnJpZGVzLgorICAg
IFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gbGF5ZXJDb250ZW50c1Byb3Zp
ZGVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRlbnRzUHJvdmlk
ZXIuY29weVJlZigpOworICAgIH0KKyAgICBib29sIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JE
aXNwbGF5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1hcmtEaXNwbGF5
QnVmZmVySW5Vc2UoKTsKKyAgICAgICAgbV9jb250ZW50c1Byb3ZpZGVyLT5zZXRMYXllckNvbnRl
bnRzKCpkaXNwbGF5QnVmZmVyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorICAgICAgICA6IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKGF0dHJpYnV0ZXMpCisgICAgICAgICwgbV9jb250ZW50c1Byb3ZpZGVyKEdyYXBoaWNz
TGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyOjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQor
ICAgIFJlZjxHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcj4gbV9jb250ZW50
c1Byb3ZpZGVyOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKK307
CisKK30KKworUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdp
bmRvdyopCit7CisgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkucmVjeWNsZUNvbnRleHRJZk5lY2Vzc2FyeSgpOworICAgIGlmIChHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3
IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycykpOworICAgIGlmICghY29u
dGV4dC0+bV9jb250ZXh0T2JqKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRl
eHQuZ2V0KCkpOworICAgIHJldHVybiBjb250ZXh0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCmluZGV4IDIyNzdiMTdjYzcwOTg4ODc2ODI2YzA4NjJmN2E3MTgzOTc0
MjVkZmEuLjgzYWI5NDYwMzFiZWNmMjUxNTE2OGZlODcwZDBjZmY2M2M3MjQxNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIK
ICNlbmRpZgogCkBAIC02NCwxMCArNjUsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLU9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENP
Q09BKQpAQCAtOTcsMjMgKzk1LDIxIEBAIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllcjsKIAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5h
bWVIYXNoOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBm
aW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAgdmlydHVhbCB+R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0YXRp
YyBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4qKTsKLQotICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9
CisgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BV
UHJvY2VzcyhHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CiAgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5T2JqOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9y
bUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CiAgICAgc3RhdGljIEdDR0xl
bnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnkoKTsKICAgICBzdGF0aWMgR0NHTGlu
dCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogI2Vsc2UKICAgICBzdGF0aWMgUmVm
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Q7CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0KCk7CkBAIC0xNDgsNiArMTQ0LDkgQEAgcHVibGljOgogICAgIGJv
b2wgdGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnQgYWxpZ25tZW50ID0gNCk7CiAjZW5kaWYKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMIG92
ZXJyaWRlcy4KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IGxheWVy
Q29udGVudHNQcm92aWRlcigpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgYm9vbCBpc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QgZmluYWw7CiAKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2Nyw2ICs0
NjYsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1l
ZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwog
I2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVy
KCk7CisgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisjZW5kaWYKIAogICAgIHN0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmco
KTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNG
b3JQYWludGluZygpOwpAQCAtNTE4LDcgKzUyMSw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVk
IHRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpIHsgcmV0dXJuIG1fc3RhdGUudGV4dHVyZVNl
ZWRDb3VudC5jb3VudCh0ZXh0dXJlKTsgfQogCi0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgp
IGZpbmFsOworICAgIGJvb2wgcHJlcGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBHcmFwaGljc0NvbnRleHRHTENW
KiBhc0NWKCkgZmluYWw7CkBAIC01MzgsMTMgKzU0MSwxNCBAQCBwdWJsaWM6CiAjZW5kaWYKICNl
bmRpZgogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdp
bmRvdyosIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOwor
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7
CiAjZWxzZQogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgSG9zdFdpbmRvdyopOwogI2VuZGlmCiAKK3ByaXZhdGU6CiAgICAgLy8gQ2FsbGVk
IG9uY2UgYnkgYWxsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxs
IE9wZW5HTC4KICAgICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2lu
dHMgb2YgRXh0ZW5zaW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKQEAgLTU4NCwxMyArNTg4
LDExIEBAIHByaXZhdGU6CiAgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMgYmVoYXZpb3IgZm9yIHJl
bGVhc2VSZXNvdXJjZXMoKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMoKTsKIAotCitwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsK
LSAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJh
d3MgdG8gYSBpbWFnZSBidWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4MTc5IC4KLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVy
OwotICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OworICAgIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG1fc3dhcENoYWluOwogICAgIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OworICAgIEVHTERpc3BsYXkg
bV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xD
b25maWcgbV9jb25maWdPYmogeyBudWxscHRyIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggYmNmMzJkY2UxYzI3YTNiOTNmY2Y4YzU4OWJkMmUzNTNlZjAzZTdhOC4uZjRkODJjNWZk
NGE4YjUxOWU2OTU5YzAyNzRlYTFiOWE3NzhhZmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyArMTA4OSw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxh
eWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygp
ICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXll
ckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAg
ICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQotICAgICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihjb250ZXh0
LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpD
YW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0Zyb21Qcm92
aWRlcihjb250ZXh0LT5sYXllckNvbnRlbnRzUHJvdmlkZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29u
dGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDI1NjAzOTdhNTM3Mjcx
MjA0NjkwODI3Yjk3MDE1ZThiNzNiZWU3OWMuLjMxNWI0N2Q1MWY2ZmVhM2M3NGIwM2ZkZTY5ZTdj
MmNjOWY4ODFkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC05Myw3ICs5Myw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwogICAg
IHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOjpNYWNoU2VuZFJpZ2h0JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hT
ZW5kUmlnaHQ+JiYpPiYmKSA9IDA7CiAjZWxzZQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IDE2YjNlOWU4MjZlYTQxN2RiZTJjNzNlMmRlYzcx
MzgzOWI3ZjY3MzIuLmRlNmI0YWQwMzI5ZTA4ZGFiMWNlYmU4ZmRhMTRmYzgxZTlkOTgxMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcg
QEAKIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3Ry
ZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNo
U2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJl
cGx5CisgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChzdGQ6Om9wdGlvbmFsPE1hY2hT
ZW5kUmlnaHQ+IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJl
cGx5CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlz
cGxheSgpIC0+ICgpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKaW5kZXggOTcwZDhjMmU3OTA5ZThmNzFmYWQwYzliZDJjNjQzMWZjZDk1YWQzMi4uY2E3Njdm
MGU1M2RkNzk1OGJkYTA5MzIwMDMwYjUyYThkODU2ZGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcApAQCAtNDQsOSArNDQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1
ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFs
OwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6
Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4m
Jik+JiYpIGZpbmFsOwogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiBtX3N3YXBDaGFpbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFt
VGhyZWFkKTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQogICAg
IHRhc2tfaWRfdG9rZW5fdCBtX3dlYlByb2Nlc3NJZGVudGl0eVRva2VuOwogI2VuZGlmCkBAIC02
NywyNiArNjYsMjcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShHUFVDb25uZWN0aW9uVG9XZWJQcm8KICAgICAsIG1fd2ViUHJvY2Vz
c0lkZW50aXR5VG9rZW4oZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRp
dHlUb2tlbigpKQogI2VuZGlmCiB7Ci0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOwotICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
cmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksICZtX3N3YXBDaGFpbik7Cisg
ICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nl
c3MoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1h
Y2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgbV9jb250ZXh0
LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OwotICAg
IGlmIChhdXRvKiBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2Uu
Z2V0KCkpIHsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodDsKKyAg
ICBpZiAobV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpKSB7CisgICAgICAgIGlmIChhdXRv
KiBzdXJmYWNlID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NF
VF9PV05FUlNISVBfSURFTlRJVFkpCi0gICAgICAgIC8vIE1hcmsgdGhlIElPU3VyZmFjZSBhcyBi
ZWluZyBvd25lZCBieSB0aGUgV2ViUHJvY2VzcyBldmVuIHRob3VnaCBpdCB3YXMgY29uc3RydWN0
ZWQgYnkgdGhlIEdQVVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0ga25vd3Mgd2hpY2ggcHJvY2VzcyB0
byBraWxsLgotICAgICAgICBzdXJmYWNlLT5zZXRPd25lcnNoaXBJZGVudGl0eShtX3dlYlByb2Nl
c3NJZGVudGl0eVRva2VuKTsKKyAgICAgICAgICAgIC8vIE1hcmsgdGhlIElPU3VyZmFjZSBhcyBi
ZWluZyBvd25lZCBieSB0aGUgV2ViUHJvY2VzcyBldmVuIHRob3VnaCBpdCB3YXMgY29uc3RydWN0
ZWQgYnkgdGhlIEdQVVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0ga25vd3Mgd2hpY2ggcHJvY2VzcyB0
byBraWxsLgorICAgICAgICAgICAgc3VyZmFjZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV93ZWJQ
cm9jZXNzSWRlbnRpdHlUb2tlbik7CiAjZW5kaWYKLSAgICAgICAgc2VuZFJpZ2h0ID0gc3VyZmFj
ZS0+Y3JlYXRlU2VuZFJpZ2h0KCk7CisgICAgICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5j
cmVhdGVTZW5kUmlnaHQoKTsKKyAgICAgICAgfQogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHNlbmRSaWdodCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM1ZDYz
NjFkYmMxOGExMDYzZjNhZmU4ZGFiMzM2YTUwYTA2MTM5NjAuLmU2NGM4MjhjNzMwMDAyY2Q3MTU5
YmE1MmQ4ZmZkOThlZmEwYmMwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYyMyw2ICs2
MjMsNyBAQCBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50
U2VydmljZUVudHJ5UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNw
cAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1h
bmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmNDcxZDkzMThmNDU5YjBiNDFjZGQxZTI1MGI3N2RhN2UxMDkxNDAxLi5jMDZkYzg4MDY4NmM4
MjQyODMxOTdjNjQwZThmNmFlZjQzZWIzYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3NzIsNiArNDc3Miw3IEBACiAJCTdCNDgz
RjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYwMSw2ICs5NjAy
LDcgQEAKIAkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIw
ODYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovLAogCQkJCTJEMjVG
MzI5MjU3NThFOTEwMDIzMUE4QiAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQuY3BwICovLAogCQkJCTJEMjVGMzI4MjU3NThFOTAwMDIzMUE4QiAvKiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGMwYmFjMzhl
ZWMyZWI2NDAyNjg2YzMzZGMzZDQzY2Q0YjZkOGRmNmYuLjAxZGU1N2NhZjg5MDk1NDUzY2UyN2Rh
MjVmZjM5ODA1NzU0ZThkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtMzUsMTEgKzM1LDYgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02Nyw5ICs2Miw2IEBAIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiB7CiAgICAgZGlzY29ubmVjdEdwdVByb2Nlc3NJ
Zk5lZWRlZCgpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHBsYXRmb3JtU3dhcENoYWluKCku
cmVjeWNsZUJ1ZmZlcigpOwotI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCkBAIC04MywzMiArNzUsMjAg
QEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3aWR0aCwg
aW50IGhlaWdodCkKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiB9CiAKLXZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQorI2lmICFQTEFURk9S
TShDT0NPQSkKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRp
c3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCi0gICAgICAgIHJldHVybjsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQ7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJp
Z2h0KSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQp
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgaWYgKGRpc3Bs
YXlCdWZmZXIpIHsKLSAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOwotICAg
ICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7Ci0gICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRp
c3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOwotICAgIH0KLSNlbHNlCisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KCkpOwogICAgIGlmICghc2Vu
ZFJlc3VsdCkgewogICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotI2VuZGlmCiAgICAgbWFya0xheWVyQ29tcG9z
aXRlZCgpOworICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXgg
ZGQyZTgwYjY1ZDIzNGQ2OThlOTBjODNhMGM1ZGMzOTk1ODdkZDdhZC4uZjk5NDExMzhhYzJiN2I0
MDAyOTg5YjVjMWE0N2RkZTliZDBlYjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgogICAgIHZvaWQgcmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBm
aW5hbDsKKyAgICBib29sIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAgICAgdXNpbmcgV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmlzRW5hYmxlZDsKICAgICB2
b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlZjRmOTVmYTQ1ZWJkMjRiZDI1ZDAxMWM3NmFlODU5ZTQyYmI5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
cmVwYXJlRm9yRGlzcGxheSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gZGlzcGxheUJ1
ZmZlclNlbmRSaWdodDsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0Nv
bnRleHRMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCEqZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCkgeworICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBp
ZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNw
bGF5QnVmZmVyKTsKKyAgICBtX2xheWVyQ29udGVudHNQcm92aWRlci0+c2V0TGF5ZXJDb250ZW50
cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggZDE2MjM0NDQyMzFlNmJkNDQ5ZTUzYWU0MWFlNTY5ZjcxNGJhMDc2NS4uZjVhODdk
NTM3MzZhYmQ4NGI4ZWY5NWQ0NTUyZjYwNGI0MjU5ZWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtNjIsNiArNjIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9y
bUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3Rv
ckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogQGludGVyZmFjZSBOU09i
amVjdCAoV0tEZXByZWNhdGVkRGVsZWdhdGVNZXRob2RzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVs
ZC5tbQppbmRleCBkZTczNzFiZTlmY2Q4MmIxMDBkMjZmMTkxZGUyYjM0ZTg2YWZlMTM2Li5mNjJk
YzdjODM3ZjAyZjcwMTBjODJkOTc5MGUyYmFhZjIxNGUxZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiUERGTGF5ZXJDb250cm9sbGVy
U1BJLmgiCiAjaW1wb3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgPFF1YXJ0ei9RdWFydHouaD4K
KyNpbXBvcnQgPFdlYkNvcmUvQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MRWxlbWVudC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZU1vZGVsSG9z
dGluZy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVNb2RlbEhvc3RpbmcubW0KaW5kZXggOGMxMDYyMjA1Yzc3
YWZmZDdiYWQxN2NmOTcyNmZjODAyMDc2NmMyYS4uY2EzZGE2OWI0MzA5NDNkZjY2NmU3ZTg0MDg0
MGQ1N2Y2YmM3MjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZU1vZGVsSG9zdGluZy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nLm1tCkBAIC02Niw5ICs2Niw5IEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nOjpwb3B1bGF0ZUNyZWF0aW9uUHJvcGVy
dGllcyhSZW1vdGVMYXllclRyCiAgICAgcHJvcGVydGllcy5tb2RlbCA9IG1fbW9kZWwucHRyKCk7
CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nOjpkdW1wQWRkaXRp
b25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIE9wdGlvblNldDxQbGF0Zm9ybUxheWVyVHJl
ZUFzVGV4dEZsYWdzPiBmbGFncykKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0
aW5nOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIE9wdGlvblNldDxX
ZWJDb3JlOjpQbGF0Zm9ybUxheWVyVHJlZUFzVGV4dEZsYWdzPiBmbGFncykKIHsKLSAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoUGxhdGZvcm1MYXllclRyZWVBc1RleHRGbGFnczo6SW5jbHVkZU1vZGVs
cykpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXJUcmVlQXNU
ZXh0RmxhZ3M6OkluY2x1ZGVNb2RlbHMpKQogICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihtb2Rl
bCBkYXRhIHNpemUgIiA8PCBtX21vZGVsLT5kYXRhKCktPnNpemUoKSA8PCAiKVxuIjsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg3YWEz
Yzc4NTJhZTAwMGQwNDJiODM3MDIyYWEzNDdlOGY3NGJlZmUuLjE0NGI1MDMwY2M2YTlhMmY4NWZm
NDk4ZGU5MmQ3YjlmYjBkMWRiODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0xMC0xNCAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBz
dXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgYWJp
bGl0eSB0byBwYXNzIHN0ZDo6b3B0aW9uYWwgdGhyb3VnaAorICAgICAgICB0aGUgV2ViR0wgY2Fs
bHMuCisgICAgICAgIEFkZHMgdGhlIGFiaWxpdHkgdG8gcGFzcyBSZXRhaW5QdHIgdGhyb3VnaCB0
aGUKKyAgICAgICAgV2ViR0wgY2FsbHMuIFRoZSBmaWxlcyB0aGF0IG5lZWRlZCB0aGlzIHdlcmUK
KyAgICAgICAgbW9kaWZlZCBpbiBzb21lIHJlZmFjdG9yaW5nIGNvbW1pdC4KKworICAgICAgICAq
IFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0xMC0xMiAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlU2lsaWNvbl0gU3VwcG9y
dCBuYXRpdmUgc2ltdWxhdG9yIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRl
eCAzMGY3ZmQ4MmIzMzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi4zZGY5NDhkNDc0Y2Y4
OTY0MjViYjhmZjhlMzI5MWQ3YjNhNWQ2ODU0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
CkBAIC05Miw3ICs5Miw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiBtZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAg
IHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQg
ZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKKyAgICB2
b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4g
ZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKICNlbmRp
ZgogI2lmICFQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4g
KCkgU3luY2hyb25vdXMKQEAgLTIzMiw3ICsyMzIsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2Nv
bnRhaW5lcih0eXBlX25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06
CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBB
bGwgdGVtcGxhdGVzIGFyZSBjb250YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBj
b250YWluZXJfbmFtZSBpbiBbJ1JlZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFt
ZSBpbiBbJ1JlZlB0cicsICdSZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAg
ICAgICAgcmV0dXJuIE5vbmUKICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25l
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441215</attachid>
            <date>2021-10-14 07:42:29 -0700</date>
            <delta_ts>2021-11-18 10:50:57 -0800</delta_ts>
            <desc>Patch for feedback</desc>
            <filename>bug-231009-20211014174227.patch</filename>
            <type>text/plain</type>
            <size>97858</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4NDQ1NWFhMWZiMmFl
YzFkYWRhNWMwOWVjNzUwOGRmYjhjOTQ4Yi4uMjE0YWNkM2U2Nzg2MGI3ZTAxZWZiNWE0ZDY4NTgz
MWUzZWIzMzlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMS0xMC0xNCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0t
LQorICAgICAgICBXSVA6IFRoaXMgaXMgYSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIHRvIGdldCBm
ZWVkYmFjayBvbiB3aGF0CisgICAgICAgIGtpbmQgb2YgYWJzdHJhY3Rpb24gc2hvdWxkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQgcmV0dXJuIGluIG9yZGVyCisgICAgICAgIGZvciBHcmFwaGljc0xh
eWVyIHRvIGJlIGFibGUgdG8gcmVhZCB0aGUgY2FudmFzIHJlbmRlcmluZyBjb250ZXh0CisgICAg
ICAgIGltYWdlIHJlcGVhdGVkbHkgZWFjaCB0aW1lIGNhbnZhcyByZW5kZXJpbmcgY29udGV4dCBp
cyBwcmVwYXJlZCBmb3IKKyAgICAgICAgZGlzcGxheS4KKyAgICAgICAgQ3VycmVudGx5IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQgcmV0dXJucyBQbGF0Zm9ybUxheWVyLCBidXQgZm9yIFVJLXNpZGUK
KyAgICAgICAgY29tcG9zaXRpbmcgdGhpcyBjYW5ub3QgYmUgdGhlIGNhc2UuCisgICAgICAgIEN1
cnJlbnRseSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGNhbm5vdCByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyLAorICAgICAgICBhcyB0aGUgY29uY3JldGUgdHlwZSBvZiBQbGF0Zm9ybUNBTGF5ZXIgKCpS
ZW1vdGUgb3IgKkNvY29hKSBpcyBub3QKKyAgICAgICAga25vd24gYXQgdGhlIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQgaW5zdGFudGlhdGlvbiB0aW1lLiBUbyBrbm93IHRoaXMsCisgICAgICAgIHdl
J2QgbmVlZCB0byBleHRlbmQgR3JhcGhpY3NMYXllckZhY3RvcnkgYW5kIHBhc3MgdGhhdCBkb3du
IHRvd2FyZHMKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dC4KKyAgICAgICAgQ3VycmVu
dGx5LCB0aGVyZSBpcyBubyBjcm9zcy1wbGF0Zm9ybSwgY3Jvc3MtY29tcG9zaXRvciAocmVtb3Rl
IHZzIGluIHByb2Nlc3MpCisgICAgICAgIHNoYXJlZCBhYnN0cmFjdGlvbiB0aGF0IGNvdWxkIGJl
IHVzZWQgdG8gcmVwcmVzZW50IHNldHRpbmcgSU9TdXJmYWNlcyBjb250aW51b3VzbHkuCisgICAg
ICAgIC0tLQorCisgICAgICAgIEludHJvZHVjZSBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRl
ciwgd2hpY2ggaGFzIHRoZSByZXNwb25zaWJpbGl0eSBvZgorICAgICAgICAgMSkgQ3JlYXRlIGNv
bXBvc2l0b3Igb2JqZWN0cyB0byBzaG93IHRoZSBpdGVtIGluIHRoZSAnY29udGVudHMnIHBhcnQg
b2YKKyAgICAgICAgIHRoZSBjb21wb3NpdG9yIGxheWVyCisgICAgICAgICAyKSBGb3J3YXJkIGFu
ZCAocG90ZW50aWFsbHkpIGZvcm1hdCB0aGUgaXRlbSBjb250ZW50cyB0byB0aGUgZm9ybWF0IHRo
YXQKKyAgICAgICAgdGhlIGNvbXBvc2l0b3Igb2JqZWN0cyBuZWVkIHRoZSBpdGVtLgorCisgICAg
ICAgIFRoaXMgc3RydWN0dXJlIGFsbG93cyBmb3IgdGhlIGl0ZW0gKEdyYXBoaWNzQ29udGV4dEdM
KiwgTWVkaWFQbGF5ZXJQcml2YXRlKiwgTW9kZWwqKQorICAgICAgICB0byBkZWNpZGUgd2hhdCBr
aW5kIG9mIGNvbXBvc2l0b3Igb2JqZWN0IHRvIGNyZWF0ZSAoRm9yIENBOiBMYXllclR5cGUqKS4K
KyAgICAgICAgVGhpcyBzdHJ1Y3R1cmUgYWxsb3dzIGZvciB0aGUgY29tcG9zaXRvciB0byBkZWNp
ZGUgd2hhdCBvcGVyYXRpb24gc2V0cyB0aGUgY29udGVudHMKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLCBmdXR1cmUgR3JhcGhpY3NMYXllckNBTGF5ZXJD
b250ZW50c1Byb3ZpZGVyKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhpcyBmb3IgV2ViR0wgcmVu
ZGVyaW5nIGNvbnRleHRzIG9uIENvY29hOgorICAgICAgICAgMSkgQ3JlYXRlIFBsYXRmb3JtQ0FM
YXllciBvZiBMYXllclR5cGUgIklPU3VyZmFjZSBjb250ZW50cyIKKyAgICAgICAgIDIpIFNldCB0
aGUgZGlzcGxheSBidWZmZXIgb2YgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdG8KKyAgICAgICAg
ICAgIHRoZSBjb250ZW50cyBwcm9wZXJ0eSBvZiBQbGF0Zm9ybUNBTGF5ZXIKKworICAgICAgICBX
SVA6IEltcGxlbWVudHMgY3VycmVudCBpbi1wcm9jZXNzIGNvZGVwYXRoIGZvciBXZWJHTCBwYXJ0
aWFsbHkgaW4gYSB3YXkgdGhhdAorICAgICAgICBhbGxvd3MgZm9yIFVJLXNpZGUgY29tcG9zaXRp
bmcgcGFydCBiZSBpbXBsZW1lbnRlZC4gVGhlIGltcGxlbWVudGF0aW9uIGlzIHBhcnRpYWwsCisg
ICAgICAgIHRoZSBXZWJHTCBpbWFnZSBpcyB1cHNpZGUgZG93biBhbmQgbm90IGFsbCBjb21wb3Np
dG9yIGxheWVyIHByb3BlcnRpZXMgYXJlIHNldC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJl
ZmFjdG9yLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmxheWVyQ29udGVudHNQcm92aWRlciBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXllckNvbnRlbnRzUHJvdmlkZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZv
cm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Zyb21Qcm92
aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmxheWVyQ29udGVu
dHNQcm92aWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21Qcm92aWRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXJDQS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3Zp
ZGVyOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9HcmFwaGljc0xheWVySU9TdXJmYWNlQ29u
dGVudHNQcm92aWRlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVy
Ojpjb250ZW50c0ZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJJT1N1
cmZhY2VDb250ZW50c1Byb3ZpZGVyOjpzZXRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAg
KC1bV2ViQ29udGVudHNJT1N1cmZhY2VMYXllciBpbml0XSk6CisgICAgICAgICgtW1dlYkNvbnRl
bnRzSU9TdXJmYWNlTGF5ZXIgZGlzcGxheV0pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAg
KHByaW50TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5H
TCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURp
c3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGlzcGxh
eUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFy
a0Rpc3BsYXlCdWZmZXJJblVzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6bGF5ZXJDb250ZW50c1Byb3ZpZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlOjpsYXllckNvbnRlbnRzUHJvdmlkZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9y
bVN3YXBDaGFpbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViQ29udGVudFByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tOiBSZW1vdmVkLgor
ICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzpjb250ZW50c09w
YXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBzZXRUcmFuc2Zvcm06XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgc3dhcENoYWluXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViR0xMYXllciBkaXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJHTExheWVyU3dhcENo
YWluOjpwcmVzZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTEw
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtCdWlsZC10
aW1lIHBlcmZdIEZvcndhcmQtZGVjbGFyZSBtb3JlIHRoaW5ncyBpbiBEb2N1bWVudC5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDZhMDczYjkzYWJjMzY3NTc1OTY1NDU3NDZiNzc0NjU4YmIwYmIwY2EuLmUyOTQyMmU1
MGEyNzVhYjQ1NDFlM2Q0ZmNlNTE5MDljNTU5NjA2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMjEtMTAtMTQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAg
ICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHUFUgcHJvY2VzcyBzaWRlIGNoYW5nZXMgZm9yIFVJIHNpZGUgY29t
cG9zaXRpbmcuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3Jr
UXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVNb2RlbEhvc3Rpbmc6OmR1bXBBZGRpdGlvbmFs
UHJvcGVydGllcyk6CisgICAgICAgIFVuaWZpZWQgYnVpbGQgZml4ZXMuCisKIDIwMjEtMTAtMTIg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0J1aWxkLXRpbWUg
cGVyZl0gRm9yd2FyZC1kZWNsYXJlIG1vcmUgdGhpbmdzIGluIERvY3VtZW50LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVmZTM0YWI1MTBhYjMz
ZTcxNy4uNTQ4OWExYWFkYzE5YzVlOWY3ZjZmNWRkYzQxYzExYTk5MmQzZjE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTI4Miw2ICsyODIsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9UcmFuc2Zvcm1hdGlvbk1hdHJpeENBLmNwcAogCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlk
ZXIubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmlsdGVy
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0KQEAgLTMyOCwxMSArMzI5LDEyIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZVBvb2xDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1t
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
Lm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCiAKKwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDYXNjYWRlQ29yZVRleHQuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTYzNSw2ICs2
MzcsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJWaWRlb0NvbnRhaW5lckxheWVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IGE0YzBhNzYyN2MzNzgxZGZjZDA0OTA2ZmM1MjMzMDljOTA3
MzBjMmMuLmU1MmQ5OTY5MjUyMjI0NjE2MWY0NmY1Yzg1MDJjNmQ1OTEwYWFjNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMzIwLDYgKzMyMCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyQ0EuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmNwcApAQCAtMzMzLDYgKzMzNCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJT
eXN0ZW1CYWNrZHJvcExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxl
ZEJhY2tpbmdMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVmlkZW9Db250
YWluZXJMYXllci5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvR3JhcGhpY3NMYXllcklP
U3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCkBAIC0zODUsOSArMzg3LDkgQEAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQorcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
aWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRDYXNjYWRlQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1ZTQ5ODZjNTNh
MWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZkMjc1NjU0Y2Fk
YzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIwNDcyLDYgQEAg
X09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19NRVRBQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18kX1dlYkNvcmVG
dWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRv
dwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9XZWJHTExheWVy
CiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJMYXllcgogX09C
SkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYgQEAgX09CSkNf
SVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2FybmluZwogX09C
SkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJnZXQKIF9PQkpD
X0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9uCiBfT0JKQ19J
VkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1fT0JKQ19JVkFS
XyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVyLm1fbGF5ZXJP
d25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFSXyRfV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjVhNGI0ZDZiNzAyNDczMDc1
ZjI5OGYzOWFjMzk2NDU4YjI3Y2NlYS4uY2JiYTQ2N2MwNTZhYThiMzkwNDU4YjIxNGU3Y2E2OWE0
ZDdmYzZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQzMCw3ICsxNDMwLDYgQEAKIAkJNDlFQ0VCNzAxNDk5NzkwRDAwQ0RE
M0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDEzRjEw
NTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAqLzsgfTsKIAkJ
NDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDE0MTEwNTE5
Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKLQkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi87IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5
RTFBQUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVF
NkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yMzU0LDYgKzIzNTMsOCBAQAogCQk3QUY5QjIwRjE4Q0ZC
NUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNWVFRS
ZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAzMzlG
MjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyog
R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNTgyREQ2MjcxNkY1NUEwMDRCOTJEMCAvKiBHcmFwaGlj
c0xheWVyQ29udGVudHNQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTdCNTgyRERDMjcxNzE4OEIwMDRCOTJEMCAvKiBHcmFwaGljc0xh
eWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1ODJEREEyNzE3MTg4OTAwNEI5MkQwIC8qIEdyYXBoaWNz
TGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFO
R0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEy
RTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJF
OTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVD
MDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3
MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NzM0LDggKzg3MzUsNiBA
QAogCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUZDN0E0RjE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzEx
OCAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdl
YkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZDMTI5
QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1B
c3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwRkZB
OUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjg1LDYgKzEw
Njg0LDExIEBACiAJCTdCMTAzMzlBMjU0OTcyMDAwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhD
MUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMz
OUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xDVi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjU4MkRENjI3MTZGNTVBMDA0QjkyRDAgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRz
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1ODJERDkyNzE3MTg3
NTAwNEI5MkQwIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyQ0EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXJDQS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTgyRERBMjcxNzE4ODkwMDRCOTJEMCAvKiBHcmFwaGlj
c0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjU4MkREQjI3MTcxODhBMDA0QjkyRDAgLyogR3Jh
cGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92
aWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1ODJEREUyNzE3MThEMDAw
NEI5MkQwIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLmNwcDsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlBy
b2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNwcDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjA1NTMsNiArMjA1NTcsOCBAQAogCQk0OTU4NzgxRTEyQTU3REJDMDA3MjM4
QUMgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTdCNTgyRERBMjcxNzE4ODkwMDRCOTJEMCAvKiBHcmFwaGljc0xheWVySU9TdXJmYWNlQ29u
dGVudHNQcm92aWRlci5oICovLAorCQkJCTdCNTgyRERCMjcxNzE4OEEwMDRCOTJEMCAvKiBHcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5tbSAqLywKIAkJCQkwRjVFMjAwNTE4
RTc3MUZDMDAzRUMzRTUgLyogUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggKi8sCiAJCQkJNDk1
ODc4MUYxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbSAqLywK
IAkJCQkwRjEzMTYzRjE2RUQwQ0RFMDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5t
bSAqLywKQEAgLTIwNTc0LDYgKzIwNTgwLDcgQEAKIAkJCQk0OTU4NzgxRTEyQTU3REJDMDA3MjM4
QUMgLyogY29jb2EgKi8sCiAJCQkJNDk5QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNz
TGF5ZXJDQS5jcHAgKi8sCiAJCQkJNDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNz
TGF5ZXJDQS5oICovLAorCQkJCTdCNTgyREQ5MjcxNzE4NzUwMDRCOTJEMCAvKiBHcmFwaGljc0xh
eWVyQ29udGVudHNQcm92aWRlckNBLmNwcCAqLywKIAkJCQk3QUEzQTY5RDE5NEI1OUI2MDAxQ0JE
MjQgLyogTGF5ZXJQb29sLmNwcCAqLywKIAkJCQk3QUEzQTY5RTE5NEI1OUI2MDAxQ0JEMjQgLyog
TGF5ZXJQb29sLmggKi8sCiAJCQkJMEZERjQ1QTYxQkQxQzZGRDAwRTRGQThDIC8qIFBsYXRmb3Jt
Q0FBbmltYXRpb24uY3BwICovLApAQCAtMjcyNTEsNiArMjcyNTgsNyBAQAogCQkJCTBGNTgwQjA5
MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBG
MTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEy
NjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCisJCQkJN0I1ODJERDYyNzE2
RjU1QTAwNEI5MkQwIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmggKi8sCiAJCQkJ
MUFDNjk1OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJ
CQkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAq
LywKIAkJCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIu
aCAqLywKQEAgLTI3NTYxLDEwICsyNzU2OSw5IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0
MTg0IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAw
MEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3
NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAot
CQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlG
RkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQy
NTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdG
NUNGRjIyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAor
CQkJCTdCNTgyRERFMjcxNzE4RDAwMDRCOTJEMCAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyODcyLDcgKzMyODc5LDkgQEAKIAkJCQkwRjU4MEIwRDBG
MTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5
QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiBHcmFwaGljc0xh
eWVyQ29udGVudHNQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1
MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QjU4MkREQzI3MTcxODhCMDA0QjkyRDAgLyogR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRz
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAv
KiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2
Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3QTE3
QTdCMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzR0wuaCBpbiBIZWFkZXJzICovLApA
QCAtMzYwODUsNyArMzYwOTQsNiBAQAogCQkJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBX
ZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBE
QjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0
MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEy
ZDVjMjViNmJhZWEyMjNmNTY3Yi4uNDNhYzExNWNjOTQ2ZjAxYTQyNDc5NjY4MjMxY2I5OWJjNTdh
NDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFn
ZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oIgog
I2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDExIEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRlcmVmQ2Fu
dmFzQmFzZSgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNQcm92aWRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oCmluZGV4IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjRk
MjQ3YzY2YTRlM2NlY2RkYzRhNjc0MzZkYmU5NTJhN2I5NDRiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcg
Kzc3LDcgQEAgcHVibGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gbGF5ZXJDb250
ZW50c1Byb3ZpZGVyKCkgY29uc3Q7CiAKICAgICBib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZl
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggZDZkZWY1MmNkZGZiMTYyMGJlY2RkYmJlMDcy
Y2ZiOTZkY2I2M2I4ZS4uZGRlZDJkMDI2MWYwNTZlNWYxZDM3ZGUxZTUzY2E2ZGI1ZWY5NDM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNQcm92aWRlci5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKQEAgLTY0MzIsOSArNjQzMywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmlzQ29udGV4dFVucmVjb3ZlcmFibHlMb3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0
TG9zdCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsKIH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzUHJvdmlkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxheWVyQ29u
dGVudHNQcm92aWRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYm
ICFtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVy
KCkgOiAwOworICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNv
bHV0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5s
YXllckNvbnRlbnRzUHJvdmlkZXIoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCBiNzE3MGQyYmQ3MWYxMTE3NTg4NmYxMTM3ZDExZTIyMmI0MzI1MmIxLi5hZWJj
MWU1NTM4Y2QwMzFhZThkMGQwNzA4ZTg4Yjc0OTc2MWE2NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0z
ODYsNyArMzg2LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdyYXBoaWNz
Q29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAgICAgV2ViR0xD
b250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEdyb3Vw
LmdldCgpOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gbGF5ZXJDb250
ZW50c1Byb3ZpZGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTcz
MGJjNTI1NDZjNzAwNmVkMjM3MjczOTYwZC4uOWNkMGI3ODkwZTZhYzhmNjI4Mzc4ODQ1MmJjNzg4
ZmY2NmExMGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VC
R0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03ODYsNyArNzg2
LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAgICB9OwogCi0gICAgdmlydHVhbCBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdy
YXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBsYXllckNvbnRlbnRzUHJvdmlkZXIoKSBjb25z
dCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhhKERhdGFGb3Jt
YXQgZm9ybWF0KQogICAgIHsKQEAgLTEyNzEsNyArMTI3MSw5IEBAIHB1YmxpYzoKICAgICAvLyBl
cnJvciBsaXN0LiBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgbW92ZWQuCiAg
ICAgdmlydHVhbCBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpID0gMDsKKyAgICAvLyBQcmVwYXJl
cyB0aGUgY29udGV4dCBmb3IgZGlzcGxheS4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgcHJlcGFy
YXRpb24gcHJvZHVjZWQgYSBuZXcgZnJhbWUuCisgICAgdmlydHVhbCBib29sIHByZXBhcmVGb3JE
aXNwbGF5KCkgPSAwOwogCiAgICAgLy8gRklYTUU6IHNob3VsZCBiZSByZW1vdmVkLCBjYWxsZXIg
c2hvdWxkIGtlZXAgdHJhY2sgb2YgY2hhbmdlZCBzdGF0ZS4KICAgICB2aXJ0dWFsIHZvaWQgbWFy
a0NvbnRleHRDaGFuZ2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA1NmEzNzlmODNjMDNjOTAyMjk2ZDZmNTU2
MWIzZTFjNmY5OGI2YTcxLi4yMmVmYTdiNzAxODdiOTlmMTEzODdkY2Q3YjA2NWU2Y2VjZDU5NTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oIgogI2luY2x1ZGUgIkxheW91dFJlY3Qu
aCIKICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtNjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3Vt
ZUFuaW1hdGlvbnMoKQogewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJv
bVByb3ZpZGVyKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlcj4mJiwgQ29udGVu
dHNMYXllclB1cnBvc2UpCit7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3Jk
ZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIHdpZHRoID0g
MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAppbmRleCAyMTlmNzUzMGNkYmMxNDE0OTE3MzA5ZWIxMzY3OGExMTk2ZWEzOGNmLi5iNzgyMGE2
NjE5YWM3NjYzNmM3MGVkYTkyMmRmNmM2ZDQxOWIyNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC01OCw2ICs1OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuaW1hdGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5OworY2xhc3MgR3JhcGhpY3NMYXllckNvbnRl
bnRzUHJvdmlkZXI7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNr
aW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQg
Y29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tUHJvdmlkZXIoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiYmLCBDb250ZW50c0xheWVyUHVycG9z
ZSk7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIHsgfQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
cklEIGNvbnRlbnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRl
bnRzUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c1Byb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhjYmE0ZWU1Mzg3MzI1NTMzOWZj
MDhmYzZlMTI0OGI0Y2I5NzAyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmgKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIEdyYXBo
aWNzTGF5ZXJDQTsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9y
ICdhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhpY3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZv
ciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNlcyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNv
bnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNz
IEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhp
Y3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGlj
c0xheWVyQ29udGVudHNQcm92aWRlcigpID0gZGVmYXVsdDsKKworI2lmIFVTRShDQSkKKyAgICB2
aXJ0dWFsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNvbnRlbnRzRm9yTGF5ZXIoR3JhcGhpY3NM
YXllckNBJiBvd25lcikgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoQ0EpCisg
ICAgLy8gVGhlc2UgZmFjdG9yeSBtZXRob2RzIGNvdWxkIGJlIHJlbW92ZWQgaWYgdGhlIGNyZWF0
ZVBsYXRmb3JtQ0FMYXllciB3b3VsZCBiZSBtb3ZlZCBmcm9tCisgICAgLy8gR3JhcGhpY3NMYXll
ckNBIHRvIFBsYXRmb3JtQ0FMYXllckZhY3RvcnkuCisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNB
TGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwg
R3JhcGhpY3NMYXllckNBJiBvd25lcik7CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUxheWVyKiwgR3JhcGhpY3NMYXllckNBJiBv
d25lcik7CisgICAgLy8gQWRkIGNyZWF0ZVBsYXRmb3JtQ0FMYXllciBmb3IgTW9kZWwgd2hlbiBt
b2RlbCBnb2VzIHRocm91Z2ggdGhpcyBwcm92aWRlci4KKyNlbmRpZgorfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4IDdhZWUzOGYzOWYzYjNkYWQ2
MjQwODJkYmJiOTA4NDQ2M2JjMzJhNGIuLmRjMDdmNGEzMDAyY2Q4MGZhMTUwNmU0MDJhYWE4YTRk
NDZlNzlhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKQEAg
LTI5LDEwICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdM
KQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNp
bmNsdWRlICJHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oIgorI2luY2x1
ZGUgIklPU3VyZmFjZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgOiBHcmFw
aGljc0NvbnRleHRHTChhdHRycykKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fbGF5ZXJD
b250ZW50c1Byb3ZpZGVyKEdyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyOjpj
cmVhdGUoKSkKKyNlbmRpZgogewogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQpAQCAtMTMx
LDcgKzEzOSw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRm
b3JtSW5pdGlhbGl6ZSgpCiB7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xh
eWVyQ29udGVudHNQcm92aWRlcj4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omxh
eWVyQ29udGVudHNQcm92aWRlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAppbmRleCBlOWVjYjg3YzcwYTU0MzAw
ODJmNzQ2ZDYyNmEwNTFlYmRjNjcyNTI1Li5iMGMxMzIwMGZiYTQ5MWQxYmY5YTNkYzAwNTQyMDNk
MGMxZjBkNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKQEAgLTM0
LDE3ICszNCwxNSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi1PQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CisjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluOworY2xhc3MgR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXI7Citj
bGFzcyBJT1N1cmZhY2U7CiAjZW5kaWYKIAogLy8gQSBiYXNlIGNsYXNzIGZvciBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBwcm94eSBzaWRlIGltcGxlbWVudGF0aW9uCkBAIC01OCw3ICs1Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIE90aGVyIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMIG92ZXJy
aWRlcy4KICAgICB1c2luZyBHcmFwaGljc0NvbnRleHRHTDo6aXNFbmFibGVkOwotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhp
Y3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IGxheWVyQ29udGVudHNQcm92aWRlcigpIGNvbnN0IGZp
bmFsOwogICAgIEV4dGVuc2lvbnNHTCYgZ2V0RXh0ZW5zaW9ucygpIGZpbmFsOwogICAgIHZvaWQg
c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkgZmluYWw7CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxp
YW50KCkgY29uc3QgZmluYWw7CkBAIC05MiwxNCArOTAsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBlbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkgPSAwOwogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBwbGF0
Zm9ybVN3YXBDaGFpbigpOworICAgIFJlZjxHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQ
cm92aWRlcj4gbV9sYXllckNvbnRlbnRzUHJvdmlkZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8
V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwotI2VuZGlmCiAKICAgICAvLyBHdWFyZGVkIGJ5IHdh
aXRVbnRpbEluaXRpYWxpemVkKCkuCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fYXZhaWxhYmxlRXh0
ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDJkMmYxMWE0N2Q2NDZkZWQ5MDExYjViMmU4ZTNl
MjNmNmY3NjYxZWUuLjlmM2NkZTE2ZmQ4Y2ZlYmI0MWU3MTdkOWY5YTk4N2RkNjkwMmI5OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVw
bGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCkBAIC0xMzQ4LDYgKzEzNDksMjggQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIsIEMKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0
Zm9ybUxheWVyQ2hhbmdlZCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50
c0Zyb21Qcm92aWRlcihSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+JiYgcHJv
dmlkZXIsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVu
dHNMYXllciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzUHJvdmlkZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+
c2V0T3duZXIobnVsbHB0cik7CisgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKKyAgICBt
X2NvbnRlbnRzUHJvdmlkZXIgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBvc2Ug
PSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAgICAg
ICAgaWYgKGF1dG8gY29udGVudHNMYXllciA9IHByb3ZpZGVyLT5jb250ZW50c0ZvckxheWVyKCp0
aGlzKSkgeworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gV1RGTW92ZShjb250ZW50c0xh
eWVyKTsKKyAgICAgICAgICAgIG1fY29udGVudHNQcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIp
OworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKK30KKwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0xheWVyQ0E6OmNvbnRl
bnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4
NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjEyYTk5OTBlZDQ0Njc1YWZmM2RhM2VjZGM3N2M2
ZTgwN2MwZDQ2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tUHJvdmlkZXIo
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9T
b2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1v
ZGVsPiYmKSBvdmVycmlkZTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2Vu
ZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyPiBtX2NvbnRlbnRz
UHJvdmlkZXI7CiAKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRp
b25zOwogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5z
Zm9ybUFuaW1hdGlvbnM7CkBAIC02NjMsNiArNjY2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aGFzRXZlclBhaW50ZWQgOiAxOwogICAgIGJvb2wgbV9oYXNEZXNjZW5kYW50c1dpdGhSdW5uaW5n
VHJhbnNmb3JtQW5pbWF0aW9ucyA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVu
Y29tbWl0dGVkQ2hhbmdlcyA6IDE7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzTGF5ZXJDb250
ZW50c1Byb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNvbnRlbnRz
UHJvdmlkZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ29udGVudHNQcm92aWRlckNBLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDc0M2UwZjgzNmFk
MjFkMzE2YjViODNhNzRiYmJmODdjZjI4OTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXJD
QS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
Q29udGVudHNQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxQbGF0Zm9y
bUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgdHlwZSwgR3JhcGhpY3NMYXllckNBJiBv
d25lcikKK3sKKyAgICByZXR1cm4gb3duZXIuY3JlYXRlUGxhdGZvcm1DQUxheWVyKHR5cGUsICZv
d25lcik7Cit9CisKK1JlZjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDb250ZW50c1By
b3ZpZGVyOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIEdyYXBo
aWNzTGF5ZXJDQSYgb3duZXIpCit7CisgICAgcmV0dXJuIG93bmVyLmNyZWF0ZVBsYXRmb3JtQ0FM
YXllcihsYXllciwgJm93bmVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMWYzOTJmNTQ3
NzM5NGNjM2M3NzVmYTRkMTk4Yzc0MzgyOTJhYTUyZC4uNWE4NTg4ZjI4ZjlmZTg5MDk0YWI4ZmRm
MjUwZjM5MmYxMDk0MWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC0yMzEsOCArMjMxLDggQEAgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGUgbGF5ZXJUeXBlKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBs
YXllckxheWVyOgogICAgICAgICB0cyA8PCAiYXYtcGxheWVyLWxheWVyIjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllcjoKLSAgICAgICAgdHMgPDwgImNvbnRlbnRzLXByb3ZpZGVkLWxheWVyIjsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNJT1N1cmZhY2VMYXllcjoKKyAgICAg
ICAgdHMgPDwgImNvbnRlbnRzLWlvc3VyZmFjZS1sYXllciI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgogICAgICAgICB0cyA8
PCAic2hhcGUtbGF5ZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4
ODhlOWRkYTkyZDE1ODM0Li5kN2FjNjRhNzc3ODc4OGFkZWQ4YjRjNmUxMTE1ZDZhOWMzNWE2MmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuaApAQCAtNzAsNyArNzAsOSBAQCBwdWJsaWM6CiAgICAgICAgIExheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllciwKICAgICAgICAgTGF5ZXJUeXBlUm9vdExheWVyLAogICAg
ICAgICBMYXllclR5cGVBVlBsYXllckxheWVyLAotICAgICAgICBMYXllclR5cGVDb250ZW50c1By
b3ZpZGVkTGF5ZXIsCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIExheWVyVHlwZUNvbnRl
bnRzSU9TdXJmYWNlTGF5ZXIsCisjZW5kaWYKICAgICAgICAgTGF5ZXJUeXBlQmFja2Ryb3BMYXll
ciwKICAgICAgICAgTGF5ZXJUeXBlU2hhcGVMYXllciwKICAgICAgICAgTGF5ZXJUeXBlTGlnaHRT
eXN0ZW1CYWNrZHJvcExheWVyLApAQCAtMzU1LDcgKzM1Nyw5IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU+IHsKICAgICAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGU6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ1RpbGVMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGU6OkxheWVyVHlwZVJvb3RMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGU6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXIsCi0gICAgICAgIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIs
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlOjpMYXllclR5cGVDb250ZW50c0lPU3VyZmFjZUxheWVyLAorI2VuZGlmCiAgICAg
ICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlOjpMYXllclR5cGVCYWNrZHJv
cExheWVyLAogICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZTo6TGF5
ZXJUeXBlU2hhcGVMYXllciwKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGU6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL0dyYXBoaWNzTGF5ZXJJT1N1
cmZhY2VDb250ZW50c1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9HcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVmMGFhODFhNzA0M2EyMjc3ZDZkM2YzZjQzZTlkOGJjYjVlYWJlMzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9HcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c1Byb3ZpZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgSU9TdXJmYWNlOworCisvLyBDb250ZW50cyBwcm92aWRlciBm
b3IgY2FzZXMgd2hlcmUgSU9TdXJmYWNlIGlzIGFjY2Vzc2libGUuCitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlciBmaW5hbCA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcj4gY3JlYXRlKCk7CisgICAg
fkdyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyKCkgZmluYWw7CisKKyAgICAv
LyBHcmFwaGljc0xheWVyQ29udGVudHNQcm92aWRlciBvdmVycmlkZXMuCisgICAgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gY29udGVudHNGb3JMYXllcihHcmFwaGljc0xheWVyQ0EmIG93bmVyKSBm
aW5hbDsKKworICAgIHZvaWQgc2V0TGF5ZXJDb250ZW50cyhJT1N1cmZhY2UmKTsKK3ByaXZhdGU6
CisgICAgR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXIoKTsKKyAgICBDRlR5
cGVSZWYgbV9wZW5kaW5nQ29udGVudHMgPSBudWxscHRyOworICAgIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IG1fbGF5ZXI7Cit9OworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJv
dmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9HcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGMzODk1
NzZlN2NlNGUyNzM1NDllODBjYmQ4YjQzMzUxZDZkOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvR3JhcGhpY3NMYXllcklPU3Vy
ZmFjZUNvbnRlbnRzUHJvdmlkZXIubW0KQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oIgorCisjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckNBLmgiCisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIFJlZjxHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQ
cm92aWRlcj4gR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlkZXI6OmNyZWF0ZSgp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRl
bnRzUHJvdmlkZXIpOworfQorLy8gRklYTUU6IEFkZCBjb250ZW50c1NjYWxlIHByb3BlcnR5Lgor
Ly8gRklYTUU6IEFkZCBjb250ZW50c09wYXF1ZSBwcm9wZXJ0eS4KK0dyYXBoaWNzTGF5ZXJJT1N1
cmZhY2VDb250ZW50c1Byb3ZpZGVyOjpHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92
aWRlcigpID0gZGVmYXVsdDsKKworR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRzUHJvdmlk
ZXI6On5HcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcigpID0gZGVmYXVsdDsK
KworUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllcklPU3VyZmFjZUNvbnRlbnRz
UHJvdmlkZXI6OmNvbnRlbnRzRm9yTGF5ZXIoR3JhcGhpY3NMYXllckNBJiBvd25lcikKK3sKKyAg
ICAvLyBGSVhNRTogZGVmaW5lIGFzcGVjdHMgb2YgbXVsdGlwbGUgY2FsbHMgb3Igc3Vic2NyaWJl
L3Vuc3Vic2NyaWJlIHBhdHRlcm4gd2l0aCBtdWx0aXBsZSBsYXllcnMuCisgICAgaWYgKG1fbGF5
ZXIpIHsKKyAgICAgICAgaWYgKCFtX2xheWVyLT5vd25lcigpKQorICAgICAgICAgICAgbV9sYXll
ci0+c2V0T3duZXIoJm93bmVyKTsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXItPm93bmVyKCkgPT0g
Jm93bmVyKTsKKyAgICAgICAgcmV0dXJuIG1fbGF5ZXI7CisgICAgfQorICAgIG1fbGF5ZXIgPSBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c0lP
U3VyZmFjZUxheWVyLCBvd25lcik7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRlbnRzKQorICAgICAg
ICBtX2xheWVyLT5zZXRDb250ZW50cygoX19icmlkZ2UgaWQpc3RkOjpleGNoYW5nZShtX3BlbmRp
bmdDb250ZW50cywgbnVsbHB0cikpOworICAgIHJldHVybiBtX2xheWVyOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250ZW50c1Byb3ZpZGVyOjpzZXRMYXllckNvbnRlbnRzKElP
U3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBpZiAoIW1fbGF5ZXIpIHsKKyAgICAgICAgLy8gRklY
TUU6IEl0IGlzIG5vdCBuaWNlIHRvIG5lZWQgdG8gY2FjaGUgdGhlIGNvbnRlbnRzLgorICAgICAg
ICAvLyBGSVhNRTogUmVmPworICAgICAgICBtX3BlbmRpbmdDb250ZW50cyA9IChfX2JyaWRnZSBD
RlR5cGVSZWYpc3VyZmFjZS5hc0xheWVyQ29udGVudHMoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2xheWVyLT5zZXRDb250ZW50cyhzdXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsK
KyAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5tbQppbmRleCBjMDhiYjA3NDk0NjEyNmRmNTY5YTg0MWQwYjU2MWZhOTY3
NTdhMzY0Li40YzMzYWIyMTQ4NjljYWEzMjNmZmQ1NTU1OTRkZGY1YzkzNmNkZDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAi
VGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdh
dGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJHTExh
eWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpA
QCAtNjgsNiArNjcsMjEgQEAKIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+CiAKKy8vIEZJWE1FOiBNb3ZlIHRvIG93biBmaWxlLgorQGludGVyZmFjZSBXZWJDb250
ZW50c0lPU3VyZmFjZUxheWVyIDogQ0FMYXllcgorQGVuZAorQGltcGxlbWVudGF0aW9uIFdlYkNv
bnRlbnRzSU9TdXJmYWNlTGF5ZXIKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIHJldHVybiBzZWxmOworfQorLSAodm9pZClkaXNwbGF5Cit7CisgICAgLy8gRGlz
YWJsZSBkaXNwbGF5IHRvIHVzZSB0aGUgY29udGVudHMgYXMgdGhlIGRpc3BsYXkgY29udGVudHMu
Cit9CitAZW5kCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgTGF5ZXJUb1BsYXRmb3Jt
Q0FMYXllck1hcCA9IEhhc2hNYXA8dm9pZCosIFBsYXRmb3JtQ0FMYXllcio+OwpAQCAtMjExLDkg
KzIyNSw2IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9D
b250YWluZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJU
eXBlQVZQbGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xM
YXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOwotCiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjY1LDkgKzI3Niw4
IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUg
bGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGlmIChQQUw6OmlzQVZGb3VuZGF0
aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAgICAgICBsYXllckNsYXNzID0gUEFMOjpn
ZXRBVlBsYXllckxheWVyQ2xhc3MoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNJT1N1cmZhY2VM
YXllcjoKKyAgICAgICAgbGF5ZXJDbGFzcyA9IFtXZWJDb250ZW50c0lPU3VyZmFjZUxheWVyIGNs
YXNzXTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2Fz
ZSBMYXllclR5cGVNb2RlbExheWVyOgpAQCAtMzEwLDcgKzMyMCw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwg
dGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29u
dGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmICht
X2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExh
eWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1
c3RvbSkKICAgICAgICAgW21fbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNl
CiAgICAgICAgIFttX2xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVy
RGVsZWdhdGUgc2hhcmVkXV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IGI2Mjhk
YTk2Yjg2ZmMyMmFjM2YwY2M1MDkyNmM0ODIzOGY3ZDVmNDYuLjA5ZGZkYjk3ODdjZTIzOWEyMzk1
Y2E4ZGRiOTJiYjQyZWJmYTNlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC03
MzEsNyArNzMxLDYgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOiBsYXllclR5cGVOYW1lID0g
InRpbGVkLWJhY2tpbmctdGlsZS1sYXllciI7IGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVSb290TGF5ZXI6IGxheWVyVHlwZU5hbWUgPSAicm9vdC1sYXllciI7IGJy
ZWFrOwogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOiBs
YXllclR5cGVOYW1lID0gImF2cGxheWVyLWxheWVyIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjogbGF5ZXJUeXBlTmFtZSA9
ICJjb250ZW50cy1wcm92aWRlZC1sYXllciI7IGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVCYWNrZHJvcExheWVyOiBsYXllclR5cGVOYW1lID0gImJhY2tkcm9wLWxh
eWVyIjsgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNoYXBlTGF5
ZXI6IGxheWVyVHlwZU5hbWUgPSAic2hhcGUtbGF5ZXIiOyBicmVhazsKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyOiBsYXllclR5cGVO
YW1lID0gImxpZ2h0LXN5c3RlbS1iYWNrZHJvcC1sYXllciI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggY2NiYzRkZDEzMmViNTYzOWEyYWU0
YzY3Y2VkOTFhY2RhN2MyM2MxZS4uOTQ5NTM4N2M4YmQzYTE1MTdjMjVjYzcxYWMwZTljMDVkNmVj
NjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0z
Niw3ICszNiw2IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHQml0bWFw
Q29udGV4dC5oPgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTWV0YWxTUEkuaD4KQEAgLTYwLDYgKzU5LDcgQEAgV1RGX1dFQUtfTElOS19GT1JDRV9JTVBP
UlQoRUdMX0luaXRpYWxpemUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKwogYm9vbCBwbGF0
Zm9ybUlzQU5HTEVBdmFpbGFibGUoKQogewogICAgIC8vIFRoZSBBTkdMRSBpcyB3ZWFrIGxpbmtl
ZCBpbiBmdWxsLCBhbmQgdGhlIEVHTF9Jbml0aWFsaXplIGlzIGV4cGxpY2l0bHkgd2VhayBsaW5r
ZWQgYWJvdmUKQEAgLTE5MywyOSArMTkzLDE1IEBAIHN0YXRpYyBib29sIG5lZWRzRUFHTE9uTWFj
KCkKIH0KICNlbmRpZgogCi1SZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIC8vIE1ha2Ugc3BhY2UgZm9y
IHRoZSBpbmNvbWluZyBjb250ZXh0IGlmIHdlJ3JlIGZ1bGwuCi0gICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVjeWNsZUNvbnRleHRJZk5lY2Vzc2Fy
eSgpOwotICAgIGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5oYXNUb29NYW55Q29udGV4dHMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cnMsIGhvc3RXaW5kb3csIG51bGxwdHIpKTsKLQor
ICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wo
V1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgIGlmICghY29udGV4dC0+bV9jb250ZXh0T2JqKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7Ci0KICAgICBy
ZXR1cm4gY29udGV4dDsKIH0KIAotUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJzLCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biogc3dhcENoYWluKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKGF0dHJzLCBudWxscHRyLCBzd2FwQ2hhaW4pKTsKLX0KLQotR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluKiBzd2FwQ2hhaW4pCitHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzKQogICAgIDogR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMpCiB7CiAgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJzLndlYkdM
VmVyc2lvbiA9PSBHcmFwaGljc0NvbnRleHRHTFdlYkdMVmVyc2lvbjo6V2ViR0wyOwpAQCAtMzUz
LDE4ICszMzksNiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIHZhbGlkYXRlQXR0cmli
dXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2
ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCi0gICAgaWYgKHN3YXBDaGFpbikKLSAgICAg
ICAgbV9zd2FwQ2hhaW4gPSBzd2FwQ2hhaW47Ci0gICAgZWxzZSB7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExh
eWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRp
byBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAg
IFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fc3dhcENoYWluID0gJlttX3dlYkdMTGF5
ZXIgc3dhcENoYWluXTsKLSAgICB9Ci0KICAgICAvLyBDcmVhdGUgdGhlIHRleHR1cmUgdGhhdCB3
aWxsIGJlIHVzZWQgZm9yIHRoZSBmcmFtZWJ1ZmZlci4KICAgICBHTGVudW0gdGV4dHVyZVRhcmdl
dCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAKQEAgLTQzOSwxNCArNDEzLDEyIEBA
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAg
IH0KICAgICBpZiAobV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcikKICAgICAgICAgRUdMX0Rlc3Ryb3lT
dXJmYWNlKG1fZGlzcGxheU9iaiwgbV9kaXNwbGF5QnVmZmVyUGJ1ZmZlcik7Ci0gICAgaWYgKG1f
c3dhcENoYWluKSB7Ci0gICAgICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+
cmVjeWNsZUJ1ZmZlcigpOwotICAgICAgICBpZiAocmVjeWNsZWRCdWZmZXIuaGFuZGxlKQotICAg
ICAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIu
aGFuZGxlKTsKLSAgICAgICAgYXV0byBjb250ZW50c0hhbmRsZSA9IG1fc3dhcENoYWluLT5kZXRh
Y2hDbGllbnQoKTsKLSAgICAgICAgaWYgKGNvbnRlbnRzSGFuZGxlKQotICAgICAgICAgICAgRUdM
X0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5kbGUpOwotICAgIH0KKyAg
ICBhdXRvIHJlY3ljbGVkQnVmZmVyID0gbV9zd2FwQ2hhaW4ucmVjeWNsZUJ1ZmZlcigpOworICAg
IGlmIChyZWN5Y2xlZEJ1ZmZlci5oYW5kbGUpCisgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZSht
X2Rpc3BsYXlPYmosIHJlY3ljbGVkQnVmZmVyLmhhbmRsZSk7CisgICAgYXV0byBjb250ZW50c0hh
bmRsZSA9IG1fc3dhcENoYWluLmRldGFjaENsaWVudCgpOworICAgIGlmIChjb250ZW50c0hhbmRs
ZSkKKyAgICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgY29udGVudHNIYW5k
bGUpOwogICAgIGlmIChtX2NvbnRleHRPYmopIHsKICAgICAgICAgbWFrZUN1cnJlbnQobV9kaXNw
bGF5T2JqLCBFR0xfTk9fQ09OVEVYVCk7CiAgICAgICAgIEVHTF9EZXN0cm95Q29udGV4dChtX2Rp
c3BsYXlPYmosIG1fY29udGV4dE9iaik7CkBAIC01NjcsMTIgKzUzOSwxMCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogICAgICAg
ICBtX2Rpc3BsYXlCdWZmZXJQYnVmZmVyID0gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQogICAgIC8v
IFJlc2V0IHRoZSBmdXR1cmUgcmVjeWNsZWQgYnVmZmVyIG5vdywgYmVjYXVzZSBpdCBtb3N0IGxp
a2VseSB3aWxsIG5vdCBiZSByZXVzYWJsZSBhdCB0aGUgdGltZSBpdCB3aWxsIGJlIHJldXNlZC4K
LSAgICBpZiAobV9zd2FwQ2hhaW4pIHsKLSAgICAgICAgYXV0byByZWN5Y2xlZEJ1ZmZlciA9IG1f
c3dhcENoYWluLT5yZWN5Y2xlQnVmZmVyKCk7Ci0gICAgICAgIGlmIChyZWN5Y2xlZEJ1ZmZlci5o
YW5kbGUpCi0gICAgICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5T2JqLCByZWN5
Y2xlZEJ1ZmZlci5oYW5kbGUpOwotICAgICAgICByZWN5Y2xlZEJ1ZmZlci5zdXJmYWNlLnJlc2V0
KCk7Ci0gICAgfQorICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi5yZWN5Y2xl
QnVmZmVyKCk7CisgICAgaWYgKHJlY3ljbGVkQnVmZmVyLmhhbmRsZSkKKyAgICAgICAgRUdMX0Rl
c3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcmVjeWNsZWRCdWZmZXIuaGFuZGxlKTsKKyAgICBy
ZWN5Y2xlZEJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CiAgICAgcmV0dXJuIGFsbG9jYXRlQW5kQmlu
ZERpc3BsYXlCdWZmZXJCYWNraW5nKCk7CiB9CiAKQEAgLTcxMywyMSArNjgzLDIxIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRl
ZEV2ZW50Rm9yVGVzdGluZyBlCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKG1fbGF5ZXJDb21wb3NpdGVkKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwcmVw
YXJlVGV4dHVyZUltcGwoKTsKIAogICAgIC8vIFRoZSBJT1N1cmZhY2Ugd2lsbCBiZSB1c2VkIGZy
b20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lzdGVtLCBzbyBmbHVzaCBHTCBjb21tYW5kcy4KICAgICBn
bDo6Rmx1c2goKTsKIAotICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi0+cmVj
eWNsZUJ1ZmZlcigpOworICAgIGF1dG8gcmVjeWNsZWRCdWZmZXIgPSBtX3N3YXBDaGFpbi5yZWN5
Y2xlQnVmZmVyKCk7CiAKICAgICBFR0xfUmVsZWFzZVRleEltYWdlKG1fZGlzcGxheU9iaiwgbV9k
aXNwbGF5QnVmZmVyUGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKLSAgICBtX3N3YXBDaGFpbi0+
cHJlc2VudCh7IFdURk1vdmUobV9kaXNwbGF5QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZl
clBidWZmZXIgfSk7CisgICAgbV9zd2FwQ2hhaW4ucHJlc2VudCh7IFdURk1vdmUobV9kaXNwbGF5
QnVmZmVyQmFja2luZyksIG1fZGlzcGxheUJ1ZmZlclBidWZmZXIgfSk7CiAgICAgbV9kaXNwbGF5
QnVmZmVyUGJ1ZmZlciA9IEVHTF9OT19TVVJGQUNFOwogCiAgICAgYm9vbCBoYXNOZXdCYWNraW5n
ID0gZmFsc2U7CkBAIC03NDksOSArNzE5LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgICAgICBib29sIHN1Y2Nlc3MgPSB3YWl0QW5kVXBk
YXRlT2xkZXN0RnJhbWUoKTsKICAgICAgICAgVU5VU0VEX1ZBUklBQkxFKHN1Y2Nlc3MpOyAvLyBG
SVhNRTogaW1wbGVtZW50IGNvbnRleHQgbG9zdC4KICAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKIEdyYXBoaWNzQ29u
dGV4dEdMQ1YqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKCkKIHsKQEAgLTc2Myw3ICs3
MzMsNyBAQCBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXND
VigpCiAKIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogewotICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBt
X3N3YXBDaGFpbi0+ZGlzcGxheUJ1ZmZlcigpOworICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBt
X3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZh
Y2UgfHwgIWRpc3BsYXlCdWZmZXIuaGFuZGxlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKQpAQCAtNzk1LDEyICs3NjUsMTIgQEAgc3RkOjpvcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygp
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsK
LSAgICBhdXRvICZkaXNwbGF5QnVmZmVyID0gbV9zd2FwQ2hhaW4tPmRpc3BsYXlCdWZmZXIoKTsK
KyAgICBhdXRvICZkaXNwbGF5QnVmZmVyID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpOwog
ICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJmYWNlIHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+
c2l6ZSgpICE9IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIG1fc3dhcENoYWluLT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisgICAg
bV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSBjcmVhdGVDVlBpeGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgp
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTgx
Myw2ICs3ODMsMjQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxl
YXNlVGhyZWFkUmVzb3VyY2VzKCkKICAgICBjdXJyZW50Q29udGV4dCA9IG51bGxwdHI7CiB9CiAK
K0lPU3VyZmFjZSogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIoKQorewor
ICAgIEFTU0VSVChtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZSk7CisgICAgcmV0
dXJuIG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAg
ICBtX3N3YXBDaGFpbi5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7Cit9CisKK1JlZlB0cjxHcmFw
aGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmxheWVy
Q29udGVudHNQcm92aWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKwor
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQppbmRleCAxOTM0ZWY1ZWYzMzY5YTIz
Njk5NmIyZTZkZTBkNzYzOGIxOTE5ZmFkLi42YTZmZjZiYzhkN2E0Mzc0MjE3NGZmMjI1ZGMwYTk0
ZDAwNDE1ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlQ29jb2EubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oQ09DT0EpCiAKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgi
CisjaW1wb3J0ICJHcmFwaGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oIgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCkBAIC00MSwxOSArNDEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAg
IGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgICAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBh
bGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29u
dGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBbbV93
ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCiAKLVBsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xh
eWVyQ29udGVudHNQcm92aWRlcj4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6Omxh
eWVyQ29udGVudHNQcm92aWRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViR0xMYXllci5n
ZXQoKTsKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzUHJvdmlkZXIuY29weVJlZigpOwogfQog
CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpAQCAtNjMsMjAgKzU2LDEz
IEBAIEdyYXBoaWNzQ29udGV4dEdMQ1YqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Ojphc0NWKCkKIH0KICNlbmRpZgogCi1HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
biYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRmb3JtU3dhcENoYWluKCkK
LXsKLSAgICByZXR1cm4gW21fd2ViR0xMYXllciBzd2FwQ2hhaW5dOwotfQogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKLSAg
ICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7Ci0gICAgYXV0byYgZGlzcGxheUJ1ZmZl
ciA9IHNjLmRpc3BsYXlCdWZmZXIoKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIuc3VyZmFjZSkK
KyAgICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
c2MubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVh
dGVDVlBpeGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpKTsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1
cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92
ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lk
ZURvd24sIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDRjNWE0
MjRhN2EzZTQ2MzRiODY0YjNiZjIwNzAxNzI2NjI0NTVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCi0jaW1wb3J0IDxRdWFydHpDb3Jl
L1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPG1lbW9yeT4KLSNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5o
PgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNs
YXNzIGltcGxlbWVudGluZyBmcm9udCBidWZmZXIgbWFuYWdlbWVudCBvZiBhIDMtYnVmZmVyaW5n
IHN3YXAKLS8vIGNoYWluIG9mIElPU3VyZmFjZXMuCi1AaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBD
QUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4
ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZTsKLQotLSAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mKSBzd2FwQ2hhaW47Ci0KLUBl
bmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTZlOWNmZjUwM2EzZDJmYjY2NWNiNzAwMzQ1MWFmNTFkZjQ2
Nzg5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJH
TCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgot
I2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIK
LSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotCi1jbGFzcyBXZWJHTExh
eWVyU3dhcENoYWluIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTExheWVyU3dhcENo
YWluKFdlYkdMTGF5ZXIqIGxheWVyKSAgOiBtX2xheWVyKGxheWVyKSB7IH07Ci0gICAgfldlYkdM
TGF5ZXJTd2FwQ2hhaW4oKSBvdmVycmlkZSA9IGRlZmF1bHQ7Ci0gICAgdm9pZCBwcmVzZW50KEJ1
ZmZlciYmKSBvdmVycmlkZTsKLQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheVN1cmZh
Y2UoKSB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuc3VyZmFjZS5nZXQoKTsgfQotcHJpdmF0ZToK
LSAgICBXZWJHTExheWVyKiBjb25zdCBtX2xheWVyOwotfTsKLQotQGltcGxlbWVudGF0aW9uIFdl
YkdMTGF5ZXIgewotICAgIEJPT0wgX3ByZXBhcmVkRm9yRGlzcGxheTsKLSAgICBzdGQ6Om9wdGlv
bmFsPFdlYkdMTGF5ZXJTd2FwQ2hhaW4+IF9zd2FwQ2hhaW47Ci19Ci0KLS0gKGlkKWluaXRXaXRo
RGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZToo
Ym9vbCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2Vs
Zi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09w
YXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBp
eGVsUmF0aW87Ci0gICAgX3N3YXBDaGFpbi5lbXBsYWNlKHNlbGYpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0vLyBXaGVuIHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2Ug
bmVlZCB0byBmbGlwIHRoZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUg
SU9TdXJmYWNlIHByb3ZpZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBh
bnkgaW5jb21pbmcgdHJhbnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250
ZW50cyBsYXllcikgYW5kIGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0x
IGFuZCBtYWtlIHN1cmUgdGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAo
dm9pZClzZXRUcmFuc2Zvcm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFu
c2Zvcm06Q0FUcmFuc2Zvcm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0
QW5jaG9yUG9pbnQ6KENHUG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1Bv
aW50TWFrZShwLngsIDEuMCAtIHAueSldOwotfQotCi0tIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbiYpIHN3YXBDaGFpbgotewotICAgIHJldHVybiBfc3dhcENo
YWluLnZhbHVlKCk7Ci19Ci0KLS0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkKLXsKLSAgICBbc2Vs
ZiBzZXROZWVkc0Rpc3BsYXldOwotICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBZRVM7Ci19Ci0K
LS0gKHZvaWQpZGlzcGxheQotewotICAgIGlmIChfc3dhcENoYWluLT5kaXNwbGF5U3VyZmFjZSgp
ICYmIF9wcmVwYXJlZEZvckRpc3BsYXkpIHsKLSAgICAgICAgc2VsZi5jb250ZW50cyA9IF9zd2Fw
Q2hhaW4tPmRpc3BsYXlTdXJmYWNlKCktPmFzTGF5ZXJDb250ZW50cygpOwotICAgICAgICBbc2Vs
ZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50cyJdOwotICAgIH0KLSAgICBhdXRvIGxh
eWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigo
X19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQot
ICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxh
eWVyLmdldCgpKTsKLQotICAgIF9wcmVwYXJlZEZvckRpc3BsYXkgPSBOTzsKLX0KLQotQGVuZAot
Ci12b2lkIFdlYkdMTGF5ZXJTd2FwQ2hhaW46OnByZXNlbnQoQnVmZmVyJiYgYnVmZmVyKQotewot
ICAgIEFTU0VSVCghbV9zcGFyZUJ1ZmZlci5zdXJmYWNlKTsKLSAgICBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbjo6cHJlc2VudChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIFttX2xh
eWVyIHByZXBhcmVGb3JEaXNwbGF5XTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZjcyNGQyNTdkZDRmZWFiMTgwOTdjZGNlYjAwZmFkOWI5ZDY2Mjcw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EuY3BwCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CitwdWJsaWM6Cisg
ICAgLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxHcmFw
aGljc0xheWVyQ29udGVudHNQcm92aWRlcj4gbGF5ZXJDb250ZW50c1Byb3ZpZGVyKCkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRlbnRzUHJvdmlkZXIuY29weVJlZigp
OworICAgIH0KKyAgICBib29sIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmICghR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1hcmtEaXNwbGF5QnVmZmVySW5Vc2Uo
KTsKKyAgICAgICAgbV9jb250ZW50c1Byb3ZpZGVyLT5zZXRMYXllckNvbnRlbnRzKCpkaXNwbGF5
QnVmZmVyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzKQorICAgICAgICA6IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJp
YnV0ZXMpCisgICAgICAgICwgbV9jb250ZW50c1Byb3ZpZGVyKEdyYXBoaWNzTGF5ZXJJT1N1cmZh
Y2VDb250ZW50c1Byb3ZpZGVyOjpjcmVhdGUoKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxHcmFw
aGljc0xheWVySU9TdXJmYWNlQ29udGVudHNQcm92aWRlcj4gbV9jb250ZW50c1Byb3ZpZGVyOwor
ICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKK307CisKK30KKworUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyopCit7Cisg
ICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVjeWNs
ZUNvbnRleHRJZk5lY2Vzc2FyeSgpOworICAgIGlmIChHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5oYXNUb29NYW55Q29udGV4dHMoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRycykpOworICAgIGlmICghY29udGV4dC0+bV9jb250
ZXh0T2JqKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwor
ICAgIHJldHVybiBjb250ZXh0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCmluZGV4IDIyNzdiMTdjYzcwOTg4ODc2ODI2YzA4NjJmN2E3MTgzOTc0MjVkZmEuLjgzYWI5
NDYwMzFiZWNmMjUxNTE2OGZlODcwZDBjZmY2M2M3MjQxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNlbmRpZgogCkBA
IC02NCwxMCArNjUsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLU9CSkNfQ0xB
U1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtOTcs
MjMgKzk1LDIxIEBAIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjsKIAogdHlw
ZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVIYXNoOwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1Ymxp
YyBHcmFwaGljc0NvbnRleHRHTAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0wKIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0YXRpYyBSZWY8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiwgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qKTsK
LQotICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CisgICAgc3RhdGlj
IFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2VzcyhHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9
CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNv
bnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CiAgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnkoKTsKICAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpOwogI2Vsc2UKICAgICBzdGF0aWMgUmVmPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbDsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYK
ICNpZiBVU0UoQU5HTEUpCiAgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJl
VGFyZ2V0KCk7CkBAIC0xNDgsNiArMTQ0LDkgQEAgcHVibGljOgogICAgIGJvb2wgdGV4SW1hZ2Uy
RFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgYWxpZ25tZW50
ID0gNCk7CiAjZW5kaWYKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzUHJvdmlkZXI+IGxheWVyQ29udGVudHNQcm92
aWRlcigpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QgZmluYWw7CiAKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2Nyw2ICs0NjYsMTAgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAgdm9p
ZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygp
OwpAQCAtNTE4LDcgKzUyMSw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHRleHR1cmVTZWVk
KEdDR0x1aW50IHRleHR1cmUpIHsgcmV0dXJuIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5jb3Vu
dCh0ZXh0dXJlKTsgfQogCi0gICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOworICAg
IGJvb2wgcHJlcGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmlu
YWw7CkBAIC01MzgsMTMgKzU0MSwxNCBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRpZgogCi1wcml2
YXRlOgorcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiA9IG51bGxwdHIpOworICAgIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyk7CiAjZWxzZQogICAg
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9z
dFdpbmRvdyopOwogI2VuZGlmCiAKK3ByaXZhdGU6CiAgICAgLy8gQ2FsbGVkIG9uY2UgYnkgYWxs
IHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAg
ICAvLyBDYWxsZWQgb25jZSBieSBhbGwgdGhlIHB1YmxpYyBlbnRyeSBwb2ludHMgb2YgRXh0ZW5z
aW9uc0dMIHRoYXQgZXZlbnR1YWxseSBjYWxsIE9wZW5HTC4KICAgICBib29sIG1ha2VDb250ZXh0
Q3VycmVudCgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKQEAgLTU4NCwxMyArNTg4LDExIEBAIHByaXZh
dGU6CiAgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMgYmVoYXZpb3IgZm9yIHJlbGVhc2VSZXNvdXJj
ZXMoKTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKTsK
IAotCitwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7IG51bGxwdHIgfTsKLSAgICAvLyBUT0RP
OiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGNvbnRleHQgZHJhd3MgdG8gYSBpbWFn
ZSBidWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
MTc5IC4KLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwotICAgIEVHTERp
c3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OworICAgIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluIG1fc3dhcENoYWluOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
R0wgbV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OworICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5T2Jq
IHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgbV9jb25m
aWdPYmogeyBudWxscHRyIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYmNmMzJk
Y2UxYzI3YTNiOTNmY2Y4YzU4OWJkMmUzNTNlZjAzZTdhOC4uZjRkODJjNWZkNGE4YjUxOWU2OTU5
YzAyNzRlYTFiOWE3NzhhZmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyArMTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3Np
dGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZhc0Nv
bXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKSB7
CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAgICBpZiAoYXV0byog
Y29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQotICAgICAgICAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihjb250ZXh0LT5wbGF0Zm9ybUxh
eWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOworICAg
ICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0Zyb21Qcm92aWRlcihjb250ZXh0
LT5sYXllckNvbnRlbnRzUHJvdmlkZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1
cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDI1NjAzOTdhNTM3MjcxMjA0NjkwODI3Yjk3
MDE1ZThiNzNiZWU3OWMuLjMxNWI0N2Q1MWY2ZmVhM2M3NGIwM2ZkZTY5ZTdjMmNjOWY4ODFkZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC05Myw3ICs5Myw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nJiYpOwogICAgIHZvaWQgbm90aWZ5
TWFya0NvbnRleHRDaGFuZ2VkKCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYp
PiYmKSA9IDA7CiAjZWxzZQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCmluZGV4IDE2YjNlOWU4MjZlYTQxN2RiZTJjNzNlMmRlYzcxMzgzOWI3ZjY3MzIu
LmRlNmI0YWQwMzI5ZTA4ZGFiMWNlYmU4ZmRhMTRmYzgxZTlkOTgxMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAKIG1lc3NhZ2Vz
IC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2
b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRp
c3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CisgICAgdm9p
ZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChzdGQ6Om9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IGRp
c3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CiAjZW5kaWYK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+ICgp
IFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOTcw
ZDhjMmU3OTA5ZThmNzFmYWQwYzliZDJjNjQzMWZjZDk1YWQzMi4uY2E3NjdmMGU1M2RkNzk1OGJk
YTA5MzIwMDMwYjUyYThkODU2ZGY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcApAQCAtNDQsOSArNDQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCiAgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwotICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYpIGZpbmFs
OwogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiBtX3N3YXBDaGFpbiBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RyZWFtVGhyZWFkKTsKICNp
ZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQogICAgIHRhc2tfaWRfdG9r
ZW5fdCBtX3dlYlByb2Nlc3NJZGVudGl0eVRva2VuOwogI2VuZGlmCkBAIC02NywyNiArNjYsMjcg
QEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShHUFVDb25uZWN0aW9uVG9XZWJQcm8KICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aXR5VG9r
ZW4oZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbigpKQog
I2VuZGlmCiB7Ci0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OwotICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQ
cm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksICZtX3N3YXBDaGFpbik7CisgICAgbV9jb250ZXh0
ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoV1RGTW92ZShh
dHRyaWJ1dGVzKSk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJl
cGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGFz
c2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7Ci0gICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheSgpOwotICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OwotICAgIGlmIChhdXRvKiBz
dXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCkpIHsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodDsKKyAgICBpZiAobV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBzdXJmYWNlID0g
bV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+bWFy
a0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBf
SURFTlRJVFkpCi0gICAgICAgIC8vIE1hcmsgdGhlIElPU3VyZmFjZSBhcyBiZWluZyBvd25lZCBi
eSB0aGUgV2ViUHJvY2VzcyBldmVuIHRob3VnaCBpdCB3YXMgY29uc3RydWN0ZWQgYnkgdGhlIEdQ
VVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0ga25vd3Mgd2hpY2ggcHJvY2VzcyB0byBraWxsLgotICAg
ICAgICBzdXJmYWNlLT5zZXRPd25lcnNoaXBJZGVudGl0eShtX3dlYlByb2Nlc3NJZGVudGl0eVRv
a2VuKTsKKyAgICAgICAgICAgIC8vIE1hcmsgdGhlIElPU3VyZmFjZSBhcyBiZWluZyBvd25lZCBi
eSB0aGUgV2ViUHJvY2VzcyBldmVuIHRob3VnaCBpdCB3YXMgY29uc3RydWN0ZWQgYnkgdGhlIEdQ
VVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0ga25vd3Mgd2hpY2ggcHJvY2VzcyB0byBraWxsLgorICAg
ICAgICAgICAgc3VyZmFjZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV93ZWJQcm9jZXNzSWRlbnRp
dHlUb2tlbik7CiAjZW5kaWYKLSAgICAgICAgc2VuZFJpZ2h0ID0gc3VyZmFjZS0+Y3JlYXRlU2Vu
ZFJpZ2h0KCk7CisgICAgICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5jcmVhdGVTZW5kUmln
aHQoKTsKKyAgICAgICAgfQogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNl
bmRSaWdodCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM1ZDYzNjFkYmMxOGExMDYz
ZjNhZmU4ZGFiMzM2YTUwYTA2MTM5NjAuLmU2NGM4MjhjNzMwMDAyY2Q3MTU5YmE1MmQ4ZmZkOThl
ZmEwYmMwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYyMyw2ICs2MjMsNyBAQCBXZWJQ
cm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5
UG9pbnQubW0KIAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1t
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNDcxZDkzMThm
NDU5YjBiNDFjZGQxZTI1MGI3N2RhN2UxMDkxNDAxLi4xMTdjZGVkMGYzOWQzZGRmZTI2MGRmZDMy
N2ZmYmY0NDM1OTNlMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ3NzIsNiArNDc3Miw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0
QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVD
Qzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYwNSw2ICs5NjA2LDcgQEAKIAkJCQky
RDI1RjMyODI1NzU4RTkwMDAyMzFBOEIgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzUyNDA3
ODU3RjAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5oICovLAorCQkJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCmluZGV4IGMwYmFjMzhlZWMyZWI2NDAyNjg2YzMzZGMzZDQzY2Q0YjZkOGRmNmYuLjAx
ZGU1N2NhZjg5MDk1NDUzY2UyN2RhMjVmZjM5ODA1NzU0ZThkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtMzUsMTEgKzM1LDYgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4K
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC02Nyw5ICs2Miw2IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mCiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiB7CiAgICAg
ZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHBsYXRmb3JtU3dhcENoYWluKCkucmVjeWNsZUJ1ZmZlcigpOwotI2VuZGlmCiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWln
aHQpCkBAIC04MywzMiArNzUsMjAgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgbWFya0NvbnRleHRMb3N0
KCk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRp
c3BsYXkoKQorI2lmICFQTEFURk9STShDT0NPQSkKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
Ci0gICAgICAgIHJldHVybjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0
IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBs
eShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSk7Ci0gICAgaWYgKCFzZW5kUmVzdWx0KSB7Ci0gICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8g
ZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRp
c3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7Ci0gICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKLSAgICAgICAgYXV0byYgc2MgPSBwbGF0
Zm9ybVN3YXBDaGFpbigpOwotICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7Ci0gICAgICAgIHNj
LnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOwotICAgIH0KLSNl
bHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJl
cGx5KCkpOwogICAgIGlmICghc2VuZFJlc3VsdCkgewogICAgICAgICBtYXJrQ29udGV4dExvc3Qo
KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotI2VuZGlm
CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlm
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgKaW5kZXggZGQyZTgwYjY1ZDIzNGQ2OThlOTBjODNhMGM1ZGMzOTk1ODdk
ZDdhZC4uZjk5NDExMzhhYzJiN2I0MDAyOTg5YjVjMWE0N2RkZTliZDBlYjZlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugb3ZlcnJpZGVzLgog
ICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGZpbmFsOwotICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICBib29sIHByZXBhcmVGb3JEaXNwbGF5KCkg
ZmluYWw7CiAgICAgdXNpbmcgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2U6OmlzRW5hYmxlZDsKICAgICB2b2lkIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZjRmOTVmYTQ1ZWJkMjRiZDI1ZDAxMWM3NmFl
ODU5ZTQyYmI5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJJT1N1cmZhY2VDb250
ZW50c1Byb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCit7CisgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8TWFj
aFNlbmRSaWdodD4gZGlzcGxheUJ1ZmZlclNlbmRSaWdodDsKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JE
aXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRp
c3BsYXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpKTsKKyAgICBpZiAoIXNlbmRSZXN1
bHQpIHsKKyAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCEqZGlzcGxheUJ1ZmZlclNlbmRSaWdodCkgeworICAgICAgICBtYXJr
Q29udGV4dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhdXRvIGRp
c3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZSgqZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgbWFya0Nv
bnRleHRMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9kaXNwbGF5
QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyKTsKKyAgICBtX2xheWVyQ29udGVudHNQcm92
aWRlci0+c2V0TGF5ZXJDb250ZW50cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAgICBtYXJrTGF5ZXJD
b21wb3NpdGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggZDE2MjM0NDQyMzFlNmJkNDQ5ZTUzYWU0MWFl
NTY5ZjcxNGJhMDc2NS4uYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjMsNiArNjMsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXS0RlcHJlY2F0
ZWREZWxlZ2F0ZU1ldGhvZHMpCiAtICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOihXS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZSAqKWZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQppbmRleCBk
ZTczNzFiZTlmY2Q4MmIxMDBkMjZmMTkxZGUyYjM0ZTg2YWZlMTM2Li5mNjJkYzdjODM3ZjAyZjcw
MTBjODJkOTc5MGUyYmFhZjIxNGUxZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQpA
QCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiUERGTGF5ZXJDb250cm9sbGVyU1BJLmgiCiAjaW1w
b3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgPFF1YXJ0ei9RdWFydHouaD4KKyNpbXBvcnQgPFdl
YkNvcmUvQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
RWxlbWVudC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZU1vZGVsSG9zdGluZy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVNb2RlbEhvc3RpbmcubW0KaW5kZXggOGMxMDYyMjA1Yzc3YWZmZDdiYWQxN2Nm
OTcyNmZjODAyMDc2NmMyYS4uY2EzZGE2OWI0MzA5NDNkZjY2NmU3ZTg0MDg0MGQ1N2Y2YmM3Mjhi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZU1vZGVsSG9zdGluZy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlTW9kZWxIb3N0aW5nLm1tCkBAIC02Niw5ICs2Niw5IEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlTW9kZWxIb3N0aW5nOjpwb3B1bGF0ZUNyZWF0aW9uUHJvcGVydGllcyhSZW1vdGVM
YXllclRyCiAgICAgcHJvcGVydGllcy5tb2RlbCA9IG1fbW9kZWwucHRyKCk7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nOjpkdW1wQWRkaXRpb25hbFByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYgdHMsIE9wdGlvblNldDxQbGF0Zm9ybUxheWVyVHJlZUFzVGV4dEZsYWdz
PiBmbGFncykKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlTW9kZWxIb3N0aW5nOjpkdW1wQWRk
aXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIE9wdGlvblNldDxXZWJDb3JlOjpQbGF0
Zm9ybUxheWVyVHJlZUFzVGV4dEZsYWdzPiBmbGFncykKIHsKLSAgICBpZiAoZmxhZ3MuY29udGFp
bnMoUGxhdGZvcm1MYXllclRyZWVBc1RleHRGbGFnczo6SW5jbHVkZU1vZGVscykpCisgICAgaWYg
KGZsYWdzLmNvbnRhaW5zKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0RmxhZ3M6Oklu
Y2x1ZGVNb2RlbHMpKQogICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihtb2RlbCBkYXRhIHNpemUg
IiA8PCBtX21vZGVsLT5kYXRhKCktPnNpemUoKSA8PCAiKVxuIjsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg3YWEzYzc4NTJhZTAwMGQw
NDJiODM3MDIyYWEzNDdlOGY3NGJlZmUuLjE0NGI1MDMwY2M2YTlhMmY4NWZmNDk4ZGU5MmQ3Yjlm
YjBkMWRiODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0xMC0xNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNp
ZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBwYXNz
IHN0ZDo6b3B0aW9uYWwgdGhyb3VnaAorICAgICAgICB0aGUgV2ViR0wgY2FsbHMuCisgICAgICAg
IEFkZHMgdGhlIGFiaWxpdHkgdG8gcGFzcyBSZXRhaW5QdHIgdGhyb3VnaCB0aGUKKyAgICAgICAg
V2ViR0wgY2FsbHMuIFRoZSBmaWxlcyB0aGF0IG5lZWRlZCB0aGlzIHdlcmUKKyAgICAgICAgbW9k
aWZlZCBpbiBzb21lIHJlZmFjdG9yaW5nIGNvbW1pdC4KKworICAgICAgICAqIFNjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0xMC0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlU2lsaWNvbl0gU3VwcG9ydCBuYXRpdmUgc2lt
dWxhdG9yIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCAzMGY3ZmQ4MmIz
MzFhMDZmNGM0ZTBjYjRlM2I4OWY3NWZmZTZiMTgxLi4zZGY5NDhkNDc0Y2Y4OTY0MjViYjhmZjhl
MzI5MWQ3YjNhNWQ2ODU0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC05Miw3ICs5
Miw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiBtZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUmVzaGFw
ZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZl
cikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKKyAgICB2b2lkIFByZXBhcmVG
b3JEaXNwbGF5KCkgLT4gKHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gZGlzcGxheUJ1ZmZl
cikgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKICNlbmRpZgogI2lmICFQTEFU
Rk9STShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKCkgU3luY2hyb25v
dXMKQEAgLTIzMiw3ICsyMzIsNyBAQCBkZWYgY3JlYXRlX2NwcF90eXBlX2NvbnRhaW5lcih0eXBl
X25hbWUgOiBzdHIpIC0+IE9wdGlvbmFsW2NwcF90eXBlX2NvbnRhaW5lcl06CiAgICAgICAgIHJl
dHVybiBOb25lCiAgICAgY29udGFpbmVyX25hbWUgPSBtWzFdCiAgICAgIyBBbGwgdGVtcGxhdGVz
IGFyZSBjb250YWluZXJzIGV4Y2VwdCB0aGVzZSBiZWxvdy4KLSAgICBpZiBjb250YWluZXJfbmFt
ZSBpbiBbJ1JlZlB0cicsICdSZWYnXToKKyAgICBpZiBjb250YWluZXJfbmFtZSBpbiBbJ1JlZlB0
cicsICdSZWYnLCAnUmV0YWluUHRyJywgJ3N0ZDo6b3B0aW9uYWwnXToKICAgICAgICAgcmV0dXJu
IE5vbmUKICAgICB0ZW1wbGF0ZXMgPSBtWzJdCiAgICAgYXJpdHkgPSBOb25lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444701</attachid>
            <date>2021-11-18 10:51:02 -0800</date>
            <delta_ts>2021-11-19 01:36:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211118205100.patch</filename>
            <type>text/plain</type>
            <size>105869</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIzZWI0MjQ1ZDRlMWJk
ZDc1YzNiZDBjZTA1MWU0ZmJmYTQ4ZTY2MS4uOTQ5YjVkOTZjOGEwMDczNGRmOTdiYTRlZjIyOGMw
NjYwNGNkNDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSyBidWlsZCB3aXRoIEFUU1BJIGVu
YWxlZCBhZnRlciByMjg1OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwM2FkMGY2MTdjOWEyMGY5YzY1NjNkN2Ji
MzA4ZmFmMDY0YjEyZWQuLjhkM2Y0MDIyODQ1OTBkMGVkOGY1ZDNkNmYxOTliZGZiZTU4NDFmNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEtMTggIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9y
dCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNh
cGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVy
UmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRv
VmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9u
LiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIs
IGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhh
bmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRl
bGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAg
ICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRs
ZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUlu
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NM
YXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVBsYXllckFWRm91bmRhdGlvbiBzaG91bGQg
c3VwcG9ydCBydmZjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyYTI3ZTYwMjIwNTZiN2M5ZGQ1OTFh
NzExOTRjZDMxNGMxYzY0MmM3Li4xNDkwMDQ3MWZkOTU0Zjk3OWNiMTNjNDA4MTI4MDQ3ZGM3YTc4
MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEzMTMsNiArMTMxMyw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyVHJhbnNmb3JtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMTM2ODgw
M2JhNDA3ZmRhODE3MDE5OWFmMTBiYjYzZjEzMDBiMzdhMy4uZTZmNWM4ZjY2OTgyYWY0NGUzNGY5
YTBiYzJjNjlhYzg4NWIwODhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3
ICszMjcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggZTkyOGZmOTQ5NDU4M2I2NGVkNjBmNTVhODc5NDM1MDExZDc2NDJiNC4uMmVjNzkw
M2ViZDk4MDEwYzI0MWI5ODQ3ZDc4NjI3NzUyNTk4MTM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIw
MjIsNiArMjAyMiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNm
b3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMWE0NjY4NmY3OGNkY2IyMzhiYWQ1ZjJhYzMyYTcyYzU0MTc0NjNkZS4uOGE3MWQyY2QwMTA5
ZWQxODRmZjg0YTE3MjhiYzMzM2IxMTk3Y2Q4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0zOTAsNyArMzkwLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxp
bmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxh
eWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb24ubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlmODVlNDk4NmM1M2ExY2M4ZDYzYjMzOTRkM2Y3Mjk1ODMy
YWYzODcuLjMzYWMzNWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRjMWNhZjc1YjA3OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgpAQCAtMjA0NzIsOCArMjA0NzIsNiBAQCBfT0JKQ19DTEFTU18kX1dlYkNvcmVG
dWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVu
V2FybmluZ1ZpZXcKIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cKIF9PQkpD
X01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci1fT0JKQ19DTEFTU18kX1dlYkdM
TGF5ZXIKLV9PQkpDX01FVEFDTEFTU18kX1dlYkdMTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViTGF5
ZXIKIF9PQkpDX01FVEFDTEFTU18kX1dlYkxheWVyCiBfT0JKQ19DTEFTU18kX1dlYlNjcmlwdE9i
amVjdApAQCAtMzA2NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcuX2V4aXRXYXJuaW5nCiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxT
Y3JlZW5QbGFjZWhvbGRlclZpZXcuX3RhcmdldAogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVyLm1fY29udGV4
dAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9sYXllck93bmVyCiBfT0JKQ19JVkFSXyRfV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLnJvb3RPYmplY3QKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLm9yaWdp
blJvb3RPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiYjI2Nzc1NDFmZDIzN2I0ODg5ODhhYzMwZDcyNjI3OThhMTdjNjg3
Li40YTI0YjA2ZWI4ZGUyODVmZjhiOWM3YjQ4NjZkMWE1OTRlMzBiNmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDM1LDcg
KzE0MzUsNiBAQAogCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFQ0VC
NjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlG
QUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0OUVFRDE0NzEwNTE5Njk0MDAwOTlG
QUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBEQTJGRjEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBQTAx
QUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM2MSw4ICsyMzYwLDEw
IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1
RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIx
NzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNTgyREQ4
MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2
MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDgg
LyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZG
MEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwNjYsOCArOTA2Nyw2IEBACiAJCTQ5RUVEMTRDMTA1MTk3
MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3QTRGMTQ0NEFGNUYwMEE1
RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0Ig
LyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwMzMsNiArMTEwMzIsNyBAQAogCQk3QjE2MTkx
MDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcx
MkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4
MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzIwQjBB
Mjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZB
MjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUQyNkYwQzEyMzAw
OEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVGMjZG
MEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTEwNDIsNiArMTEwNDIsNyBAQAogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjgyNUJBMUJFNDAwMkI4
NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
QkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyRDgyNzA1
OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFO
R0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREEy
NzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI3OTQyLDYgKzI3OTQzLDggQEAKIAkJCQkwRjU4MEIwOTBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEwRjEyQTI2OTAwNTFENjg5
IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJBMjY5MDA1MUQ2ODkgLyog
R3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovLAorCQkJCTdCNzIw
QjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZh
Y3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXll
clVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGlj
c0xheWVyVXBkYXRlci5oICovLApAQCAtMjgyNTIsOCArMjgyNTUsNiBAQAogCQkJCTJEM0VGNDQ3
MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5tbSAqLywKIAkJCQlDRDVE
Mjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmggKi8s
CiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
ICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovLAog
CQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5o
ICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXND
b2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gKi8sCkBAIC0zMjMwMSw2ICszMjMwMiw3IEBA
CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFi
b3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZB
NENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzM2MTcs
NiArMzM2MTksNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xh
eWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3Jh
cGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MjBCMEMy
NzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNz
TGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0
QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTAxNUFC
MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTM2
ODQ1LDcgKzM2ODQ4LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xE
cmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5
IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJG
MDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURyYXcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFmOWFhMmQ1YzI1
YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUyOGRmNmNlM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgi
CiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiArODQsMTEgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52YXMuZGVyZWZD
YW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFBpeGVsRm9y
bWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQyYTdkZWI5OTc4
ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21wb3NpdGluZyBw
dXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7IH0K
LSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBib29sIGhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2
ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0FjdGl2ZUluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDU3ODY4
YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNmMzhmNzljNDJh
NGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTEsMTAgKzUx
LDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmNh
bnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oYmFz
ZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6cGxh
dGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3OGI0OWNiZTQ5
NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0YTE2YTQyOTk3
NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVy
UmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAg
IFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBib29sIGlzR1BV
QmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCmluZGV4IDMzOTI1YmM2YWM4ZDg3YjQxMDZiMDYzMWVkMzQyOTAzOWE3OGFmZTQu
LjdiMzA4MTNhYTliMDdhNjRhYWE0ZmRhYjZlMTVhYjJmMTI4ZGNiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAt
NjQ0NSw5ICs2NDQ2LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNDb250
ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHRMb3N0ICYm
ICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4dExvc3QoKSAm
JiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxhdGZvcm1MYXll
cigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5nUG9saWN5UmVz
b2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGV4dC0+
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYgb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEzOWRmNTA1ODE2
MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHRHTCog
Z3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KICAg
ICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4
IGVkYWE0Y2U1ZWE3MmU3MzBiYzUyNTQ2YzcwMDZlZDIzNzI3Mzk2MGQuLjNmOTAzY2I5YzU5ZDZm
OGRhYjVkNjEyNzBlZWRkMWQ1Njc2NzVkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIgKzI4LDEyIEBA
CiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcwogICAgIH07
CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4
IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3ZjQ3NzFmOGJl
ZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjEyLDYgKzYx
MywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQogewogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29s
b3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJm
OTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3YjU4OWRkYTAw
Nzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
R3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5n
OwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29s
b3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7IHJldHVybiAw
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2FiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgorCisjaWYg
VVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp+R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0OworCisjaWYgVVNF
KENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6OndpbGxEZWxl
Z2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzViZThh
ODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShDQSkKKyNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiBV
U0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxhdGZvcm0gc3Bl
Y2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhpY3NMYXllci4K
Ky8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNlcyB0byBzaG93
IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgR3Jh
cGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6
OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0Owor
I2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJmM2ZhY2VkYmFm
MDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2N2U3ZWUyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKLS8vIFVzZWQg
dG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJbWFn
ZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdvcmtl
ciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGZvciBh
biBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3Jl
YXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1ZmZlclBpcGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoKICAgICBjbGFz
cyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7CkBAIC01MCw3
ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1
bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3
YjU3YjQ3Li43MTNlNjY2NjFmMDZhYTcyNzViZjRiMmQwZWYxYThjZTRhZGE1MDZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVy
LmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1
ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1Bs
YXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRl
bnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQorewor
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgcHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRPd25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBudWxscHRyOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRy
OworICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9u
ZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRl
UGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1v
dmUocHJvdmlkZXIpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsK
KyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVnYXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdo
ZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRlbnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJh
Y2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3JkaW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXll
ci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXll
ci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRydWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNwbGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0K
KworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZv
ck1lZGlhKCkgY29uc3QKIHsKQEAgLTEzNzEsNiArMTM5NywxNSBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0Q29udGVudHNNYWduaWZpY2F0aW9uRmlsdGVyKFNjYWxpbmdGaWx0ZXIgZmlsdGVy
KQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1NjYWxpbmdGaWx0ZXJzQ2hh
bmdlZCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkoUGxhdGZvcm1D
QUxheWVyKiBsYXllcikKK3sKKyAgICBpZiAobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBs
YXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaWREaXNwbGF5
KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQpAQCAt
Mjc5Miw3ICsyODI3LDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxh
dGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdh
cyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRl
U3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5n
ZXQoKSk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUg
PyBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRl
bnRzT3JpZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5n
ZXQoKSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0g
Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NDgsMTMgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xh
eWVyVHlwZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMs
IGlzVGlsZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
OjpUb3BEb3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBv
ZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsK
ICNlbmRpZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9z
aXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRh
dGlvbiA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAw
LjBmLCAwLjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjMx
Yjk5YzIyYWQwODUwNmI5NDcyMzBjZTA3NDVhZWFmOGE5Mzc5YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0x
NTAsNiArMTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIq
IGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVy
KiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsK
KwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3Qg
Q29sb3ImKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRl
OwpAQCAtMjEyLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29udGVudHNPcGFxdWUo
KTsgfQogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZHJhd3NDb250ZW50KCk7IH0KKyAgICBib29sIHBsYXRmb3JtQ0FMYXllckxh
eWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXll
ckRpc3BsYXkobGF5ZXIpOyB9CiAgICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgb3ZlcnJpZGUgeyByZXR1cm4gbGF5ZXJEaWREaXNw
bGF5KGxheWVyKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0
TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIGZs
b2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkUmVwYWludE9uU2l6ZUNoYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBsYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBsYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKik7CiAKICAgICB2aXJ0
dWFsIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CkBAIC0zMDAs
MTAgKzMwNCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihmbG9h
dCBwYWdlU2NhbGVGYWN0b3IpIGNvbnN0OwogICAgIHZvaWQgY2hhbmdlTGF5ZXJUeXBlVG8oUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGUpOwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lk
IHNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICBjb25zdGV4cHIgc3Rh
dGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmll
bnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKKyAg
ICB2b2lkIHNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gPSBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbik7CiAgICAg
UGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyLmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUNsaXBwaW5nU3RyYXRlZ3koUGxhdGZv
cm1DQUxheWVyJiwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHNoYXBlTWFza0xheWVyLCBjb25z
dCBGbG9hdFJvdW5kZWRSZWN0Jik7CkBAIC02NDQsNiArNjQ2LDcgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBSZWZQdHI8TW9kZWw+IG1fY29udGVudHNNb2RlbDsK
ICNlbmRpZgorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
PiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CkBAIC02NjMsNiArNjY2LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzRXZlclBhaW50ZWQgOiAxOwogICAgIGJvb2wgbV9oYXNEZXNj
ZW5kYW50c1dpdGhSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9ucyA6IDE7CiAgICAgYm9vbCBtX2hh
c0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyA6IDE7CisgICAgZnJpZW5kIGNsYXNz
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlk
ZGE5MmQxNTgzNC4uZmQ1NTJjOTkzOTQ0NjQ1YTVkMzAzM2YzYjllZmQ3ODUwNzkyZGZkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKQEAgLTM5LDYgKzM5LDEzIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5
cGVkZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFj
ZSBXVEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRp
ZgorCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgs
NiArNTUsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhB
VkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0
Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAs
NiArMjAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAK
KyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhj
b25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uM2MxODM1
MTcyMzczOThiYmIzMDZmMzg0NjQ1Y2E0ZTNhNzU5ZTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBkZWxlZ2F0ZWQgZGlzcGxheSB3YXMgZG9uZSB3aXRoaW4gdGhpcyBjYWxsYmFjayBh
bmQgZGVmYXVsdCBkaXNwbGF5CisgICAgLy8gc2hvdWxkIGJlIHNraXBwZWQuIAorICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWRE
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
Q0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oCmluZGV4IDliMWIwMTEyMDEzNGNkODU1ZWM1Y2QxMTQ4YzExMWVmZjdlMDZm
ZDMuLjgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3ZTA0OWIyYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTIwLDYgKzEyMCwxMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50
cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVy
cmlkZTsKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0Q29u
dGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCmluZGV4IDM0ZTI1OTBmNTc3Mjk2YjIyMzliZjI4NjgyZmM3NTZhYzY2
OTAzYWEuLjJhNDVkZGM0NThkZTA2N2JhZGIwMWE1N2VkZmIyYjlhYjk1MzAzMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0ICJU
aWxlZEJhY2tpbmcuaCIKICNpbXBvcnQgIldlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCIKLSNpbXBvcnQgIldlYkdMTGF5
ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkBA
IC01NCw2ICs1Myw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgorI2ltcG9ydCA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCkBAIC0yMTEsOSArMjExLDYgQEAgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3Jt
TGF5ZXIoUGxhdGYKICAgICAgICAgJiYgWyhXZWJWaWRlb0NvbnRhaW5lckxheWVyKilsYXllciBw
bGF5ZXJMYXllcl0pCiAgICAgICAgIHJldHVybiBMYXllclR5cGVBVlBsYXllckxheWVyOwogCi0g
ICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHTExheWVyIGNsYXNzXV0pCi0gICAgICAg
IHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICByZXR1cm4gTGF5
ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yMzQsNiArMjMxLDcgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVTaW1wbGVMYXllcjoKICAg
ICBjYXNlIExheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKKyAgICBjYXNlIExheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtXZWJTaW1wbGVM
YXllciBjbGFzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlVHJhbnNmb3Jt
TGF5ZXI6CkBAIC0yNjUsMTAgKzI2Myw2IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9y
bUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAg
ICAgIGlmIChQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAg
ICAgICBsYXllckNsYXNzID0gUEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAg
IC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYXMgd3JhcHBlZCBhcm91bmQg
V2ViR0xMYXllcnMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVh
azsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIExheWVyVHlwZU1vZGVsTGF5
ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbQ0FMYXllciBjbGFzc107CkBAIC0zMTAsNyArMzA0
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCgpCiAgICAgfQogICAg
IAogICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgQ0FMYXll
cgotICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5
ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllciB8fCBtX2xheWVyVHlwZSA9
PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5
cGVDdXN0b20pCisgICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIg
fHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9sYXllciB3ZWJfZGlzYWJsZUFs
bEFjdGlvbnNdOwogICAgIGVsc2UKICAgICAgICAgW21fbGF5ZXIgc2V0RGVsZWdhdGU6W1dlYkFj
dGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKQEAgLTc5Nyw2ICs3OTEsMTkg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVl
KQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAorI2lmIEhBVkUoSU9TVVJGQUNF
KQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6
SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIHNldENvbnRlbnRzKHN1cmZhY2UuYXNMYXllckNv
bnRlbnRzKCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhj
b25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgYXV0byBzdXJm
YWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHN1cmZhY2VIYW5k
bGUuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7CisgICAgc2V0Q29udGVudHMoKnN1cmZhY2UpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZmI3MjNkZDQyMmRlOWI5ZGFkYTllNGNiODk3ZDA2
MWNiZTZkNjAzZS4uYmEyNjJlM2NmYmE1Yjk4NDdhODA2NWFjNTNlODM0NTI1MWRiODNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC01OSw2ICs1OSw3
IEBAIFdURl9XRUFLX0xJTktfRk9SQ0VfSU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisKIGJvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkKIHsKICAg
ICAvLyBUaGUgQU5HTEUgaXMgd2VhayBsaW5rZWQgaW4gZnVsbCwgYW5kIHRoZSBFR0xfSW5pdGlh
bGl6ZSBpcyBleHBsaWNpdGx5IHdlYWsgbGlua2VkIGFib3ZlCkBAIC00MzQsMTEgKzQzNSw2IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVy
biBtX3RleHR1cmU7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogR0NH
TGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0
KCkKIHsKICAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCA9PSAtMSkKQEAgLTcz
NCw3ICs3MzAsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlz
cGxheSgpCiAgICAgfQogfQogCi0KICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigp
CiB7CkBAIC03OTYsNiArNzkxLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBs
YXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCiAgICAgY3VycmVudENvbnRleHQgPSBudWxs
cHRyOwogfQogCitJT1N1cmZhY2UqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVm
ZmVyKCkKK3sKKyAgICBBU1NFUlQobV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2Up
OworICAgIHJldHVybiBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSgpCit7CisgICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworfQorCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc2ZGEwZmUwZjQ0YTNhODQ0MGU2NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0KLS8vIEEgbGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJm
YWNlLgotV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0t
IChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29u
dGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGU5MDMxNTU2OTExMTM2YzMxZjVkNjhlZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xM
YXllci5oIgotCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xh
eWVyQ0EuaCIKLSNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24g
V2ViR0xMYXllcgotCi0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmlj
ZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElk
ZW50aXR5OwotICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBz
ZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwot
fQotCi0vLyBXaGVuIHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVl
ZCB0byBmbGlwIHRoZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9T
dXJmYWNlIHByb3ZpZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkg
aW5jb21pbmcgdHJhbnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50
cyBsYXllcikgYW5kIGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFu
ZCBtYWtlIHN1cmUgdGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9p
ZClzZXRUcmFuc2Zvcm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zv
cm06Q0FUcmFuc2Zvcm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5j
aG9yUG9pbnQ6KENHUG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50
TWFrZShwLngsIDEuMCAtIHAueSldOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBT
aG93IHRoZSBzZWxmLmNvbnRlbnRzIGFzIHRoZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhp
bmcgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0g
ICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5k
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDI1NjI1ZWRiZmUyNTRlMzc1
ZmVmMTY5ODE2OWY1MmVmZDRhYTc3MjIuLmQ3NjMwYmY2ZDUyM2FmNGYyYTU1NDY1Mzc4Yzk0MWNk
YTY0YmY3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCkBAIC0yOSw1MyArMjksNTkgQEAKICNpZiBFTkFCTEUoV0VCR0wp
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIiAvLyBOT0xJTlQKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5o
IgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVX
ZWJHTExheWVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykK
LXsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50
c09wYXF1ZTohYXR0cmlidXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIg
c2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgcmV0dXJuIGxheWVyOwotfQotCiAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TCB0eXBlIHRoYXQgaXMgdXNlZCB3aGVuIFdlYkdMIGlzIHJ1biBpbi1wcm9jZXNzIGluIFdlYkNv
bnRlbnQgcHJvY2Vzcy4KIGNsYXNzIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBm
aW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgfldl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpID0gZGVmYXVsdDsKLSAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWYWxpZCgp
ICYmIG1fd2ViR0xMYXllcjsgfQogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG92ZXJy
aWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQot
ICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkgZmluYWw7CiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICAgICAgOiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzKQotICAgICAgICAsIG1fd2ViR0xMYXllcihj
cmVhdGVXZWJHTExheWVyKGF0dHJpYnV0ZXMpKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLQogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDsKIH07CiAKLXZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoUmVmPFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29u
dGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGUoV1RGTW92ZShjb250ZXh0KSkpOworICAgIH0KKyAgICAvLyBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZv
aWQgd2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAg
IHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRl
cygpOworICAgICAgICBsYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOworICAgICAg
ICBsYXllci5zZXRDb250ZW50c1NjYWxlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyk7Cisg
ICAgfQorICAgIHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAg
IHsKKyAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1
ZmZlcigpKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMoKmRpc3BsYXlCdWZmZXIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAg
ICB9CisgICAgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBHcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAg
IH0KK3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShSZWY8V2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4
dChXVEZNb3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OworfTsKKworUmVmUHRyPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKLSAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZh
Y2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAo
IXN1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50
cygpXTsKLSAgICBbbV93ZWJHTExheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworICAgIHJldHVybiBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRl
OjpjcmVhdGUoKnRoaXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2Ri
YjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMyYjQ4NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRp
bGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBi
NTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNjNTQyYy4uM2IyM2E0MDdkYjBmMjQ5YjY0NmZh
NzBkYTk1NzJiODg4NDQyZmU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtMTEzLDggKzExMywxMiBAQAogICAgICAgICBXZWJU
aHJlYWRMb2NrKCk7CiAjZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtz
dXBlciBkaXNwbGF5XTsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CisgICAgYm9v
bCBkaWREZWxlZ2F0ZURpc3BsYXkgPSBmYWxzZTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93
bmVyKCkpCisgICAgICAgIGRpZERlbGVnYXRlRGlzcGxheSA9IGxheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIGlmICghZGlkRGVsZWdh
dGVEaXNwbGF5KQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CiAgICAgaWYgKGxheWVyICYmIGxh
eWVyLT5vd25lcigpKQogICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5
ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEzOGYwM2I5MzRkYzExZTI5ZGUzNGQu
LjY4ZGM2YmY1OTQ4MjczOGYxODJmMGYxMzUyODZhOTYzNDc4Njk3NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYgKzQ0LDE4IEBAIG5hbWVzcGFjZSBO
aWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSB7CiBjbGFz
cyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVy
UGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpOwogICAgIHZp
cnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKIAorICAgIC8vIEltYWdlQnVm
ZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lkIGhhbmRsZShSZWZQdHI8SW1hZ2VC
dWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OwotCiBwcml2YXRlOgorICAgIC8vIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpD
bGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
OwogCiAgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CkBAIC02MiwxNSAr
NjQsMzAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7
CiB9OwogCitjbGFzcyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVmPFBp
cGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZT4mJiBzb3VyY2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
aXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUoc291cmNlKSkpOworICAgIH0KKyAgICAv
LyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJj
ZS0+cGxhdGZvcm1MYXllcigpOyB9Citwcml2YXRlOgorICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVs
ZWdhdGUoUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+JiYgc291cmNlKQorICAgICAg
ICA6IG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK307CisKIGNsYXNzIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKIHB1YmxpYzoK
ICAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdl
QnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKLQotcHJpdmF0ZToKKyAgICAvLyBJbWFnZUJ1ZmZlclBp
cGUgb3ZlcnJpZGVzLgogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNl
KCkgY29uc3QgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwotCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOworcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CiB9OwogCkBAIC0x
MzUsOSArMTUyLDkgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
UmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsK
KyAgICByZXR1cm4gUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKIH0K
IAogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKQEAgLTE1NCwxMyArMTcxLDE1IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4g
Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3Vy
Y2U7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7CiAgICAgaWYgKG1fc291cmNlKQotICAgICAgICByZXR1cm4gbV9zb3VyY2UtPnBsYXRmb3Jt
TGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fc291cmNlLT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK30KKwogfSAvLyBuYW1lc3BhY2Ug
Tmljb3NpYQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCmluZGV4IDM4MjczYjA3MmI1NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUuLjQy
MjBhZGJhNWUyNTdmNzMzODUxNTVlMDM3N2I0YzY4M2ViYmFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC02NSw4ICs2NSw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotT0JKQ19DTEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJHTExheWVyOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwogfQpA
QCAtMTAzLDEzICsxMDEsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURp
c3BsYXkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25m
aWdPYmo7IH0KICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRR
dWVyeUZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgc3RhdGlj
IEdDR0xpbnQgRUdMRHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdD
R0xlbnVtIGRyYXdpbmdUYXJnZXQpOwotI2Vsc2UKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAg
Ly8gRklYTUU6IE1pZ3JhdGUgdG8gbGF5ZXJzIHRvIHN1YmNsYXNzLgorICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAgICBH
Q0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwpAQCAtMTQ0LDYgKzE0Myw3IEBA
IHB1YmxpYzoKICAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFw
aGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29u
c3QgZmluYWw7CiAKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAgdm9p
ZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRl
eCBlMjg1MWMyZTNkMjIxNzcxNjk0YmRkNmYxMmYwZTVmNzg5OWM3NTViLi4yZDNhNzRjMDRiM2Rh
NmM3MDBmNzA2Mzk2YTdmMzA3MjFmYTRkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNjYsNiArNjYsNDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworcHVibGlj
OgorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCkgZmluYWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAg
OiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisgICAg
ZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworICAgIC8vIEZJWE1FOiBtb3Zl
IG1vcmUgcGxhdGZvcm0tc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggdG8gaGVyZS4KK307CisKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdh
dGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsK
K3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJl
ZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RG
TW92ZShjb250ZXh0KSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1M
YXllcigpOworICAgIH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0
ZShSZWY8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgICAg
IDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgeworICAgIH0KKyAgICBSZWY8R3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBtX2NvbnRleHQ7Cit9OworCitSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXI6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUodGhpcyk7Cit9CisKK30KKwogUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KikK
IHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtODUsNyArMTI2LDcg
QEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBDcmVhdGUgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG9iamVjdCBmaXJzdCBpbiBv
cmRlciB0byBlc3RhYmxpc3QgYSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCi0gICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJp
YnV0ZXMpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyKGF0dHJpYnV0ZXMpKTsKIAogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNF
KE9QRU5HTF9FUykgJiYgRU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyBy
ZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDU4MDgwZDRlMWFkNDExOGM3NTIzZTQ3M2YwNjgwNjMw
ZmEzYmFiYTkuLmFjOWU0MjFkNjRjOGJkODkwNGQwOTU4MjdhNjkzZWUzMDQwOWJhMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzM0LDYgKzMzNCwx
MiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyRGlzcGxheURl
bGVnYXRlPiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7
CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlz
cGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogewog
ICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGU4MGNhYTBhYzg5MDkxOWE4NDMzYTA1ZDIwOTAy
MjM3N2U0Mjg4ZDcuLmY3OTQ4ZTdmZmEyMjdlNmYxYjQyMWNiOTA4YjFkN2MzODEzOTVkNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC03Nyw2ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250
ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNw
bGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJEaXNwbGF5RGVsZWdhdGU+LCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5
ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCBhNzQ5MDdjZTFjYjcwMWI3ODcwZDA4YmJjY2UwNDIzN2Q4YTRh
MzlmLi4xZWU5OGU5NjRmZDE4OWZhYzVkNzZiY2M4MTlkODVlNmQ4NjNkNjk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApA
QCAtNDk5LDYgKzQ5OSwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAK
K3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGRpc3BsYXlEZWxlZ2F0
ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyIHBs
YXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3Jt
TGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZv
cm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpm
aWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIGNv
bnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2ODk2YzVlNWIwMjQzODNk
NzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi5lOWQ5MjIzOTA1NzQ4ZjY3ZmRkYjM3NmFjZTVmNGE2
MGI4NmI5NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNo
b3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZERpcmVjdGx5
Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PEdyYXBoaWNzTGF5ZXJEaXNwbGF5RGVsZWdhdGU+LCBDb250ZW50c0xheWVyUHVycG9zZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVj
MTg3N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciog
Y29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBj
YW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250
ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNh
c3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxh
dGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFz
KTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURl
bGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NM
YXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25m
aWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmgKaW5k
ZXggMWVlZTE4ZDYyZjA1MDlmMDA5ZjM0YzNlZGU2OGQzNWUwZDA4OTY1My4uMTAyZWUyZmFhNDc2
OTczZWQyOGU3NWQyZjI4ZWRlYTYyMzQ3ZDc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0wuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICAgfQotCisgICAgUmVmUHRyPFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSB7IHJldHVybiBtX3N3
YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsgfQogICAgIHZvaWQgbWFya0Rp
c3BsYXlCdWZmZXJJblVzZSgpIHsgcmV0dXJuIG1fc3dhcENoYWluLm1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IGRjMmZh
YmQ0ZWY1NWY3ODMxNzI3MGMzMjIxMDIzZTM4NjFlODA3MWQuLjE2YmRmZGZmOWQ1ZDM5ZmFlZDky
NmExNTM3ODQ0Y2Q1MmFjNTU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3Nl
cnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRp
c3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3Bs
YXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2Uq
IGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlz
cGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2Uo
KTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFk
MDEwOTlmLi5jNmE3ODRkNmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYgc3VyZmFjZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBt
X2J1ZmZlckhhbmRsZS5oYXNfdmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGlu
Z0ZsdXNoZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4
MzZhM2QxN2UwNWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4uNDQ1OTEwODE2NjI3Y2IyNmY3ZWI2MTll
MDFiMGNjZWZmNWQwYzQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAw
LDYgKzEwMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdT
dG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tC
dWZmZXIuZGlzY2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBA
IC0xMTIsMjYgKzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAg
IGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlM
aXN0OwotCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRs
ZTsKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2gg
KG1fdHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlm
IChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0g
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQm
PigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNr
ZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
LSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBl
bmNvZGVyIDw8IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYg
RU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0
aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIy
MCw2ICsyMDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZy
b250QnVmZmVyKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3Rk
OjpudWxsb3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwog
CiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgp
CiAgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6
Tm87CiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6
TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92
ZShjb250ZW50cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAg
IG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXpl
KCkpOwpAQCAtMjY3LDYgKzI1NywxMSBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
aXNwbGF5KCkKICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5
ZXItPmNvbnRleHQoKSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4
dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVy
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcikpIHsKKyAgICAg
ICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5
ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2
aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0
eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJW
b2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjIsMjAg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJv
bnRCdWZmZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgewor
ICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAg
ICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUo
KSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6Cisg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGlj
X2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5k
KS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KaW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1
NmUxNTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAg
ICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250
ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
LSAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhv
c3RpbmdDb250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAg
ICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdD
b250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3Qu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlSG9zdC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzlj
Li40MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1v
dGVMCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5
ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMx
Miw3ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJU
cmVlSG9zdCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVX
aXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdp
dGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVz
Lmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElP
Uy5tbQppbmRleCAzOWQwNzRmNDMxMTAyY2Y0N2RmODAxYWNkMjU3OTMyMDkwMmVhMDRjLi43MjM5
M2U0ZmY1OWU3NmViZDc5YjM2MTBiMzM0MzkxZDZjNjY5MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVy
OgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVy
OgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdW
aWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAg
ICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcg
PSBhZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
bwogICAgICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50
aWZpZXIoKSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZWZlY2Jj
ZWU0NjU5MmU3NThlMGU4OGNmNmU5MTgxY2U5Mjk5OThiLi5iNDdmYTIwZTg5OWE4ZDM2NGMxMjgz
MGI1YjRiZTA2YmIyZmQyN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3NjYsNiArNDc2Niw3IEBACiAJCTdCNDgzRjFDMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVD
RERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMy
MjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2Jk
OWY2NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li41MTUzYWFkMWFiNTE2N2NhY2I2OTAwZjlkYTVj
MDdkMzczNGEzNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMTIgKzMyLDEwIEBACiAjaW1wb3J0ICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDUsMTEgKzQz
LDEwIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKIHB1Ymxp
YzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAg
ICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5QnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyOyB9CiAKICAgICAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdldCgpOyB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KQEAgLTU5LDIxICs1Niw1MSBAQCBwdWJsaWM6CiAjZW5kaWYKIHByaXZhdGU6
CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdM
TGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5
QnVmZmVyOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOwogICAgIGZyaWVuZCBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5k
KQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExh
eWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRp
byBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW21f
d2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKK30KKworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0
ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZT4gY3JlYXRlKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E+IGNvbnRl
eHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlz
cGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lk
IHdpbGxEZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmlu
YWwKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoZXNlIHRvIGNhbGxlci4KKyAgICAg
ICAgYXV0byBhdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOworICAg
ICAgICBsYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOworICAgICAgICBsYXllci5z
ZXRDb250ZW50c1NjYWxlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyk7CisgICAgfQorICAg
IHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAg
IHsKKyAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1
ZmZlcigpKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMoZGlzcGxheUJ1ZmZlcik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAg
IH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6Qm90dG9tVXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E+IGNvbnRleHQpCisg
ICAgICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgeworICAgIH0KKyAgICBS
ZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hPiBtX2NvbnRleHQ7Cit9OworCitS
ZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKQoreworICAgIHJldHVybiBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
KnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKQEAgLTgxLDcgKzEwOCw5IEBA
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hOjpwYWludENvbXBvc2l0ZWRSCiB7CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpj
cmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNv
cHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZh
Y2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1h
Z2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwpAQCAtMTAwLDE1ICsxMjksNyBA
QCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikg
ewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNw
bGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdo
dCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQogCkBAIC0xMTYsMTAgKzEzNyw3IEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSgpCiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kKQogewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwotICAg
IGlmICghY29udGV4dC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRleCBl
NGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi5jMGU2ZmY1YWVhNmMzMDVi
ZjJiY2Y3NTM5NDBlOGViMmY1NGZiZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBAIC00MywxMCArNDMsMTEgQEAgY2xhc3MgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IG92ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZv
cm1MYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgogICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
IApAQCAtNTQsNiArNTUsMjQgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRl
KFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUo
V1RGTW92ZShjb250ZXh0KSkpOworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPnBsYXRm
b3JtTGF5ZXIoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGUoUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAg
ICAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVm
PEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gbV9jb250ZXh0OworfTsKKwogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0Mo
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNr
ZW5kKQogICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NH
TD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQpAQCAtNzIsNiArOTEsMTEgQEAgdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAg
ICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6bGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKIH0KIAogUmVmUHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkxYWIx
NDE4NzUwMDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjkxNDkyYTA2OGY4NDYzNzZhMmMxNmY5ZTEyNmU5
ODVlYmM2YmMyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwog
ICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1fY29u
dGV4dCk7CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFvd25l
cigpIHx8ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAgICBi
b29sIHVzZXNCYWNraW5nU3RvcmUgPSAob3duZXIoKSAmJiBvd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSkgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyOworICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFj
a2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRy
OwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAo
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0
YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBt
X3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApAQCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVS
ZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9
CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJU
KG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRS
aWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNv
bnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9h
Y2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRS
aWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29u
dGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNv
bnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNhMjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMu
LjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThlYWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKaW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRm
NjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMyNWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlh
NzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRl
c0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMw
MDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4ZjRlLi42MjkyMzFiNjM5ZWE1YzE2ZDZiNTQ3
NTgwYmY2YzIyMjZkMzAzNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTM0LDE1ICszNCwxNiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxh
eWVyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
I2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVy
IjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9y
bUNBTGF5ZXIiOwotCiBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihwbGF0
Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQpKTsKQEAgLTgyLDggKzgz
LDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBjdXN0
b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAotICAg
IG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBvaW50M0QoY3Vz
dG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3VzdG9tTGF5ZXIu
elBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0Qo
Y3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueSwgY3Vz
dG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRzID0gY3VzdG9t
TGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRmb3JtQ0FMYXll
cgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5p
dF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7Ci0gICAgfSBl
bHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIpIHsK
LSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwot
ICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVudHMgYnJlYWtz
IHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAg
fQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxh
eWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBp
ZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRz
RGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5l
ZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5kZXggMzlkZTVl
OTZkOGU2NjIzYzcwZTkwMDZhMDcyOTI3YjNmYzFjNjhlZC4uMDgyNTA1MTZiZDBkOTg5YmJmZDNk
MDI2YTEwZmNmMDA4ODM2NDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCkBAIC0yODIsNiArMjgyLDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUo
UmVmUHRyPEdyYXBoaWNzTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGRpc3BsYXlEZWxlZ2F0ZSwgQ29u
dGVudHNMYXllclB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0g
ZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxs
cHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBv
c2UpOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25z
dAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjBiZmVlZTU2MTcyNTYyOTc5MWYxMTlmMTE2
YzgyYWQyZGY5NTRjZi4uZjM2MWM2N2RhZGFkNjIyYWEyYmU0NGNkMzRjNTJiMjVlNDc1ZTJhZSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTExLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3Np
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MDA5CisgICAgICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1
bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuCisKIDIwMjEtMTEtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uIHNob3VsZCBzdXBwb3J0IHJ2
ZmMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9U
ZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpp
bmRleCA5MTdkMmU4MTYwYTUzMmJmNjY3NGE0MjA1NTdlMjRkNWFiYTc4M2Y2Li45NTE0OTAxODVk
N2Y0YzJhZjlkYWViZjc0YjBhMmQ4YjEzY2JjOWY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RH
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zNSwxMyArMzUsMTQgQEAgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSB7Ci1jbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTCA6IHB1YmxpYyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCB7CitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBm
aW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgYXV0byBjb250
ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3Zl
KGF0dHJpYnV0ZXMpKSk7CiAgICAgICAgIHJldHVybiBjb250ZXh0OwogICAgIH0KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogcHJpdmF0
ZToKICAgICBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChX
VEZNb3ZlKGF0dHJpYnV0ZXMpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444791</attachid>
            <date>2021-11-19 01:36:42 -0800</date>
            <delta_ts>2021-11-19 05:10:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211119113640.patch</filename>
            <type>text/plain</type>
            <size>108231</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1OTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIzZWI0MjQ1ZDRlMWJk
ZDc1YzNiZDBjZTA1MWU0ZmJmYTQ4ZTY2MS4uOTQ5YjVkOTZjOGEwMDczNGRmOTdiYTRlZjIyOGMw
NjYwNGNkNDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSyBidWlsZCB3aXRoIEFUU1BJIGVu
YWxlZCBhZnRlciByMjg1OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwM2FkMGY2MTdjOWEyMGY5YzY1NjNkN2Ji
MzA4ZmFmMDY0YjEyZWQuLjhkM2Y0MDIyODQ1OTBkMGVkOGY1ZDNkNmYxOTliZGZiZTU4NDFmNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEtMTggIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9y
dCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNh
cGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVy
UmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRv
VmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9u
LiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIs
IGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhh
bmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRl
bGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAg
ICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRs
ZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUlu
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NM
YXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVBsYXllckFWRm91bmRhdGlvbiBzaG91bGQg
c3VwcG9ydCBydmZjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyYTI3ZTYwMjIwNTZiN2M5ZGQ1OTFh
NzExOTRjZDMxNGMxYzY0MmM3Li4xNDkwMDQ3MWZkOTU0Zjk3OWNiMTNjNDA4MTI4MDQ3ZGM3YTc4
MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEzMTMsNiArMTMxMyw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyVHJhbnNmb3JtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMTM2ODgw
M2JhNDA3ZmRhODE3MDE5OWFmMTBiYjYzZjEzMDBiMzdhMy4uZTZmNWM4ZjY2OTgyYWY0NGUzNGY5
YTBiYzJjNjlhYzg4NWIwODhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3
ICszMjcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggZTkyOGZmOTQ5NDU4M2I2NGVkNjBmNTVhODc5NDM1MDExZDc2NDJiNC4uMmVjNzkw
M2ViZDk4MDEwYzI0MWI5ODQ3ZDc4NjI3NzUyNTk4MTM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIw
MjIsNiArMjAyMiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNm
b3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMWE0NjY4NmY3OGNkY2IyMzhiYWQ1ZjJhYzMyYTcyYzU0MTc0NjNkZS4uOGE3MWQyY2QwMTA5
ZWQxODRmZjg0YTE3MjhiYzMzM2IxMTk3Y2Q4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0zOTAsNyArMzkwLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxp
bmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxh
eWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb24ubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlmODVlNDk4NmM1M2ExY2M4ZDYzYjMzOTRkM2Y3Mjk1ODMy
YWYzODcuLjMzYWMzNWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRjMWNhZjc1YjA3OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgpAQCAtMjA0NzIsOCArMjA0NzIsNiBAQCBfT0JKQ19DTEFTU18kX1dlYkNvcmVG
dWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVu
V2FybmluZ1ZpZXcKIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cKIF9PQkpD
X01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci1fT0JKQ19DTEFTU18kX1dlYkdM
TGF5ZXIKLV9PQkpDX01FVEFDTEFTU18kX1dlYkdMTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViTGF5
ZXIKIF9PQkpDX01FVEFDTEFTU18kX1dlYkxheWVyCiBfT0JKQ19DTEFTU18kX1dlYlNjcmlwdE9i
amVjdApAQCAtMzA2NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcuX2V4aXRXYXJuaW5nCiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxT
Y3JlZW5QbGFjZWhvbGRlclZpZXcuX3RhcmdldAogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVyLm1fY29udGV4
dAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9sYXllck93bmVyCiBfT0JKQ19JVkFSXyRfV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2
YXRlLnJvb3RPYmplY3QKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLm9yaWdp
blJvb3RPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiYjI2Nzc1NDFmZDIzN2I0ODg5ODhhYzMwZDcyNjI3OThhMTdjNjg3
Li5iNjQ3MDc4OGJkNjllOWIwNGUxNmIxYzRhMmEzNGJlYmY0ODZkZTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDM1LDcg
KzE0MzUsNiBAQAogCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFQ0VC
NjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlG
QUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0OUVFRDE0NzEwNTE5Njk0MDAwOTlG
QUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBEQTJGRjEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBQTAx
QUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM2MSw4ICsyMzYwLDEw
IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1
RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIx
NzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNTgyREQ4
MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2
MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDgg
LyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZG
MEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwNjYsOCArOTA2Nyw2IEBACiAJCTQ5RUVEMTRDMTA1MTk3
MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3QTRGMTQ0NEFGNUYwMEE1
RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0Ig
LyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEwMzMsNiArMTEwMzIsNyBAQAogCQk3QjE2MTkx
MDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcx
MkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4
MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzIwQjBB
Mjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZB
MjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUQyNkYwQzEyMzAw
OEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVGMjZG
MEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTEwNDIsNiArMTEwNDIsNyBAQAogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjgyNUJBMUJFNDAwMkI4
NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
QkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyRDgyNzA1
OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFO
R0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREEy
NzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE4OTYxLDExICsxODk2MiwxMSBAQAogCQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5
ODMgLyogYnJpZGdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk1OUI1OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICovLAogCQkJCTFBNTY5Q0UyMEQ3
RTJCODIwMDdDMzk4MyAvKiBvYmpjICovLAogCQkJCTU5OUU3NThGMTEwNTVBMUYwMEQ5MDRGQSAv
KiBCcmlkZ2UuaCAqLywKIAkJCQkxQTcxRDU3OTBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmll
clJlcC5jcHAgKi8sCiAJCQkJMUE3MUQ1N0EwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJS
ZXAuaCAqLywKLQkJCQk1OUI1OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICovLAogCQkJCTFB
NTY5Q0VGMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLywKIAkJCQkxQTU2
OUNGMDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5oICovLAogCQkJCTFBNTY5Q0Yx
MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX21ldGhvZC5jcHAgKi8sCkBAIC0yNzk0Miw2ICsy
Nzk0Myw4IEBACiAJCQkJMEY1ODBCMDkwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIu
Y3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmgg
Ki8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQu
aCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywKKwkJCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQg
LyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8sCiAJCQkJMUFDNjk1
OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJCQkJMEZB
MjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLywKIAkJ
CQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLywK
QEAgLTI4MjUyLDggKzI4MjU1LDYgQEAKIAkJCQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyog
V2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8sCiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNE
IC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4
RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlG
RkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTEx
QzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4
MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1
ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJN0Ix
NjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tICovLApAQCAtMzIzMDEsNiArMzIzMDIsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVy
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChudWxsKSBpbiBIZWFkZXJzICov
LAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0
RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjE3LDYgKzMzNjE5LDcgQEAKIAkJCQkw
RjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2QkNFMEUgLyog
R3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjg0NSw3ICszNjg0OCw2IEBACiAJ
CQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJh
bWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAv
KiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJC
RUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVDMzYyRDkyNUI0
QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3
QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmplY3QuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJkNWMyNWI2YmFlYTIyM2Y1NjdiLi43MmIy
Y2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZjZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0
dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRlcmVmQ2FudmFzQmFzZSgpOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxG
b3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhlbEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5k
ZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGViOTk3OGU4MDIzZS4uNWFlNzliZjBiOWUz
OTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCiAgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgeyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
KGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcikgeyBtX2hhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1Nzg2OGIwYTIzYjIyM2JkZGU5MWMwNzhk
YmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5YzQyYTRlZjBmOWQyODkxYWQ1NjEzNzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCBIVE1MQ2FudmFzRWxl
bWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMoKSBjb25zdAogICAgIHJl
dHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGJhc2UpOwogfQogCi1QbGF0Zm9ybUxh
eWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+
cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPmxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDljYmU0OTc2MGE2YzY2YTM4MzRkZjk5MTk5
Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0Mjk5NzRkMTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNQbGFj
ZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAh
IW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBpc0dQVUJhc2VkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAzMzky
NWJjNmFjOGQ4N2I0MTA2YjA2MzFlZDM0MjkwMzlhNzhhZmU0Li43YjMwODEzYWE5YjA3YTY0YWFh
NGZkYWI2ZTE1YWIyZjEyOGRjYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTIsNiArNTIsNyBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTY0NDUsOSArNjQ0NiwxMSBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzQ29udGV4dFVucmVjb3ZlcmFibHlMb3N0
KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9zdCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsK
IH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5
UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAgaWYgKGlz
Q29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW1vdmVT
aGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCA2
NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUwNTgxNjA4Li5iNTQ1N2U3MTM3Zjg0MjZk
YzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODYsNyArMzg2LDcg
QEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAgICAgV2ViR0xDb250ZXh0R3JvdXAq
IGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEdyb3VwLmdldCgpOyB9Ci0g
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBlZGFhNGNlNWVhNzJlNzMwYmM1
MjU0NmM3MDA2ZWQyMzcyNzM5NjBkLi4zZjkwM2NiOWM1OWQ2ZjhkYWI1ZDYxMjcwZWVkZDFkNTY3
Njc1ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lmIEVOQUJMRShXRUJHTCkK
IAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03ODYsNyAr
Nzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAgICB9OwogCi0gICAgdmlydHVhbCBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaGFzQWxw
aGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBjNzVkYTU2YTgzNjE1NmNjMGQ1
ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li4xYmI3N2Y0NzcxZjhiZWRjMjBjYzgwYTcwNzQ2MzM5MTFm
ZTc3Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2ICs2MTMsMTAgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cit9CisKIHZvaWQg
R3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdp
ZHRoKSBjb25zdAogewogICAgIHdpZHRoID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjk1MDlmMThjY2I5NTk5MjNkZDlm
NWQ1ZmIyNTJiZTE4Yjk4OTljLi4xNjFlM2I5N2I1ODlkZGEwMDc4NDljZDgwODdlYTk1NmI5NTIw
OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuaW1h
dGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
OworY2xhc3MgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogY2xhc3MgSW1h
Z2U7CiBjbGFzcyBNb2RlbDsKIGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTUyMiw2ICs1MjMsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92ZSB0aGUgY29u
dGVudHMgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNv
bnN0IENvbG9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSk7CiAjaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Nb2Rl
bChSZWZQdHI8TW9kZWw+JiYpIHsgfQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllcklEIGNvbnRl
bnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIzMDZmODA0MWI0
MDhhMmNmYzI1Nzk5YzFhMjJjZmE2MjYxZjdhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKKworI2lmIFVTRShDQSkKKyNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ0EuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6fkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpID0gZGVmYXVsdDsKKworI2lmIFVTRShDQSkKK3ZvaWQgR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVu
dHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1YmU4YTg1YzY3Mzk3YzIxNzNlMTVkNjVm
OTk0ODJhZDQ1NWUyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5o
IgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgVVNFKENBKQorY2xhc3MgUGxhdGZv
cm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNwZWNpZmljIGludGVyZmFjZSBmb3Ig
YXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIuCisvLyBSZXNwb25zaWJsZSBmb3Ig
Y3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hvdyB0aGUgcGFydGljdWxhciBjb250
ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdyYXBoaWNzTGF5ZXIuCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShQ
bGF0Zm9ybUNBTGF5ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNlCisgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworI2VuZGlmCit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clBpcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlw
ZS5oCmluZGV4IDZlNmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2FlMTA5OTUwZTguLjNiZWQx
ZDBhZTZlMzkwMDM4MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHByb3ZpZGUgYSBQbGF0Zm9y
bUxheWVyIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1h
Z2VCdWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCisvLyBVc2VkIHRv
IHByb3ZpZGUgR3JhcGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2Vk
IEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEg
V29ya2VyIHRocmVhZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VCdWZmZXJQaXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291cmNlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBS
ZWZQdHI8U291cmNlPiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSgpID0wOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5k
ZXggNTE5MGEzODY1NDMwMDcyMDA1MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uNzVhYTIxOThkZmJh
MDQ0NTMxMTIyYzQ3YzE1YzM2ZWEzNGIyODFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlM
aXN0LmgiCkBAIC0xMzQ4LDYgKzEzNDksMzEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBwcm92aWRl
ciwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBpZiAobV9jb250ZW50c0xh
eWVyICYmIHByb3ZpZGVyID09IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXll
ci0+c2V0T3duZXIobnVsbHB0cik7CisgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKKyAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CisgICAgaWYgKHByb3ZpZGVy
KSB7CisgICAgICAgIG1fY29udGVudHNMYXllciA9IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllciwgdGhpcyk7CisgICAg
ICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKKyAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CisgICAgICAgIC8vIEN1cnJlbnRs
eSBkZWxlZ2F0ZWQgZGlzcGxheSBpcyBvbmx5IHVzZWZ1bCB3aGVuIGRlbGVnYXRlZSBjYWxscyBz
ZXRDb250ZW50cywgc28gc2V0IHRoZQorICAgICAgICAvLyBiYWNraW5nIHN0b3JlIHNldHRpbmdz
IGFjY29yZGluZ2x5LgorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tpbmdTdG9yZUF0
dGFjaGVkKHRydWUpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFjY2VsZXJhdGVzRHJh
d2luZyh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+d2lsbERlbGVn
YXRlRGlzcGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CisKKyAgICBub3RlU3VibGF5ZXJz
Q2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3Jt
TGF5ZXJDaGFuZ2VkKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBQbGF0Zm9ybUxh
eWVyKiBHcmFwaGljc0xheWVyQ0E6OmNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0CiB7CkBA
IC0xODc4LDYgKzE5MDQsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
ckxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUodW5zaWduZWQgYmxhbmtQaXgKICAgICBjbGllbnQo
KS5sb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKGJsYW5rUGl4ZWxDb3VudCk7CiB9CiAKK2Jvb2wg
R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgJiYgbV9jb250ZW50c0xheWVyID09IGxheWVyOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIp
Cit7CisgICAgQVNTRVJUKG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUpOworICAgIEFTU0VSVChs
YXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUt
PmRpc3BsYXkoKmxheWVyKTsKK30KKwogc3RhdGljIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
IGxheWVyVHlwZUZvckN1c3RvbUJhY2tkcm9wQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0
b21BcHBlYXJhbmNlIGFwcGVhcmFuY2UpCiB7CiAgICAgcmV0dXJuIGFwcGVhcmFuY2UgPT0gR3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJvcCA/IFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDogUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKQEAgLTI3OTIsNyArMjgzMCw4IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3JtTGF5ZXIoKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBQbGF0Zm9ybSBsYXllciB3YXMgc2V0IGFzIG1fY29udGVu
dHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgot
ICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgIGF1dG8g
b3JpZW50YXRpb24gPSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID8gbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS0+b3JpZW50YXRpb24oKSA6IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOwor
ICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCksIG9yaWVudGF0aW9u
KTsKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENvbnRlbnRzTGF5ZXJQdXJw
b3NlOjpDYW52YXMpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7
CkBAIC00NDEyLDE5ICs0NDUxLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpjaGFuZ2VMYXll
clR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBuZXdMYXllclR5cGUpCiAgICAgICAg
IGNsaWVudCgpLnRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZCh0aGlzLCBpc1RpbGVkTGF5ZXIpOwog
fQogCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3Jh
cGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIq
IGNvbnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllciwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFR1cm4gb2ZmIGltcGxpY2l0IGFuaW1h
dGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGNvbnRlbnRzTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAjZW5kaWYKLQotICAgIGlm
IChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbjo6Qm90dG9tVXApIHsKKyAgICBpZiAob3JpZW50YXRpb24gPT0gQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgewogICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBmbGlwcGVyKAogICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwK
ICAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA5ZDQ0
ZjZhYjM4MGM4ODY2NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3Li5jMDMwOWZmMmJhYmI5YmE0NTY4
YWYwOTkxNTc2Njg2ZTViNGM1NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUwLDYgKzE1MCw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBjb250ZW50c0xheWVyRm9y
TWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzRnJv
bURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7
CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
b250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSBvdmVycmlkZTsKQEAgLTIxMiw2ICsyMTQs
OCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCk7IH0KICAgICBib29sIHBs
YXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRyYXdz
Q29udGVudCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXll
ciopIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBs
YXRmb3JtQ0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJuIGxheWVyRGlkRGlzcGxheShs
YXllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5lZWRz
VG9SZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBw
bGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzAw
LDEwICszMDQsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1aXJlc1RpbGVkTGF5ZXIoZmxv
YXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNoYW5nZUxheWVyVHlwZVRvKFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0OwotCi0gICAgdm9p
ZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CisgICAgY29uc3RleHByIHN0
YXRpYyBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3Jp
ZW50YXRpb24gPSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Cisg
ICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRpbmdD
b29yZGluYXRlc09yaWVudGF0aW9uID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwogICAg
IFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dHNMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBsYXRm
b3JtQ0FMYXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYpOwpAQCAtNjQ0LDYgKzY0Niw3IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9kZWw7
CiAjZW5kaWYKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlB
bmltYXRpb24+IG1fYW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwpAQCAtNjYzLDYgKzY2Niw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhc0V2ZXJQYWludGVkIDogMTsKICAgICBib29sIG1faGFzRGVz
Y2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbnMgOiAxOwogICAgIGJvb2wgbV9o
YXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMgOiAxOworICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDVkZjFhM2I2MWFiNWQ5N2VkNjNjOGFiMTg4OGU5
ZGRhOTJkMTU4MzQuLjhhMjFhMWQ1Y2Y0MThiYzBiODNhMmM5YWMwMjYwZjk2MjA2MTFhYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oCkBAIC0zOSw2ICszOSwxMiBAQCBPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXI7CiB0
eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKICNlbmRpZgogCituYW1lc3Bh
Y2UgV1RGIHsKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7CisjZW5k
aWYKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclBvb2w7CkBAIC00OCw2
ICs1NCwxMCBAQCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ7CiAKIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+PiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OwogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCitjbGFzcyBJT1N1cmZhY2U7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYXRm
b3JtQ0FMYXllciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTsKQEAgLTE5MCw2
ICsyMDAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpID0gMDsKIAor
I2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBX
ZWJDb3JlOjpJT1N1cmZhY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNv
bnN0IFdURjo6TWFjaFNlbmRSaWdodCYpID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QmFja2luZ1N0b3JlQXR0YWNoZWQoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQu
aAppbmRleCA2Nzc4ZGU3MTljNTBlMWE0NWZjODI0NmQ3M2E5MDhhYmZiYWQxMzA2Li4xZTcyYzQ1
NjZlN2FmZWFiNjRkNjZkYTkwNmMwZjE5ZmZkODM5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQu
aApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVy
RGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
QUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDliMWIwMTEyMDEzNGNkODU1ZWM1Y2Qx
MTQ4YzExMWVmZjdlMDZmZDMuLjgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3ZTA0OWIy
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTIwLDYgKzEyMCwxMCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENG
VHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMo
Q0ZUeXBlUmVmKSBvdmVycmlkZTsKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAog
ICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDM0ZTI1OTBmNTc3Mjk2YjIyMzli
ZjI4NjgyZmM3NTZhYzY2OTAzYWEuLjJhNDVkZGM0NThkZTA2N2JhZGIwMWE1N2VkZmIyYjlhYjk1
MzAzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC00MCw3ICs0MCw2
IEBACiAjaW1wb3J0ICJUaWxlZEJhY2tpbmcuaCIKICNpbXBvcnQgIldlYkFjdGlvbkRpc2FibGlu
Z0NBTGF5ZXJEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCIKLSNp
bXBvcnQgIldlYkdMTGF5ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCIK
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CkBAIC01NCw2ICs1Myw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5o
PgorI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCkBAIC0yMTEsOSArMjExLDYg
QEAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVy
VHlwZUZvclBsYXRmb3JtTGF5ZXIoUGxhdGYKICAgICAgICAgJiYgWyhXZWJWaWRlb0NvbnRhaW5l
ckxheWVyKilsYXllciBwbGF5ZXJMYXllcl0pCiAgICAgICAgIHJldHVybiBMYXllclR5cGVBVlBs
YXllckxheWVyOwogCi0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHTExheWVyIGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0K
ICAgICByZXR1cm4gTGF5ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yMzQsNiArMjMxLDcgQEAgUGxh
dGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5
cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVT
aW1wbGVMYXllcjoKICAgICBjYXNlIExheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKKyAg
ICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgbGF5ZXJDbGFz
cyA9IFtXZWJTaW1wbGVMYXllciBjbGFzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5
ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0yNjUsMTAgKzI2Myw2IEBAIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDCiAgICAgICAgIGlmIChQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxh
YmxlKCkpCiAgICAgICAgICAgICBsYXllckNsYXNzID0gUEFMOjpnZXRBVlBsYXllckxheWVyQ2xh
c3MoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6Ci0gICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYXMg
d3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIExh
eWVyVHlwZU1vZGVsTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbQ0FMYXllciBjbGFzc107
CkBAIC0zMTAsNyArMzA0LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5p
dCgpCiAgICAgfQogICAgIAogICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5pbWF0aW9u
cyBvbiB0aGUgQ0FMYXllcgotICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXll
ckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllciB8
fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVy
VHlwZSA9PSBMYXllclR5cGVDdXN0b20pCisgICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVy
TGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9sYXll
ciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogICAgIGVsc2UKICAgICAgICAgW21fbGF5ZXIgc2V0
RGVsZWdhdGU6W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKQEAg
LTc5Nyw2ICs3OTEsMTkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMo
Q0ZUeXBlUmVmIHZhbHVlKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAorI2lm
IEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMo
Y29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIHNldENvbnRlbnRzKHN1
cmZhY2UuYXNMYXllckNvbnRlbnRzKCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7
CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CisgICAgc2V0Q29udGVudHMoKnN1cmZhY2UpOworfQorI2VuZGlm
CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHZhbHVlKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZmI3MjNkZDQyMmRlOWI5
ZGFkYTllNGNiODk3ZDA2MWNiZTZkNjAzZS4uNjk1N2EwNDE0ZmVhNjE3ODIxZjBiNzRmNTk1Mjgy
ZWM1MDk3YjcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CkBAIC00MzQsMTEgKzQzNCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFs
aWQoKSBjb25zdAogICAgIHJldHVybiBtX3RleHR1cmU7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKIHsKICAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCA9PSAtMSkKQEAgLTY5OCwxMSArNjkzLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVzdGlu
ZyBlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkK
IHsKKyAgICBXVEZMb2dBbHdheXMoInByZXBhcmVmb3JkaXNwbGF5Iik7CisKICAgICBpZiAobV9s
YXllckNvbXBvc2l0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQogICAgICAgICByZXR1cm47CiAgICAgcHJlcGFyZVRleHR1cmVJbXBsKCk7CisgICAg
V1RGTG9nQWx3YXlzKCJwcmVwYXJlZm9yZGlzcGxheSBkb2luZyIpOwogCiAgICAgLy8gVGhlIElP
U3VyZmFjZSB3aWxsIGJlIHVzZWQgZnJvbSBvdGhlciBncmFwaGljcyBzdWJzeXN0ZW0sIHNvIGZs
dXNoIEdMIGNvbW1hbmRzLgogICAgIGdsOjpGbHVzaCgpOwpAQCAtNzM0LDcgKzczMiw2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICB9CiB9
CiAKLQogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKIEdyYXBoaWNzQ29u
dGV4dEdMQ1YqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphc0NWKCkKIHsKQEAgLTc5Niw2ICs3
OTMsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhy
ZWFkUmVzb3VyY2VzKCkKICAgICBjdXJyZW50Q29udGV4dCA9IG51bGxwdHI7CiB9CiAKK0lPU3Vy
ZmFjZSogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIoKQoreworICAgIHJl
dHVybiBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpCit7Cisg
ICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2
ZGEwZmUwZjQ0YTNhODQ0MGU2NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0KLS8vIEEgbGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJmYWNlLgotV0VC
Q09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0
V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFx
dWU6KGJvb2wpY29udGVudHNPcGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5MDMx
NTU2OTExMTM2YzMxZjVkNjhlZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xMYXllci5oIgot
Ci0jaW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIK
LSNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR0xMYXll
cgotCi0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0
aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5Owot
ICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRl
bnRzU2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwotfQotCi0vLyBX
aGVuIHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVlZCB0byBmbGlw
IHRoZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9TdXJmYWNlIHBy
b3ZpZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkgaW5jb21pbmcg
dHJhbnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50cyBsYXllcikg
YW5kIGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFuZCBtYWtlIHN1
cmUgdGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9pZClzZXRUcmFu
c2Zvcm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zvcm06Q0FUcmFu
c2Zvcm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5jaG9yUG9pbnQ6
KENHUG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngs
IDEuMCAtIHAueSldOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBTaG93IHRoZSBz
ZWxmLmNvbnRlbnRzIGFzIHRoZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhpbmcgaW4gdGhp
cyBmdW5jdGlvbi4KLSAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxh
eWVyICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5kCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDI1NjI1ZWRiZmUyNTRlMzc1ZmVmMTY5ODE2
OWY1MmVmZDRhYTc3MjIuLmQ3NjMwYmY2ZDUyM2FmNGYyYTU1NDY1Mzc4Yzk0MWNkYTY0YmY3MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlBy
b2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tCkBAIC0yOSw1MyArMjksNTkgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExheWVy
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZp
Y2VQaXhlbFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZToh
YXR0cmlidXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFtZTpA
IldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgcmV0dXJuIGxheWVyOwotfQotCiAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0eXBlIHRo
YXQgaXMgdXNlZCB3aGVuIFdlYkdMIGlzIHJ1biBpbi1wcm9jZXNzIGluIFdlYkNvbnRlbnQgcHJv
Y2Vzcy4KIGNsYXNzIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgfldlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCgpID0gZGVmYXVsdDsKLSAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWYWxpZCgpICYmIG1fd2Vi
R0xMYXllcjsgfQogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQotICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICAgICAgOiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRyaWJ1dGVzKQotICAgICAgICAsIG1fd2ViR0xMYXllcihjcmVhdGVXZWJH
TExheWVyKGF0dHJpYnV0ZXMpKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5
ZXI+IG1fd2ViR0xMYXllcjsKLQogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDsKIH07CiAKLXZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVw
YXJlRm9yRGlzcGxheSgpCitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBj
cmVhdGUoUmVmPFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGUoV1RGTW92ZShjb250ZXh0KSkpOworICAgIH0KKyAgICAvLyBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgd2lsbERl
bGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgYXV0byBhdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpOworICAg
ICAgICBsYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOworICAgICAgICBsYXllci5z
ZXRDb250ZW50c1NjYWxlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyk7CisgICAgfQorICAg
IHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKGF1dG8gZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpKQor
ICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMoKmRpc3BsYXlCdWZmZXIpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICB9CisgICAg
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpD
b21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KK3ByaXZh
dGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShSZWY8V2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChXVEZNb3Zl
KGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFdlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gbV9jb250ZXh0OworfTsKKworUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKLSAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3
YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2Up
Ci0gICAgICAgIHJldHVybjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
bV93ZWJHTExheWVyIHNldENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAg
ICBbbV93ZWJHTExheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIHJldHVybiBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
KnRoaXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYw
YTI4ZGRmMjIuLjMyNmYwNDMyYjQ4NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CkBAIC0yNiw3ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0
aWVzLmgiCiAKKyNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlk
ZW9Tb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4
NjJmZjBiZmMxMzA2ZGE4MGQ2MDNjNTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1
ZmRhMzllOGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbQpAQCAtODEsOCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5
CiB7CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1D
QUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBs
YXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkpCi0gICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIg
fHwgIWxheWVyLT5vd25lcigpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3du
ZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0
dXJuOworICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRz
RGlzcGxheUluUmVjdDooQ0dSZWN0KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0K
IAogICAgIGlmIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBw
bGF0Zm9ybUxheWVyLT5vd25lcigpKSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZv
cm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVs
ZWdhdGVzRGlzcGxheShwbGF0Zm9ybUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVy
IHNldE5lZWRzRGlzcGxheUluUmVjdDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5
ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIu
Z2V0KCkpKSB7CkBAIC0xMDMsNiArMTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0
TmVlZHNEaXNwbGF5SW5SZWN0OmluZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIAogICAgIH0KIH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAg
V2ViVGhyZWFkTG9jaygpOwogI2VuZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBbc3VwZXIgZGlzcGxheV07CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAg
IGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBu
dWxscHRyOworICAgIGlmIChvd25lciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVz
RGlzcGxheShsYXllci5nZXQoKSkpCisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXld
OworICAgIGlmIChvd25lcikKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250
ZXh0UmVmKWNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4
IDMzMDI4YTVlOTRjOWNlNzA0YTEzOGYwM2I5MzRkYzExZTI5ZGUzNGQuLjY4ZGM2YmY1OTQ4Mjcz
OGYxODJmMGYxMzUyODZhOTYzNDc4Njk3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlLmNwcApAQCAtNDQsMTYgKzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBw
dWJsaWMgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNl
IG92ZXJyaWRlcy4KICAgICB2b2lkIGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFs
OwogCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCiBwcml2YXRl
OgorICAgIC8vIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVz
LgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRy
PENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CkBAIC02MiwxNSArNjQsMzAgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCitjbGFzcyBQ
aXBlU291cmNlRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5
RGVsZWdhdGU+IGNyZWF0ZShSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4mJiBzb3Vy
Y2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxh
eURlbGVnYXRlKFdURk1vdmUoc291cmNlKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZS0+cGxhdGZvcm1MYXll
cigpOyB9Citwcml2YXRlOgorICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmPE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+JiYgc291cmNlKQorICAgICAgICA6IG1fc291cmNlKFdU
Rk1vdmUoc291cmNlKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlU291cmNlPiBtX3NvdXJjZTsKK307CisKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUg
ZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0g
ZGVmYXVsdDsKLQotcHJpdmF0ZToKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgog
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7
Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwotCisgICAg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOworcHJpdmF0ZToKICAgICBSZWZQdHI8Tmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CiB9OwogCkBAIC0xMzUsOSArMTUyLDkgQEAg
dm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogfQog
Ci1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKQogewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKKyAgICByZXR1cm4gUGlw
ZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogdm9pZCBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKQEAgLTE1NCwxMyAr
MTcxLDE1IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVm
ZmVyUGlwZTo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3VyY2U7CiB9CiAKLVBsYXRm
b3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gTmljb3NpYUltYWdl
QnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKG1f
c291cmNlKQotICAgICAgICByZXR1cm4gbV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAg
ICAgcmV0dXJuIG1fc291cmNlLT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKK30KKwogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDM4
MjczYjA3MmI1NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUuLjQyMjBhZGJhNWUyNTdmNzMz
ODUxNTVlMDM3N2I0YzY4M2ViYmFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC02NSw4ICs2NSw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotT0JK
Q19DTEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJHTExheWVyOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwogfQpAQCAtMTAzLDEzICsxMDEs
MTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKTsKICAgICB2
aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29u
ZmlnIHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdPYmo7IH0KICAgICBz
dGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdU
YXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJh
d2luZ0J1ZmZlclRleHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdU
YXJnZXQpOwotI2Vsc2UKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWw7CisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgLy8gRklYTUU6IE1pZ3Jh
dGUgdG8gbGF5ZXJzIHRvIHN1YmNsYXNzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpOwpAQCAtMTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50IGFsaWdubWVudCA9IDQpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBv
dmVycmlkZXMuCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAKICAg
ICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAgdm9pZCBtYXJrRGlzcGxheUJ1
ZmZlckluVXNlKCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJl
YWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlMjg1MWMyZTNkMjIx
NzcxNjk0YmRkNmYxMmYwZTVmNzg5OWM3NTViLi5jZDNkN2VkMGQ0NzFjYzM1MGU5YmMwMzk4MDZl
MDU1YzJjZWE1N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcApAQCAtNjYsNiArNjYsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitu
YW1lc3BhY2UgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIgZmluYWwg
OiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworcHVibGljOgorICAgIC8vIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmlu
YWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisgICAgZnJpZW5kIGNsYXNzIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOworICAgIC8vIEZJWE1FOiBtb3ZlIG1vcmUgcGxhdGZvcm0t
c3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggdG8gaGVy
ZS4KK307CisKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBS
ZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZjxHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShjb250ZXh0KSkp
OworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3Zl
cnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOworICAgIH0K
K3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShSZWY8R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KFdU
Rk1vdmUoY29udGV4dCkpCisgICAgeworICAgIH0KKyAgICBSZWY8R3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyPiBtX2NvbnRleHQ7Cit9OworCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBQbGF0Zm9ybUxheWVyRGlz
cGxheURlbGVnYXRlOjpjcmVhdGUoKnRoaXMpOworfQorCit9CisKIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyopCiB7CiAgICAgc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTg1LDcgKzEyNiw3IEBAIFJlZlB0cjxHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHRHCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ3JlYXRlIHRo
ZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvYmplY3QgZmlyc3QgaW4gb3JkZXIgdG8gZXN0YWJs
aXN0IGEgY3VycmVudCBjb250ZXh0IG9uIHRoaXMgdGhyZWFkLgotICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzKSk7CisgICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cihhdHRyaWJ1dGVzKSk7CiAKICNpZiBVU0UoTElCRVBPWFkpICYmIFVTRShPUEVOR0xfRVMpICYm
IEVOQUJMRShXRUJHTDIpCiAgICAgLy8gQmFpbCBpZiBHTEVTMyB3YXMgcmVxdWVzdGVkIGJ1dCBj
YW5ub3QgYmUgcHJvdmlkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAppbmRleCA1ODA4MGQ0ZTFhZDQxMThjNzUyM2U0NzNmMDY4MDYzMGZhM2JhYmE5Li5iNmQ0
MThiYTg2ZTY2YjQ5ZTI3MjBjYmIwNGRmN2ZiNDkyMTk0N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMzNCw2ICszMzQsMTIgQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoVGV4dHVy
ZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDbGllbnQodGhpcyk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURp
c3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAg
ICBQbGF0Zm9ybUxheWVyIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCiB7CiAgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggZTgwY2FhMGFjODkwOTE5YTg0MzNhMDVkMjA5MDIyMzc3
ZTQyODhkNy4uZTFmYzk2MmZkOGM2M2UyNjM3ZjBiMTU4NjA3ZWQwNTA5ODVjYmY2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckRpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyTGF5ZXIuaCIKQEAgLTc3LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVu
dHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRD
b2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRl
eCBhNzQ5MDdjZTFjYjcwMWI3ODcwZDA4YmJjY2UwNDIzN2Q4YTRhMzlmLi41ZGY4YjU0NDUxNDQz
NGFhZDY2YmU4ZmRiYjY0MDIyOGFlYTQ1NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNDk5LDYgKzQ5OSwxMiBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRl
bnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxh
eWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkg
OiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIs
IHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZmlsdGVyc0Nh
bkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewog
ICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTViMDI0MzgzZDc1OTU3ODkx
Yzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEyYTk4NTJlMTBlY2FlYjBkMDU0OWY5Y2NkNzQwOTlkYWQy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93UmVwYWlu
dENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0
ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihSZWZQdHI8R3JhcGhpY3NM
YXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5k
ZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0ZDUxZC4uODNlOWJiZTY2NjIy
NWMxODc3ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyArMTA4OSw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxheWVy
KiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygpICYm
IGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNv
bnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBkb3du
Y2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAgICBp
ZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQotICAgICAgICAg
ICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihjb250ZXh0LT5w
bGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52
YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0Zyb21EaXNwbGF5
RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGlj
c0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXllckNv
bmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCAxZWVlMThkNjJmMDUwOWYwMDlmMzRjM2VkZTY4ZDM1ZTBkMDg5NjUzLi4xMDJlZTJmYWE0
NzY5NzNlZDI4ZTc1ZDJmMjhlZGVhNjIzNDdkNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Ci0KKyAgICBSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIHsgcmV0dXJuIG1f
c3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOyB9CiAgICAgdm9pZCBtYXJr
RGlzcGxheUJ1ZmZlckluVXNlKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZm
ZXJJblVzZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggZGMy
ZmFiZDRlZjU1Zjc4MzE3MjcwYzMyMjEwMjNlMzg2MWU4MDcxZC4uMTZiZGZkZmY5ZDVkMzlmYWVk
OTI2YTE1Mzc4NDRjZDUyYWM1NTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOgogewogICAgIGFz
c2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlz
cGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIElPU3VyZmFj
ZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmIChk
aXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURFTlRJVFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3ZjlmNGEzYmU5OTZhZDQ1
MWQwMTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5NTk5MjI0OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lkIHNl
dE5lZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmln
aHQmJiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04Myw3ICs4NCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICAgICAgcmV0dXJu
IG1fYnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5k
aW5nRmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0NjZiNjZk
NzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVjNTZjZTE3NTM0YjExZmNm
YjVhNDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0x
MDAsNiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2lu
Z1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAogdm9pZCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAgIG1fYnVmZmVySGFuZGxl
ID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFj
a0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsK
QEAgLTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7CiAg
ICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlRGlzcGxh
eUxpc3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFu
ZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRj
aCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNr
ZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUg
PSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2Vu
ZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJh
Y2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
KQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGVuY29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZmZXJIYW5kbGU7CiAKICNp
ZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3RkOjpv
cHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwpAQCAt
MjIwLDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlk
RnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9idWZmZXJIYW5kbGUgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7
CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpAQCAtMjU3LDYgKzI0MCwx
MyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50
KCkKICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0
OjpObzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMoV1RG
OjpNYWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9idWZmZXJIYW5kbGUgPSBXVEZN
b3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7Cisg
ICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNp
emUoKSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9s
YXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250
ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsK
KyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1f
bGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8v
IE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRo
YXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5Lgog
ICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApAQCAt
MzI3LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkK
ICAgICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5kaWYKIAorICAgIHN3aXRj
aCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CisgICAgICAgIGlmIChhdXRv
KiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0
ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1h
cEJhY2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGlj
X2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFj
a2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5
cGU6OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgbV9idWZmZXJI
YW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNr
ZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIz
OGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJp
bmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxh
eWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5
ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQ
cm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBj
cmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVk
TGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZm
YzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VO
b2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJl
dHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVz
LmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9y
bUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRy
ZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5k
aWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICht
X2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJl
ZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAg
IHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM5ZDA3NGY0MzExMDJjZjQ3ZGY4MDFhY2QyNTc5MzIw
OTAyZWEwNGMuLjcyMzkzZTRmZjU5ZTc2ZWJkNzliMzYxMGIzMzQzOTFkNmM2NjkxNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6
Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGls
ZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRl
bnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtb
V0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6
bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJM
YXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAg
ICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2Uo
KS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0
SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDZlZmVjYmNlZTQ2NTkyZTc1OGUwZTg4Y2Y2ZTkxODFjZTkyOTk5OGIuLmI0N2ZhMjBl
ODk5YThkMzY0YzEyODMwYjViNGJlMDZiYjJmZDI3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc2Niw2ICs0NzY2LDcgQEAKIAkJ
N0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4
IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLjUxNTNhYWQxYWI1MTY3
Y2FjYjY5MDBmOWRhNWMwN2QzNzM0YTM0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwxMiArMzIsMTAgQEAK
ICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC00NSwxMSArNDMsMTAgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vi
R0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IE1hY2hTZW5kUmln
aHQmIGRpc3BsYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7IH0KIAog
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dlYkdMTGF5
ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAgICAg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTksMjEgKzU2LDUxIEBAIHB1YmxpYzoKICNl
bmRpZgogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0YWluUHRyPFdlYkdM
TGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJm
YWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7
CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJl
bmRlcmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV93ZWJHTExheWVyID0gYWRv
cHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5k
ZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRlZiBO
REVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2VuZGlm
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitjbGFzcyBEaXNwbGF5QnVmZmVy
RGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVm
ZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYT4gY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShjb250ZXh0KSkpOworICAgIH0KKyAg
ICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJp
ZGVzLgorICAgIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhlc2UgdG8g
Y2FsbGVyLgorICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2NvbnRleHQtPmNvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7Cisg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlv
KTsKKyAgICB9CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5
ZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoYXV0byBkaXNwbGF5QnVmZmVyID0gbV9jb250
ZXh0LT5kaXNwbGF5QnVmZmVyKCkpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhkaXNw
bGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMo
bnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgewor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGlu
YXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9Citwcml2YXRlOgorICAgIERpc3BsYXlC
dWZmZXJEaXNwbGF5RGVsZWdhdGUoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YT4gY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICB7
CisgICAgfQorICAgIFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E+IG1fY29u
dGV4dDsKK307CisKK1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6bGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGU6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAt
ODEsNyArMTA4LDkgQEAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFIKIHsKICAgICBpZiAoIW1fZGlz
cGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNl
KCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rp
c3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4
ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0x
MDAsMTUgKzEyOSw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1ZmZlclNlbmRSaWdo
dCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgaWYgKCFk
aXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlcik7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRD
b250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKQEAgLTEx
NiwxMCArMTM3LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnBy
ZXBhcmVGb3JEaXNwbGF5KCkKIAogUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYo
bmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdC
YWNrZW5kKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBjb250ZXh0OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0MuY3BwCmluZGV4IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLmMw
ZTZmZjVhZWE2YzMwNWJmMmJjZjc1Mzk0MGU4ZWIyZjU0ZmJlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eVdDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKQEAgLTQzLDEwICs0MywxMSBA
QCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MgZmluYWwgOiBwdWJsaWMgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eQogcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBm
aW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6CiAgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogCkBAIC01NCw2ICs1NSwyNCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAorY2xhc3MgUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRp
c3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKGNvbnRleHQpKSk7CisgICAgfQorICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC0+cGxhdGZvcm1MYXllcigpOworICAgIH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZShSZWY8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiYm
IGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgewor
ICAgIH0KKyAgICBSZWY8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBtX2NvbnRleHQ7
Cit9OworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICA6IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMs
IHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1Bs
YXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCkBAIC03Miw2
ICs5MSwxMSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJlcGFyZUZv
ckRpc3BsYXkoKQogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAorUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKK30KKwogfQogCiBSZWZQ
dHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXgg
NWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4uNThiNmFlN2ZjOWJhMGM3
YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDExIEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlIHx8IG93
bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmNv
bnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVyKCkgJiYgKG93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0
b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5n
U3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKICAg
ICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBtX3Byb3BlcnRpZXMu
YmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZGlzcGxh
eSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApAQCAtNjgzLDggKzY4
MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0
CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFs
dWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2Up
Cit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5n
U3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJm
YWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sK
KyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9y
ZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2VI
YW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAg
bV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNhMjE1NGRiNDcwNjA0
MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThlYWNhYTY2M2M4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTEy
Nyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lk
IHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZFKElPU1VSRkFDRSkK
KyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJp
ZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKaW5kZXggZTYyNDdk
YWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMyNWYxODJlOTI5MjFj
MjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBwcml2YXRlOgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29u
dGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwotICAg
IGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4ZjRlLi42MjkyMzFi
NjM5ZWE1YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTM0LDE1ICszNCwx
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+
CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldL
UGxhdGZvcm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRl
ciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9y
bUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250
ZXh0JiBjb250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxh
dGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQp
KTsKQEAgLTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwKICAgICBtX3BsYXRm
b3JtTGF5ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxB
Y3Rpb25zXTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlwZSA9PSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCkucG9zaXRpb24gPSBG
bG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5ZXIucG9zaXRpb24u
eSwgY3VzdG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQg
PSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5j
aG9yUG9pbnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBwcm9wZXJ0aWVzKCku
Ym91bmRzID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBSZWY8V2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25l
KFBsYXRmb3JtQ0FMYXllcgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FM
YXllciBhbGxvY10gaW5pdF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29weUNvbnRlbnRzID0g
ZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVDb250ZW50c1By
b3ZpZGVkTGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pOwotICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNvcHlpbmcgV2ViR0wg
Y29udGVudHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAgY29weUNvbnRlbnRz
ID0gZmFsc2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRlbnRzKQogCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAg
ICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKLSAgICBlbHNl
Ci0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJl
Y3QpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJl
Y3QpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNw
bGF5KCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9y
bUxheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5j
cHAKaW5kZXggMzlkZTVlOTZkOGU2NjIzYzcwZTkwMDZhMDcyOTI3YjNmYzFjNjhlZC4uNGRmNWQ1
ZmQyYjhhNmUyMzFiYjFlZjM4YmEzN2U2NjQzNTJkMjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCkBAIC0y
ODIsNiArMjgyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworICAgIFBsYXRm
b3JtTGF5ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0
ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1M
YXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVyV0M6
OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVy
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYw
YmZlZWU1NjE3MjU2Mjk3OTFmMTE5ZjExNmM4MmFkMmRmOTU0Y2YuLmYzNjFjNjdkYWRhZDYyMmFh
MmJlNDRjZDM0YzUyYjI1ZTQ3NWUyYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0xOCAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3Vs
ZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVycmlkZSBvZiB0aGUgbmV3IG1lbWJlciBm
dW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCiAyMDIxLTExLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVBsYXllckFWRm91
bmRhdGlvbiBzaG91bGQgc3VwcG9ydCBydmZjCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3
ZTI0ZDVhYmE3ODNmNi4uOTUxNDkwMTg1ZDdmNGMyYWY5ZGFlYmY3NGIwYTJkOGIxM2NiYzlmNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RH
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtMzUsMTMgKzM1LDE0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewotY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworY2xhc3MgVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykK
ICAgICB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgICAgICByZXR1cm4g
Y29udGV4dDsKICAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KIHByaXZhdGU6CiAgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDog
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444804</attachid>
            <date>2021-11-19 05:10:22 -0800</date>
            <delta_ts>2021-11-19 05:45:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211119151020.patch</filename>
            <type>text/plain</type>
            <size>107732</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjY5NTdhMDQxNGZlYTYxNzgyMWYwYjc0ZjU5NTI4MmVj
NTA5N2I3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC02OTgsMTEgKzY5MywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmcg
ZQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJwcmVwYXJlZm9yZGlzcGxheSIpOworCiAgICAgaWYgKG1fbGF5
ZXJDb21wb3NpdGVkKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHByZXBhcmVUZXh0dXJlSW1wbCgpOworICAgIFdU
RkxvZ0Fsd2F5cygicHJlcGFyZWZvcmRpc3BsYXkgZG9pbmciKTsKIAogICAgIC8vIFRoZSBJT1N1
cmZhY2Ugd2lsbCBiZSB1c2VkIGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lzdGVtLCBzbyBmbHVz
aCBHTCBjb21tYW5kcy4KICAgICBnbDo6Rmx1c2goKTsKQEAgLTczNCw3ICs3MzIsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogfQog
Ci0KICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRl
eHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CkBAIC03OTYsNiArNzkz
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVh
ZFJlc291cmNlcygpCiAgICAgY3VycmVudENvbnRleHQgPSBudWxscHRyOwogfQogCitJT1N1cmZh
Y2UqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKCkKK3sKKyAgICByZXR1
cm4gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQoreworICAg
IG1fc3dhcENoYWluLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKK30KKwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRh
MGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNP
UkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVl
Oihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1
NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQot
I2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0j
aW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIK
LQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlv
IGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAg
ICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50
c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hl
biB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0
aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92
aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRy
YW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFu
ZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJl
IHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNm
b3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNm
b3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBvaW50OihD
R1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAx
LjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2Vs
Zi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMg
ZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxh
dGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXll
ciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyNTYyNWVkYmZlMjU0ZTM3NWZlZjE2OTgxNjlm
NTJlZmQ0YWE3NzIyLi5kNzYzMGJmNmQ1MjNhZjRmMmE1NTQ2NTM3OGM5NDFjZGE2NGJmNzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQpAQCAtMjksNTMgKzI5LDU5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIgLy8gTk9MSU5UCiAjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8V2ViR0xMYXllcj4gY3JlYXRlV2ViR0xMYXllcihj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCi17Ci0gICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGxheWVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIGxheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNl
UGl4ZWxSYXRpbzphdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0
dHJpYnV0ZXMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW2xheWVyIHNldE5hbWU6QCJX
ZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IHJldHVybiBsYXllcjsKLX0KLQogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0
IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nl
c3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdM
TGF5ZXI7IH0KICAgICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KLSAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwog
cHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cmlidXRlcykKLSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xM
YXllcihhdHRyaWJ1dGVzKSkKICAgICB7CiAgICAgfQotICAgIFJldGFpblB0cjxXZWJHTExheWVy
PiBtX3dlYkdMTGF5ZXI7Ci0KICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w7CiB9OwogCi12b2lkIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFy
ZUZvckRpc3BsYXkoKQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3Jl
YXRlKFJlZjxXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlKFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxl
Z2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGF1dG8gYXR0cmlidXRlcyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICAg
ICAgbGF5ZXIuc2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKKyAgICAgICAgbGF5ZXIuc2V0
Q29udGVudHNTY2FsZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pOworICAgIH0KKyAgICB2
b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKSkKKyAg
ICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKCpkaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9Citwcml2YXRl
OgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoUmVmPFdlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IG1fY29udGV4dDsKK307CisKK1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2Fw
Q2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQot
ICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
d2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAg
W21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICByZXR1cm4gRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0
aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9DVlV0aWxpdGllcy5tbQppbmRleCA0MDcyNzA0M2ZkMTJkNjJhNGNiZDdkYmI1OWU0MTE2MGEy
OGRkZjIyLi4zMjZmMDQzMmI0ODYyMjE5NjJjNzVlZmM2ZGUwMWVkOGFkYzllNjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQpA
QCAtMjYsNyArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGll
cy5oIgogCisjaW1wb3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCAiQ29yZVZpZGVv
U29mdExpbmsuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IDU1NDgwYjUyYjkxZTAyODYy
ZmYwYmZjMTMwNmRhODBkNjAzYzU0MmMuLjNlMWE0ZmQyNjc5MTk1MTA5OWE4YjM4MDIyZjU4NWZk
YTM5ZThlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
V2ViTGF5ZXIubW0KQEAgLTgxLDggKzgxLDExIEBACiAtICh2b2lkKXNldE5lZWRzRGlzcGxheQog
ewogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FM
YXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5
ZXItPm93bmVyKCkgJiYgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKQotICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKKyAgICBpZiAoIWxheWVyIHx8
ICFsYXllci0+b3duZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXItPm93bmVy
KCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpICYmICFsYXllci0+b3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAogLSAodm9pZClzZXROZWVkc0Rp
c3BsYXlJblJlY3Q6KENHUmVjdClkaXJ0eVJlY3QKQEAgLTk0LDcgKzk3LDcgQEAKICAgICB9CiAK
ICAgICBpZiAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllck93bmVyID0gcGxh
dGZvcm1MYXllci0+b3duZXIoKSkgewotICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1D
QUxheWVyRHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3Jt
Q0FMYXllckRyYXdzQ29udGVudCgpIHx8IGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKICAgICAgICAgICAgIFtzdXBlciBz
ZXROZWVkc0Rpc3BsYXlJblJlY3Q6ZGlydHlSZWN0XTsKIAogICAgICAgICAgICAgaWYgKGxheWVy
T3duZXItPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0Zm9ybUxheWVyLmdl
dCgpKSkgewpAQCAtMTAzLDYgKzEwNiw3IEBACiAgICAgICAgICAgICAgICAgW3N1cGVyIHNldE5l
ZWRzRGlzcGxheUluUmVjdDppbmRpY2F0b3JSZWN0XTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQorICAgICAgICAKICAgICB9CiB9CiAKQEAgLTExMywxMCArMTE3LDE0IEBACiAgICAgICAgIFdl
YlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
W3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBp
ZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxheWVyLT5vd25lcigpIDogbnVs
bHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIFtzdXBlciBkaXNwbGF5XTsK
KyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERp
c3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4
dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCAz
MzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRkLi42OGRjNmJmNTk0ODI3Mzhm
MTgyZjBmMTM1Mjg2YTk2MzQ3ODY5NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xhc3MgTmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSwgcHVi
bGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgewogcHVibGljOgogICAg
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2aXJ0dWFsIH5OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSBv
dmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmKSBmaW5hbDsK
IAogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKLQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTUgKzY0LDMwIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAorY2xhc3MgUGlw
ZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+JiYgc291cmNl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlE
ZWxlZ2F0ZShXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIo
KTsgfQorcHJpdmF0ZToKKyAgICBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFJlZjxOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlU291cmNlPiYmIHNvdXJjZSkKKyAgICAgICAgOiBtX3NvdXJjZShXVEZN
b3ZlKHNvdXJjZSkpCisgICAgeworICAgIH0KKyAgICBSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZT4gbV9zb3VyY2U7Cit9OworCiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZp
bmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdl
QnVmZmVyUGlwZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKSA9IGRl
ZmF1bHQ7Ci0KLXByaXZhdGU6CisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlIG92ZXJyaWRlcy4KICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKLQorICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKK3ByaXZhdGU6CiAgICAgUmVmUHRyPE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2U+IG1fc291cmNlOwogfTsKIApAQCAtMTM1LDkgKzE1Miw5IEBAIHZv
aWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgbV9pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKIH0KIAot
UGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXll
cigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKIHsKLSAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIFBpcGVT
b3VyY2VEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIHZvaWQgTmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCkBAIC0xNTQsMTMgKzE3
MSwxNSBAQCBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGU6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc291cmNlOwogfQogCi1QbGF0Zm9y
bUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX3Nv
dXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAg
IHJldHVybiBtX3NvdXJjZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCit9CisKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAzODI3
M2IwNzJiNTZkM2ZkYTJiY2RlMzQ4YjNlMGY3NDJjMjAwNWU1Li40MjIwYWRiYTVlMjU3ZjczMzg1
MTU1ZTAzNzdiNGM2ODNlYmJhZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNjUsOCArNjUsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLU9CSkNf
Q0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTsKIH0KQEAgLTEwMywxMyArMTAxLDE0
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBj
cmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAgdmly
dHVhbCB+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5T2JqOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZp
ZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CiAgICAgc3Rh
dGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFy
Z2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwogICAgIHN0YXRpYyBHQ0dMaW50IEVHTERyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFy
Z2V0KTsKLSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworI2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIC8vIEZJWE1FOiBNaWdyYXRl
IHRvIGxheWVycyB0byBzdWJjbGFzcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3Q7CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgR0NHTGVudW0gZHJhd2luZ0J1
ZmZlclRleHR1cmVUYXJnZXQoKTsKQEAgLTE0NCw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dCBhbGlnbm1lbnQgPSA0KTsKICNlbmRpZgogCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgb3Zl
cnJpZGVzLgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwogCiAgICAg
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC00NjMsNiArNDYzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpOworICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZm
ZXJJblVzZSgpOworI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFk
UmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gcmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZTI4NTFjMmUzZDIyMTc3
MTY5NGJkZDZmMTJmMGU1Zjc4OTljNzU1Yi4uY2QzZDdlZDBkNDcxY2MzNTBlOWJjMDM5ODA2ZTA1
NWMyY2VhNTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTY2LDYgKzY2LDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFt
ZXNwYWNlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGZpbmFsIDog
cHVibGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHsKK3B1YmxpYzoKKyAgICAvLyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFs
OworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgICAgIDogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorICAgIGZyaWVuZCBjbGFzcyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDsKKyAgICAvLyBGSVhNRTogbW92ZSBtb3JlIHBsYXRmb3JtLXNw
ZWNpZmljIHByb3BlcnRpZXMgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIHRvIGhlcmUu
Cit9OworCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGlj
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVm
PFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsK
KyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJy
aWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9Citw
cml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUmVmPEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcj4gbV9jb250ZXh0OworfTsKKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKQogewogICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkID0gZmFsc2U7CkBAIC04NSw3ICsxMjYsNyBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0RwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENyZWF0ZSB0aGUg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGluIG9yZGVyIHRvIGVzdGFibGlz
dCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykpOworICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
YXR0cmlidXRlcykpOwogCiAjaWYgVVNFKExJQkVQT1hZKSAmJiBVU0UoT1BFTkdMX0VTKSAmJiBF
TkFCTEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYgR0xFUzMgd2FzIHJlcXVlc3RlZCBidXQgY2Fu
bm90IGJlIHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZGM5ZmVk
NzY0MTExMDA2MmQ2YmY0Nzk3NDI5NWQyYjk1OTA1ZWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVN
YXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Zyb21EaXNw
bGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4m
JiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAg
UGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURl
bGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogewogICAgIGlm
IChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEzMTdjZmZhYTE4
NjEyOTguLmFmYzk5YmE3YTdlODczN2UyMTRiZGYzOWNkZGJiY2ZkZWM4MzY1ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29s
b3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9y
bUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
YTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uNWRmOGI1NDQ1MTQ0MzRh
YWQ2NmJlOGZkYmI2NDAyMjhhZWE0NTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTQ5OSw2ICs0OTksMTIgQEAg
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3IKICNlbmRpZgogfQogCit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50
c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIgcGxhdGZvcm1MYXll
ciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDog
bnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBw
dXJwb3NlKTsKK30KKwogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5C
ZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAg
ICBpZiAoIWZpbHRlcnMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5
NWIwYzdjZmQ3NWI0Y2QuLmFhNjFhMmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRD
b3VudGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJ
bWFnZShJbWFnZSopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVj
MTg3N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciog
Y29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBj
YW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250
ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNh
c3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxh
dGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFz
KTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURl
bGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NM
YXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25m
aWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmgKaW5k
ZXggMWVlZTE4ZDYyZjA1MDlmMDA5ZjM0YzNlZGU2OGQzNWUwZDA4OTY1My4uMTAyZWUyZmFhNDc2
OTczZWQyOGU3NWQyZjI4ZWRlYTYyMzQ3ZDc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0wuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICAgfQotCisgICAgUmVmUHRyPFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSB7IHJldHVybiBtX3N3
YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsgfQogICAgIHZvaWQgbWFya0Rp
c3BsYXlCdWZmZXJJblVzZSgpIHsgcmV0dXJuIG1fc3dhcENoYWluLm1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IGRjMmZh
YmQ0ZWY1NWY3ODMxNzI3MGMzMjIxMDIzZTM4NjFlODA3MWQuLjE2YmRmZGZmOWQ1ZDM5ZmFlZDky
NmExNTM3ODQ0Y2Q1MmFjNTU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3Nl
cnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRp
c3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3Bs
YXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2Uq
IGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlz
cGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2Uo
KTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFk
MDEwOTlmLi5jNmE3ODRkNmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYgc3VyZmFjZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBt
X2J1ZmZlckhhbmRsZS5oYXNfdmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGlu
Z0ZsdXNoZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4
MzZhM2QxN2UwNWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1
YTQ4ZGUxYjkyNWQ1MGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAw
LDYgKzEwMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdT
dG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tC
dWZmZXIuZGlzY2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBA
IC0xMTIsMjYgKzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAg
IGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlM
aXN0OwotCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRs
ZTsKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2gg
KG1fdHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlm
IChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0g
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQm
PigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNr
ZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
LSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBl
bmNvZGVyIDw8IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYg
RU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0
aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIy
MCw2ICsyMDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZy
b250QnVmZmVyKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3Rk
OjpudWxsb3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwog
CiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgp
CiAgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6
Tm87CiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6
TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92
ZShjb250ZW50cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAg
IG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXpl
KCkpOwpAQCAtMjY3LDYgKzI1NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
aXNwbGF5KCkKICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5
ZXItPmNvbnRleHQoKSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4
dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVy
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7Cisg
ICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xh
eWVyKTsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWRE
aXNwbGF5KG1fbGF5ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBN
YWtlIHRoZSBwcmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0
IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAg
ICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMy
Nyw2ICszMjMsMjAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAg
ICAgICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5
TGlzdEltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2gg
KG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byog
YmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBC
YWNraW5nU3RvcmUoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19j
YXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tl
bmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBl
OjpCaXRtYXA6CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFu
ZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KaW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhl
ODkxYi4uY2ExMTM1NmUxNTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5n
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXll
cjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVy
Lmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3Jl
YXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1
c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExh
eWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3
MzZkZGE4NWVjYzljLi40MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1
cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5s
YXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1M
YXllcjoKQEAgLTMxMiw3ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVl
Tm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlm
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9p
c0RlYnVnTGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVO
b2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICBy
ZXR1cm4gbWFrZVdpdGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJ
RDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbQppbmRleCAzOWQwNzRmNDMxMTAyY2Y0N2RmODAxYWNkMjU3OTMyMDkw
MmVhMDRjLi43MjM5M2U0ZmY1OWU3NmViZDc5YjM2MTBiMzM0MzkxZDZjNjY5MTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0Ojpt
YWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVNpbXBsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJh
Y2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVk
QmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50
c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dL
Q29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1h
a2VOb2RlKGNvbnN0IFJlbW90ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5
ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllcjoKICAgICAgICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAg
ICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybwogICAgICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElE
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1ZGI1NjEzZjhkNmMwODhjYWM3MTZkMDg1N2E4NzYwOTlmMGJjMmNjLi45MjYyMGEzYjY5
NzkxOTIzYjBhOTA2ZjdjZGU1ZDc1ZTdiZWY5YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5MTEsNiArNDkxMSw3IEBACiAJCTdC
NDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAx
NDI0ZWY4YTBmM2JkOWY2NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li41MTUzYWFkMWFiNTE2N2Nh
Y2I2OTAwZjlkYTVjMDdkMzczNGEzNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMTIgKzMyLDEwIEBACiAj
aW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkdMTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDUsMTEgKzQzLDEwIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5IHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkdM
TGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBNYWNoU2VuZFJpZ2h0
JiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyOyB9CiAKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVy
LmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShB
VkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZp
bmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU5LDIxICs1Niw1MSBAQCBwdWJsaWM6CiAjZW5k
aWYKIHByaXZhdGU6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExh
eWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFj
ZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOwog
ICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgOiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5k
ZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2
aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworY2xhc3MgRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZl
ckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2E+IGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAg
Ly8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
JiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoZXNlIHRvIGNh
bGxlci4KKyAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmli
dXRlcygpOworICAgICAgICBsYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOworICAg
ICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyk7
CisgICAgfQorICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVy
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4
dC0+ZGlzcGxheUJ1ZmZlcigpKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMoZGlzcGxh
eUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51
bGxwdHIpOworICAgIH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVm
ZmVyRGlzcGxheURlbGVnYXRlKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E+
IGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgewor
ICAgIH0KKyAgICBSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hPiBtX2NvbnRl
eHQ7Cit9OworCitSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OmxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlOjpjcmVhdGUoKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKQEAgLTgx
LDcgKzEwOCw5IEBAIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSCiB7CiAgICAgaWYgKCFtX2Rpc3Bs
YXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgp
KTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KKyAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNw
bGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVs
QnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwpAQCAtMTAw
LDE1ICsxMjksNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJl
cGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQp
CiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlz
cGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29u
dGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1
ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQogCkBAIC0xMTYs
MTAgKzEzNyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVw
YXJlRm9yRGlzcGxheSgpCiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
LmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi5jMGU2
ZmY1YWVhNmMzMDViZjJiY2Y3NTM5NDBlOGViMmY1NGZiZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93
Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBAIC00MywxMCArNDMsMTEgQEAg
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDIGZpbmFsIDogcHVibGljIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmlu
YWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5h
bDsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgogICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIApAQCAtNTQsNiArNTUsMjQgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKK2NsYXNzIFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxl
Z2F0ZT4gY3JlYXRlKFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGUoV1RGTW92ZShjb250ZXh0KSkpOworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Nv
bnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGUoUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBj
b250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgIHsKKyAg
ICB9CisgICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gbV9jb250ZXh0Owor
fTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKQogICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0
Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQpAQCAtNzIsNiAr
OTEsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JE
aXNwbGF5KCkKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQzo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKIH0KIAogUmVmUHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVk
MGVhOGJkYjkxYWIxNDE4NzUwMDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2Fm
N2I4NmYyMDQ4ZGFmMTM3MzQ1MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVD
b250ZXh0JiBjbwogICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25l
cigpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250
ZXh0ID09IG1fY29udGV4dCk7CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmUgJiYgKCFvd25lcigpIHx8ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkpIHsKKyAgICBib29sIHVzZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJE
ZWxlZ2F0ZXNEaXNwbGF5KHRoaXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZSAmJiAhdXNlc0JhY2tpbmdTdG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0
b3JlID0gbnVsbHB0cjsKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdl
ZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAg
fQotCiAgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJh
Y2tpbmdTdG9yZUF0dGFjaGVkICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXko
KSkKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMs
MjYgQEAgQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAog
CiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVl
KQogeworICAgIGlmICghdmFsdWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
PSBudWxscHRyOworfQorCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQor
eworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0
b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFj
ZS5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7Cisg
ICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUo
KTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFu
ZGxlLmNvcHlTZW5kUmlnaHQoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1f
cHJvcGVydGllcy5jb250ZW50c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2
NTA0YmFlMGZhNjhjLi43MWQ0MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcs
NyArMTI3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisg
ICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRl
OworI2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFh
NmRiMDBlMjUwODI0ZjY4YzkxODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2
MzYxODUwYWJmMmE5YTc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRl
eHQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBi
b29sIG1fcHJvdmlkZXNDb250ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0K
aW5kZXggMjdiMGZjMDA1MTg1ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYz
OWVhNWMxNmQ2YjU0NzU4MGJmNmMyMjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVy
RXh0cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgog
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1Bs
YXRmb3JtQ0FMYXllciI7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIg
PSBAIldLUGxhdGZvcm1DQUxheWVyIjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1M
YXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRm
b3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7
CkBAIC04Miw4ICs4Myw2IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tKExheWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9y
bUxheWVyID0gY3VzdG9tTGF5ZXI7CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0
aW9uc107CiAKLSAgICBtX3Byb3ZpZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxv
YXRQb2ludDNEKGN1c3RvbUxheWVyLnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnks
IGN1c3RvbUxheWVyLnpQb3NpdGlvbik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0g
RmxvYXRQb2ludDNEKGN1c3RvbUxheWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hv
clBvaW50LnksIGN1c3RvbUxheWVyLmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJv
dW5kcyA9IGN1c3RvbUxheWVyLmJvdW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQ
bGF0Zm9ybUNBTGF5ZXIKICAgICAgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5
ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZh
bHNlOwotICAgIH0gZWxzZSBpZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyKSB7Ci0gICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxs
b2NdIGluaXRdKTsKLSAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNv
bnRlbnRzIGJyZWFrcyB0aGUgb3JpZ2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9
IGZhbHNlOwogICAgIH0KIApAQCAtMTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OnNldENvbnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAg
W21fcGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQot
ICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0
KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxh
eSgpCiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1M
YXllciBzZXROZWVkc0Rpc3BsYXldOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dE5lZWRzRGlzcGxheSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3Bw
CmluZGV4IDBmN2ZjMWI1OTBlZmEwM2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLmU2ZjE4Y2E4
YjFmMTcxOWUzNWIwNTU5NjUxODgwZGEzZWU1MDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkw
LDYgKzI5MCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5k
aWNhdG9ycygpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNGcm9tRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSkKK3sKKyAgICBQbGF0Zm9y
bUxheWVyIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUt
PnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1
c2VzQ29udGVudHNMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NjA2
ZWU0NDMxMjk2MmVhYmU3NDRhZTRiOWNmNzQ5ODc3N2I2MWI0Li4yOTYzNjI1ZjEzOTZlNmFhNmI2
ODBjZTE2ODU4ZWY2YzJkNzlkZjMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMTggIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQg
c3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbToKKyAgICAgICAgQWRkIGEgZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVu
Y3Rpb24gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMS0xOSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gW0dMSUJdIEFkZCBuZXcgdGVzdCBjYXNlIHRvIC9qc2MvY2xhc3MKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCA5MTdkMmU4MTYwYTUz
MmJmNjY3NGE0MjA1NTdlMjRkNWFiYTc4M2Y2Li45NTE0OTAxODVkN2Y0YzJhZjlkYWViZjc0YjBh
MmQ4YjEzY2JjOWY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCkBAIC0zNSwxMyArMzUsMTQgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7Ci1jbGFzcyBUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7
CitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CiAg
ICAgICAgIHJldHVybiBjb250ZXh0OwogICAgIH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogcHJpdmF0ZToKICAgICBUZXN0ZWRHcmFw
aGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cykKICAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0ZXMp
KQo=
</data>
<flag name="commit-queue"
          id="469918"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444807</attachid>
            <date>2021-11-19 05:31:54 -0800</date>
            <delta_ts>2021-11-22 06:09:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211119153151.patch</filename>
            <type>text/plain</type>
            <size>107664</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjY5NTdhMDQxNGZlYTYxNzgyMWYwYjc0ZjU5NTI4MmVj
NTA5N2I3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC02OTgsMTEgKzY5MywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3Rpbmcg
ZQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJwcmVwYXJlZm9yZGlzcGxheSIpOworCiAgICAgaWYgKG1fbGF5
ZXJDb21wb3NpdGVkKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHByZXBhcmVUZXh0dXJlSW1wbCgpOworICAgIFdU
RkxvZ0Fsd2F5cygicHJlcGFyZWZvcmRpc3BsYXkgZG9pbmciKTsKIAogICAgIC8vIFRoZSBJT1N1
cmZhY2Ugd2lsbCBiZSB1c2VkIGZyb20gb3RoZXIgZ3JhcGhpY3Mgc3Vic3lzdGVtLCBzbyBmbHVz
aCBHTCBjb21tYW5kcy4KICAgICBnbDo6Rmx1c2goKTsKQEAgLTczNCw3ICs3MzIsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogfQog
Ci0KICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRl
eHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CkBAIC03OTYsNiArNzkz
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVh
ZFJlc291cmNlcygpCiAgICAgY3VycmVudENvbnRleHQgPSBudWxscHRyOwogfQogCitJT1N1cmZh
Y2UqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKCkKK3sKKyAgICByZXR1
cm4gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQoreworICAg
IG1fc3dhcENoYWluLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKK30KKwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRh
MGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNP
UkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVl
Oihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1
NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQot
I2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0j
aW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIK
LQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlv
IGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAg
ICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50
c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hl
biB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0
aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92
aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRy
YW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFu
ZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJl
IHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNm
b3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNm
b3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBvaW50OihD
R1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAx
LjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2Vs
Zi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMg
ZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxh
dGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXll
ciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCAyNTYyNWVkYmZlMjU0ZTM3NWZlZjE2OTgxNjlm
NTJlZmQ0YWE3NzIyLi5kNzYzMGJmNmQ1MjNhZjRmMmE1NTQ2NTM3OGM5NDFjZGE2NGJmNzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQpAQCAtMjksNTMgKzI5LDU5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIgLy8gTk9MSU5UCiAjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8V2ViR0xMYXllcj4gY3JlYXRlV2ViR0xMYXllcihj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCi17Ci0gICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGxheWVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIGxheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNl
UGl4ZWxSYXRpbzphdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0
dHJpYnV0ZXMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW2xheWVyIHNldE5hbWU6QCJX
ZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IHJldHVybiBsYXllcjsKLX0KLQogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0
IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nl
c3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdM
TGF5ZXI7IH0KICAgICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KLSAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwog
cHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woYXR0cmlidXRlcykKLSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xM
YXllcihhdHRyaWJ1dGVzKSkKICAgICB7CiAgICAgfQotICAgIFJldGFpblB0cjxXZWJHTExheWVy
PiBtX3dlYkdMTGF5ZXI7Ci0KICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w7CiB9OwogCi12b2lkIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFy
ZUZvckRpc3BsYXkoKQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3Jl
YXRlKFJlZjxXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlKFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxl
Z2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGF1dG8gYXR0cmlidXRlcyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICAg
ICAgbGF5ZXIuc2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKKyAgICAgICAgbGF5ZXIuc2V0
Q29udGVudHNTY2FsZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pOworICAgIH0KKyAgICB2
b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKSkKKyAg
ICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKCpkaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9Citwcml2YXRl
OgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoUmVmPFdlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IG1fY29udGV4dDsKK307CisKK1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2Fw
Q2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQot
ICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
d2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAg
W21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICByZXR1cm4gRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0
aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9DVlV0aWxpdGllcy5tbQppbmRleCA0MDcyNzA0M2ZkMTJkNjJhNGNiZDdkYmI1OWU0MTE2MGEy
OGRkZjIyLi4zMjZmMDQzMmI0ODYyMjE5NjJjNzVlZmM2ZGUwMWVkOGFkYzllNjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQpA
QCAtMjYsNyArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGll
cy5oIgogCisjaW1wb3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCAiQ29yZVZpZGVv
U29mdExpbmsuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IDU1NDgwYjUyYjkxZTAyODYy
ZmYwYmZjMTMwNmRhODBkNjAzYzU0MmMuLjNlMWE0ZmQyNjc5MTk1MTA5OWE4YjM4MDIyZjU4NWZk
YTM5ZThlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
V2ViTGF5ZXIubW0KQEAgLTgxLDggKzgxLDExIEBACiAtICh2b2lkKXNldE5lZWRzRGlzcGxheQog
ewogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FM
YXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5
ZXItPm93bmVyKCkgJiYgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKQotICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKKyAgICBpZiAoIWxheWVyIHx8
ICFsYXllci0+b3duZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXItPm93bmVy
KCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpICYmICFsYXllci0+b3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAogLSAodm9pZClzZXROZWVkc0Rp
c3BsYXlJblJlY3Q6KENHUmVjdClkaXJ0eVJlY3QKQEAgLTk0LDcgKzk3LDcgQEAKICAgICB9CiAK
ICAgICBpZiAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllck93bmVyID0gcGxh
dGZvcm1MYXllci0+b3duZXIoKSkgewotICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1D
QUxheWVyRHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3Jt
Q0FMYXllckRyYXdzQ29udGVudCgpIHx8IGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKICAgICAgICAgICAgIFtzdXBlciBz
ZXROZWVkc0Rpc3BsYXlJblJlY3Q6ZGlydHlSZWN0XTsKIAogICAgICAgICAgICAgaWYgKGxheWVy
T3duZXItPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0Zm9ybUxheWVyLmdl
dCgpKSkgewpAQCAtMTAzLDYgKzEwNiw3IEBACiAgICAgICAgICAgICAgICAgW3N1cGVyIHNldE5l
ZWRzRGlzcGxheUluUmVjdDppbmRpY2F0b3JSZWN0XTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQorICAgICAgICAKICAgICB9CiB9CiAKQEAgLTExMywxMCArMTE3LDE0IEBACiAgICAgICAgIFdl
YlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
W3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBp
ZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxheWVyLT5vd25lcigpIDogbnVs
bHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIFtzdXBlciBkaXNwbGF5XTsK
KyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERp
c3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4
dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCAz
MzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRkLi4yMmJiMzZjZmJhN2VjZTFk
YTI0NzUyMWMzZTM2MDRjODhhNGRhYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xhc3MgTmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSwgcHVi
bGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgewogcHVibGljOgogICAg
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2aXJ0dWFsIH5OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSBv
dmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmKSBmaW5hbDsK
IAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKLQorICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5n
ZXQoKTsgfQogcHJpdmF0ZToKKyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6
Q2xpZW50IG92ZXJyaWRlcy4KICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlk
ZTsKIAogICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTUg
KzY0LDMwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVy
OwogfTsKIAorY2xhc3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQ
aXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U+JiYgc291cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3Vy
Y2UtPnBsYXRmb3JtTGF5ZXIoKTsgfQorcHJpdmF0ZToKKyAgICBQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlKFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiYmIHNvdXJjZSkKKyAgICAg
ICAgOiBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCisgICAgeworICAgIH0KKyAgICBSZWY8Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7Cit9OworCiBjbGFzcyBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CiBwdWJsaWM6
CiAgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6CisgICAgLy8gSW1hZ2VCdWZmZXJQ
aXBlIG92ZXJyaWRlcy4KICAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJj
ZSgpIGNvbnN0IGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKLQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKK3ByaXZhdGU6CiAgICAg
UmVmUHRyPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+IG1fc291cmNlOwogfTsKIApAQCAt
MTM1LDExICsxNTIsNiBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRs
ZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXll
ci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVm
ZmVyc0lmTmVlZGVkKCkKIHsKIH0KQEAgLTE1NCwxMyArMTY2LDE1IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9zb3VyY2U7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKG1fc291cmNlKQotICAgICAgICByZXR1cm4g
bV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIFBpcGVTb3VyY2VEaXNw
bGF5RGVsZWdhdGU6OmNyZWF0ZSgqbV9zb3VyY2UpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
Cit9CisKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAzODI3M2IwNzJiNTZkM2ZkYTJiY2Rl
MzQ4YjNlMGY3NDJjMjAwNWU1Li40MjIwYWRiYTVlMjU3ZjczMzg1MTU1ZTAzNzdiNGM2ODNlYmJh
ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNjUsOCArNjUsNiBA
QAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9C
SkNfQ0xBU1MgV2ViR0xMYXllcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMQ1ZBTkdMRTsKIH0KQEAgLTEwMywxMyArMTAxLDE0IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0woKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5T2Jq
OyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNvbmZpZygp
IGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CiAgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdp
bmdUYXJnZXQpOwogICAgIHN0YXRpYyBHQ0dMaW50IEVHTERyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KTsKLSNlbHNlCi0gICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworI2VuZGlmCisjaWYg
IVBMQVRGT1JNKENPQ09BKQorICAgIC8vIEZJWE1FOiBNaWdyYXRlIHRvIGxheWVycyB0byBzdWJj
bGFzcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYK
ICNpZiBVU0UoQU5HTEUpCiAgICAgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKQEAgLTE0NCw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3Vy
Y2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsK
ICNlbmRpZgogCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIGJvb2wg
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC00NjMsNiArNDYzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
KSBmaW5hbDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIElPU3VyZmFjZSogZGlz
cGxheUJ1ZmZlcigpOworICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworI2VuZGlm
CiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUmVuZGVyaW5nUmVzdWx0c0Zv
clBhaW50aW5nKCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZENvbXBvc2l0
ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZTI4NTFjMmUzZDIyMTc3MTY5NGJkZDZmMTJmMGU1Zjc4
OTljNzU1Yi4uMGE2ZjVjYzMxMjQyNTBiZWJmYjhlZDA2ZGFlNTMxMTAwNzZhNDcyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTY2LDYg
KzY2LDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3Mg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMIHsKK3B1YmxpYzoKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBv
dmVycmlkZXMuCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOworcHJpdmF0ZToKKyAgICBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMpCisgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRl
cykKKyAgICB7CisgICAgfQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDsKKyAgICAvLyBGSVhNRTogbW92ZSBtb3JlIHBsYXRmb3JtLXNwZWNpZmljIHByb3BlcnRpZXMg
ZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIHRvIGhlcmUuCit9OworCitjbGFzcyBQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcj4mJiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKGNvbnRleHQpKSk7CisgICAgfQorICAg
IC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+
IG1fY29udGV4dDsKK307CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6bGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6
OmNyZWF0ZSgqdGhpcyk7Cit9CisKK30KKwogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KikKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZCA9IGZhbHNlOwpAQCAtODUsNyArMTI2LDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBDcmVhdGUgdGhlIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMIG9iamVjdCBmaXJzdCBpbiBvcmRlciB0byBlc3RhYmxpc3QgYSBjdXJyZW50
IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCi0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKGF0dHJpYnV0ZXMp
KTsKIAogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykgJiYgRU5BQkxFKFdFQkdM
MikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92
aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNk
N2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFjY2NlMTNjNjBjNGIuLmRjOWZlZDc2NDExMTAwNjJk
NmJmNDc5NzQyOTVkMmI5NTkwNWViMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZv
cgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURl
bGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5
ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxh
dGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihw
bGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKIHsKICAgICBpZiAoaXNTaG93aW5n
RGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2ZmYWExODYxMjk4Li5hZmM5
OWJhN2E3ZTg3MzdlMjE0YmRmMzljZGRiYmNmZGVjODM2NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNp
bmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpA
QCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBi
b29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNi
NzAxYjc4NzBkMDhiYmNjZTA0MjM3ZDhhNGEzOWYuLjVkZjhiNTQ0NTE0NDM0YWFkNjZiZThmZGJi
NjQwMjI4YWVhNDU2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC00OTksNiArNDk5LDEyIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBv
c2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVk
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0
ZXJzLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAppbmRleCA2ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzVi
NGNkLi5hYTYxYTJhOTg1MmUxMGVjYWViMGQwNTQ5ZjljY2Q3NDA5OWRhZDI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05
Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29s
KSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2Uq
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBhNzg0ZGJiYjgz
N2Y3YjdlNDE3YjI2OWI2YjcwYmM5MjcyMzRkNTFkLi44M2U5YmJlNjY2MjI1YzE4NzdkNmRkYTM5
MGVkMTQ2MzUyNTQ0NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcApAQCAtMTA4OSw3ICsxMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5n
QW5jZXMKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9z
aXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAg
ICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52
YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250
ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIo
KSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CisgICAgICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShjb250
ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRl
bnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOwogCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9
IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDFlZWUxOGQ2
MmYwNTA5ZjAwOWYzNGMzZWRlNjhkMzVlMGQwODk2NTMuLjEwMmVlMmZhYTQ3Njk3M2VkMjhlNzVk
MmYyOGVkZWE2MjM0N2Q3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM4
LDcgKzM4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IHJldHVybiBjb250ZXh0OwogICAgIH0KLQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV2Vi
Q29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZGlz
cGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7IH0KICAgICB2b2lkIG1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKSB7IHJldHVybiBtX3N3YXBDaGFpbi5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCBkYzJmYWJkNGVmNTVmNzgz
MTcyNzBjMzIyMTAyM2UzODYxZTgwNzFkLi4xNmJkZmRmZjlkNWQzOWZhZWQ5MjZhMTUzNzg0NGNk
NTJhYzU1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4
ICs3OCw4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50
KG1fc3RyZWFtVGhyZWFkKTsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0g
ICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7
CiAgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVm
ZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIp
IHsKICAgICAgICAgbV9jb250ZXh0LT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFW
RShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJUF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKaW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uYzZh
Nzg0ZDZkMTkzZDA4YWU2YzA5YjZmYTdlODkzNjk1OTkyMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNE
aXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
KCk7CiAKKyAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VI
YW5kbGUpOwogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
ISFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyOworICAgICAgICByZXR1cm4gbV9idWZmZXJIYW5k
bGUuaGFzX3ZhbHVlKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVk
NGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjkzN2E5NWM1NmNlMTc1MzRiMTFmY2ZiNWE0OGRlMWI5MjVk
NTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMCw2ICsxMDAsNyBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0
eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpjbGVhckJhY2tpbmdTdG9yZSgpCiB7CisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2Nh
cmQoKTsKICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOwpAQCAtMTEyLDI2ICsx
MTMsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8
IG1faXNPcGFxdWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKLQotICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYg
KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsK
LSAgICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFw
QmFja2luZ1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQp
LmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAg
ICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBo
YW5kbGU7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlckhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7CkBAIC0yMjAsNiArMjAyLDcg
QEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigp
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmICht
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0yNTcsNiArMjQwLDEzIEBAIGJvb2wgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVy
biBtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmln
aHQmJiBjb250ZW50cykKK3sKKyAgICBtX2J1ZmZlckhhbmRsZSA9IFdURk1vdmUoY29udGVudHMp
OworICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5n
UmVjdHMuY2xlYXIoKTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSgpCiB7CiAgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKQEAgLTI2
Nyw2ICsyNTcsMTIgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAg
ICAgaWYgKFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQgPSBtX2xheWVyLT5jb250ZXh0
KCkpCiAgICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbnRleHQtPmJhY2tpbmdT
dG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CiAKKyAgICBpZiAobV9sYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgeworICAgICAgICBtX2xh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CisgICAg
ICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xh
eWVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gTWFrZSB0aGUgcHJl
dmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGly
dHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVy
Vm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogCkBAIC0zMjcsNiArMzIzLDIw
IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX2Zy
b250QnVmZmVyRmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci0+Y3JlYXRlRmx1c2hlcigpKTsKICNlbmRpZgogCisgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAg
ICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3Jl
KCkpCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVy
YXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJT
aGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qml0bWFwOgor
ICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVu
c3VyZUJhY2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRp
Y19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2Vu
ZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEz
NTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmExNDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSArMTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAg
ICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29u
dGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6
Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5o
b3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAg
ICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5n
Q29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYzYmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5
Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFjZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsyOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVt
b3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlmCisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxh
eWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0z
MTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVy
VHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRl
V2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VX
aXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGll
cy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJ
T1MubW0KaW5kZXggMzlkMDc0ZjQzMTEwMmNmNDdkZjgwMWFjZDI1NzkzMjA5MDJlYTA0Yy4uNzIz
OTNlNGZmNTllNzZlYmQ3OWIzNjEwYjMzNDM5MWQ2YzY2OTE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29u
c3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXll
cjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXll
cjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5n
VmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAg
ICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkgewogICAgICAgICAgICAgYXV0byB2aWV3
ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFpl
cm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVu
dGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWRiNTYx
M2Y4ZDZjMDg4Y2FjNzE2ZDA4NTdhODc2MDk5ZjBiYzJjYy4uOTI2MjBhM2I2OTc5MTkyM2IwYTkw
NmY3Y2RlNWQ3NWU3YmVmOWFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTExLDYgKzQ5MTEsNyBAQAogCQk3QjQ4M0YxQzI1Q0RE
QTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNl
aXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1
Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIz
MjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNi
ZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uNTE1M2FhZDFhYjUxNjdjYWNiNjkwMGY5ZGE1
YzA3ZDM3MzRhMzRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDEyICszMiwxMCBAQAogI2ltcG9ydCAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVy
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ1LDExICs0
MywxMCBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CiBwdWJs
aWM6Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0g
ICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5QnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgTWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsgfQogCiAgICAgLy8gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsgfQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICAgICB2b2lkIHByZXBhcmVG
b3JEaXNwbGF5KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVy
biBudWxscHRyOyB9CkBAIC01OSwyMSArNTYsNTEgQEAgcHVibGljOgogI2VuZGlmCiBwcml2YXRl
OgogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJH
TExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlzcGxh
eUJ1ZmZlcjsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKICAgICBmcmllbmQg
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2Vu
ZCkKIHsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xM
YXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0
aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtt
X3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCit9CisKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdh
dGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGU+IGNyZWF0ZShSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hPiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKGNvbnRleHQpKSk7CisgICAgfQorICAgIC8vIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgdm9p
ZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZp
bmFsCisgICAgeworICAgICAgICAvLyBGSVhNRTogbW92ZSB0aGVzZSB0byBjYWxsZXIuCisgICAg
ICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fY29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKTsKKyAg
ICAgICAgbGF5ZXIuc2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pOworICAgIH0KKyAg
ICB2b2lkIGRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGlmIChhdXRvIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlC
dWZmZXIoKSkKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKGRpc3BsYXlCdWZmZXIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAg
ICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b246OkJvdHRvbVVwOworICAgIH0KK3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlE
ZWxlZ2F0ZShSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hPiBjb250ZXh0KQor
ICAgICAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAg
UmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYT4gbV9jb250ZXh0OworfTsKKwor
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkKK3sKKyAgICByZXR1cm4gRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KCp0aGlzKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC04MSw3ICsxMDgsOSBA
QCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUgogewogICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6
Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSk7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCisgICAgYXV0byBzdXJmYWNlID0g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5j
b3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJm
YWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUlt
YWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZP
YmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKQEAgLTEwMCwxNSArMTI5LDcg
QEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNw
bGF5KCkKICAgICB9CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICBy
ZXR1cm47Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIp
IHsKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlz
cGxheUJ1ZmZlci0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQpOwogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIApAQCAtMTE2LDEwICsxMzcsNyBA
QCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAg
ICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXgg
ZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIzZGZkN2E2MC4uYzBlNmZmNWFlYTZjMzA1
YmYyYmNmNzUzOTQwZThlYjJmNTRmYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIGNsYXNzIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSBvdmVycmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRm
b3JtTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
CiAKQEAgLTU0LDYgKzU1LDI0IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSB7CitwdWJsaWM6CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0
ZShSZWY8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5wbGF0
Zm9ybUxheWVyKCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlKFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAg
ICAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICB7CisgICAgfQorICAgIFJl
ZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IG1fY29udGV4dDsKK307CisKIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKICAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdD
R0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKQEAgLTcyLDYgKzkxLDExIEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAg
ICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OmxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBQbGF0Zm9ybUxheWVyRGlz
cGxheURlbGVnYXRlOjpjcmVhdGUoKnRoaXMpOworfQorCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFi
MTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRh
ZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28K
ICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2Nv
bnRleHQpOwogICAgIAotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3du
ZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAg
Ym9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlz
cGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNC
YWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxw
dHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlm
IChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVB
dHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAg
IG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlw
ZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBp
ZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsK
K30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NF
UlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAg
IG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2Vu
ZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMo
Y29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVCht
X2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2Vu
ZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMu
Y29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4
Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENG
VHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMo
Q0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgog
ICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgy
NGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJh
OWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3Zp
ZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBm
YzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1
NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
CiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5T
U3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5
ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1z
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRm
b3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBs
YXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCAr
ODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1
c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0g
ICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChj
dXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXll
ci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQz
RChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBj
dXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0
b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxh
eWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBp
bml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9
IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikg
ewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7
Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVh
a3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAg
ICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3Jt
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAg
IGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVl
ZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdm
YzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTllMzVi
MDU1OTY1MTg4MGRhM2VlNTA4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIg
QEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsK
IH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlE
ZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0
Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxh
eWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3Jt
TGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRz
TGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODYwNmVlNDQzMTI5NjJl
YWJlNzQ0YWU0YjljZjc0OTg3NzdiNjFiNC4uMjk2MzYyNWYxMzk2ZTZhYTZiNjgwY2UxNjg1OGVm
NmMyZDc5ZGYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkg
c2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTEtMTkgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFtHTElCXSBB
ZGQgbmV3IHRlc3QgY2FzZSB0byAvanNjL2NsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIw
NTU3ZTI0ZDVhYmE3ODNmNi4uOTUxNDkwMTg1ZDdmNGMyYWY5ZGFlYmY3NGIwYTJkOGIxM2NiYzlm
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rl
c3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQpAQCAtMzUsMTMgKzM1LDE0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewotY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworY2xhc3MgVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cykKICAgICB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgICAgICByZXR1
cm4gY29udGV4dDsKICAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFs
IHsgcmV0dXJuIG51bGxwdHI7IH0KIHByaXZhdGU6CiAgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAg
IDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444961</attachid>
            <date>2021-11-22 06:09:38 -0800</date>
            <delta_ts>2021-11-22 10:36:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211122160936.patch</filename>
            <type>text/plain</type>
            <size>108921</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjUxYmUzYmU3ODA3NjI4M2Q0Y2RlZGY1OTQ5Yzc3OGIx
MWNhYTc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC03MzQsNyArNzI5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KIH0KIAotCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpAQCAtNzk2LDYgKzc5MCwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQogICAgIGN1
cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorSU9TdXJmYWNlKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3Bs
YXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAgICBtX3N3YXBDaGFpbi5tYXJrRGlz
cGxheUJ1ZmZlckluVXNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2Mzll
YTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXll
ciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzoo
ZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1
ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQz
ZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1
ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVs
UmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNl
IGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtl
IGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4g
WS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBz
aW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3Qg
YWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBl
bnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0
Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEs
IDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1
cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0g
KHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNv
bnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8g
bGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVy
KChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
bGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggMjU2MjVlZGJmZTI1NGUzNzVmZWYxNjk4MTY5ZjUyZWZkNGFhNzcyMi4uMTc0NGQ2
OWNhOTJmOTIzZWE1OGMyYzljYWI5MDEyMDg5MWI2NTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI5LDUzICsy
OSw3NSBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBs
YXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19Citj
bGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQg
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9
CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmlu
YWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lk
IGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNw
bGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMo
bnVsbHB0cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpC
b3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlz
cGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uo
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09w
YXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVy
OworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hl
biBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KICAg
ICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykK
LSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihhdHRyaWJ1dGVzKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLQorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOwogfTsKIAogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJl
cGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5
QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVy
bjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNl
dENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5QnVm
ZmVyKCkpOwogfQogCiB9CkBAIC05MCw3ICsxMTIsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
RwogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmlu
ZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMyYjQ4
NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgIkNv
bG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNj
NTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEs
OCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJp
ZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXRO
ZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigp
KSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9y
bUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiAr
MTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Omlu
ZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0K
IH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAg
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25l
ciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAg
ICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7
CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEz
OGYwM2I5MzRkYzExZTI5ZGUzNGQuLjIyYmIzNmNmYmE3ZWNlMWRhMjQ3NTIxYzNlMzYwNGM4OGE0
ZGFjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYg
KzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFs
IDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Uo
KTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lk
IGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgor
ICAgIC8vIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVzLgog
ICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPENv
bnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CkBAIC02MiwxNSArNjQsMzAgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCitjbGFzcyBQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVs
ZWdhdGU+IGNyZWF0ZShSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4mJiBzb3VyY2Up
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlKFdURk1vdmUoc291cmNlKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZS0+cGxhdGZvcm1MYXllcigp
OyB9Citwcml2YXRlOgorICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmPE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2U+JiYgc291cmNlKQorICAgICAgICA6IG1fc291cmNlKFdURk1v
dmUoc291cmNlKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKK307CisKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVm
YXVsdDsKLQotcHJpdmF0ZToKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgogICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0g
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwotCisgICAgUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOworcHJpdmF0ZToKICAgICBSZWZQdHI8Tmljb3NpYUltYWdl
QnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CiB9OwogCkBAIC0xMzUsMTEgKzE1Miw2IEBAIHZv
aWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgbV9pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKIH0KIAot
UGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXll
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOwotfQotCiB2b2lk
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogewog
fQpAQCAtMTU0LDEzICsxNjYsMTUgQEAgUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBtX3NvdXJj
ZTsKIH0KIAotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkK
IHsKICAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBtX3NvdXJjZS0+cGxhdGZvcm1M
YXllcigpOworICAgICAgICByZXR1cm4gUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KCptX3NvdXJjZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgTmljb3NpYQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oCmluZGV4IDM4MjczYjA3MmI1NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUu
LjQyMjBhZGJhNWUyNTdmNzMzODUxNTVlMDM3N2I0YzY4M2ViYmFkNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC02NSw4ICs2NSw2IEBACiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotT0JKQ19DTEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJHTExheWVy
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwog
fQpAQCAtMTAzLDEzICsxMDEsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9y
bURpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9j
b25maWdPYmo7IH0KICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgc3Rh
dGljIEdDR0xpbnQgRUdMRHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0
KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwotI2Vsc2UKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisg
ICAgLy8gRklYTUU6IE1pZ3JhdGUgdG8gbGF5ZXJzIHRvIHN1YmNsYXNzLgorICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAg
ICBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwpAQCAtMTQ0LDYgKzE0Myw3
IEBAIHB1YmxpYzoKICAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpOwogI2VuZGlmCiAKKyAgICAvLyBH
cmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkg
Y29uc3QgZmluYWw7CiAKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2Myw2ICs0NjMsMTAgQEAg
cHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxl
PiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAg
dm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApp
bmRleCBlMjg1MWMyZTNkMjIxNzcxNjk0YmRkNmYxMmYwZTVmNzg5OWM3NTViLi4wYTZmNWNjMzEy
NDI1MGJlYmZiOGVkMDZkYWU1MzExMDA3NmE0NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtNjYsNiArNjYsNDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworcHVi
bGljOgorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgZmluYWw7Citwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAg
ICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9Cisg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOworICAgIC8vIEZJWE1FOiBt
b3ZlIG1vcmUgcGxhdGZvcm0tc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmggdG8gaGVyZS4KK307CisKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+
IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQt
PnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGUoUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0
KQorICAgICAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9Cisg
ICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gbV9jb250ZXh0OworfTsKKwor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKK30K
KworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhv
c3RXaW5kb3cqKQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CkBAIC04
NSw3ICsxMjYsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIENyZWF0ZSB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0
IGZpcnN0IGluIG9yZGVyIHRvIGVzdGFibGlzdCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRo
cmVhZC4KLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woYXR0cmlidXRlcykpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoYXR0cmlidXRlcykpOwogCiAjaWYgVVNFKExJQkVQ
T1hZKSAmJiBVU0UoT1BFTkdMX0VTKSAmJiBFTkFCTEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYg
R0xFUzMgd2FzIHJlcXVlc3RlZCBidXQgY2Fubm90IGJlIHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2
MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZGM5ZmVkNzY0MTExMDA2MmQ2YmY0Nzk3NDI5NWQyYjk1OTA1
ZWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0z
NDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5
ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0g
ZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxs
cHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBv
c2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdC
b3JkZXIoYm9vbCBzaG93KQogewogICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNo
b3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGExMDM0ZGE0
YThiNGQyMzRhM2Y0MWQxYmEzMTdjZmZhYTE4NjEyOTguLjJmNDU5OGRjMGE5MmI0YzNjZjYzZmE3
NjlkZGQ3OWEwOGFiMTg2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKQEAgLTc4LDYgKzc5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllcios
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRnJv
bURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29u
dGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQog
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2NvbnRlbnRzTGF5ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBhNzQ5MDdjZTFjYjcwMWI3ODcwZDA4
YmJjY2UwNDIzN2Q4YTRhMzlmLi5hMjgwZjE3NTRmNjVkYmFlZDE1NTg4NDU3Mjg3N2ZkNTJlMjUz
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5pY29zaWFCYWNraW5nU3Rv
cmVUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5pY29zaWFDb21wb3NpdGlvbkxheWVy
VGV4dHVyZU1hcHBlckltcGwuaCIKQEAgLTQ5OSw2ICs1MDAsMTIgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3IKICNlbmRpZgogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBw
dXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxl
Z2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwog
Ym9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMu
c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2Qu
LmFhNjFhMmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92
ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZv
cm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3Zjdi
N2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3N2Q2ZGRhMzkwZWQx
NDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
cwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGlu
Z1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAg
ICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQg
PSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKGNvbnRleHQt
PmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNM
YXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
R1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMWVlZTE4ZDYyZjA1
MDlmMDA5ZjM0YzNlZGU2OGQzNWUwZDA4OTY1My4uMTAyZWUyZmFhNDc2OTczZWQyOGU3NWQyZjI4
ZWRlYTYyMzQ3ZDc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0
dXJuIGNvbnRleHQ7CiAgICAgfQotCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXZWJDb3Jl
OjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSB7IHJldHVybiBtX3N3YXBDaGFpbi5kaXNwbGF5
QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsgfQogICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSgpIHsgcmV0dXJuIG1fc3dhcENoYWluLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IGRjMmZhYmQ0ZWY1NWY3ODMxNzI3
MGMzMjIxMDIzZTM4NjFlODA3MWQuLjE2YmRmZGZmOWQ1ZDM5ZmFlZDkyNmExNTM3ODQ0Y2Q1MmFj
NTU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTc4LDggKzc4
LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBJ
T1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAg
ICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIg
PSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewog
ICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKICNpZiBIQVZFKElP
U1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aAppbmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRk
NmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsK
IAorICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRs
ZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5o
YXNfdmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThm
MjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUs
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNs
ZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgp
OwogICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9p
c09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3Rk
OjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAg
ICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5k
ID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNr
aW5nU3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFR5cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAg
ICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRs
ZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BM
QVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAg
ICAgICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAg
IHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1f
aW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYm
IGNvbnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7Cisg
ICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0
cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkK
IHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYg
KzI1NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBp
ZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkK
ICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3Jl
V2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAg
bV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91
cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0
aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xh
dGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAg
Ym9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRC
dWZmZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVy
LT5jcmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAg
ICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkK
KyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nh
c3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
aW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUx
NTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAg
ICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0
SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAg
ICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3Rp
bmdDb250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAg
ICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250
ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40
MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
YXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVM
CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJU
cmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3
ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVl
SG9zdCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRo
UGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhM
YXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhv
c3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bQppbmRleCAzOWQwNzRmNDMxMTAyY2Y0N2RmODAxYWNkMjU3OTMyMDkwMmVhMDRjLi43MjM5M2U0
ZmY1OWU3NmViZDc5YjM2MTBiMzM0MzkxZDZjNjY5MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBS
ZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgor
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6
CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3
IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRp
bGVkQmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJl
bW90ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAg
aWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBh
ZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwog
ICAgICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZGI1NjEzZjhk
NmMwODhjYWM3MTZkMDg1N2E4NzYwOTlmMGJjMmNjLi45MjYyMGEzYjY5NzkxOTIzYjBhOTA2Zjdj
ZGU1ZDc1ZTdiZWY5YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ5MTEsNiArNDkxMSw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0
QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVD
Qzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2
NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li5jYzUzZTlmMmYxY2VmZWE3MTYxODVkNDhmMDAwODg3
MGIxNTIzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMjQgKzMyLDYzIEBACiAjaW1wb3J0ICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4K
LSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAot
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViR0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAg
fQorICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBv
dmVycmlkZXMuCisgICAgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9p
c09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxl
KTsKKyAgICB9CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5
ZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAg
ICAgbGF5ZXIuc2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAg
ICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3Bs
YXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0
KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsK
KyAgICB9Citwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBp
c09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3Bh
cXVlKQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAg
ICB9CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVu
dHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKK2NsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdldCgpOyB9CisgICAgUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4
LDMwICs5NywyNCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2
YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93
ZWJHTExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlz
cGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZl
ckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRl
dmljZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3Bs
YXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29u
bmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJz
ID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0
dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpA
IldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19
Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNW
UGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRS
aWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3Vy
ZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBs
ZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Vmlk
ZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0xMDAsMjYgKzEzMywxNiBAQCB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQog
ICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsK
LSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rp
c3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVm
ZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAg
ICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsK
IH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsK
LSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5k
ZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIzZGZkN2E2MC4uYzBlNmZmNWFlYTZj
MzA1YmYyYmNmNzUzOTQwZThlYjJmNTRmYmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIGNsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSBvdmVycmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Bs
YXRmb3JtTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiAKQEAgLTU0LDYgKzU1LDI0IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNy
ZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVn
YXRlKFdURk1vdmUoY29udGV4dCkpKTsKKyAgICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5w
bGF0Zm9ybUxheWVyKCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkK
KyAgICAgICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAgICB7CisgICAgfQorICAg
IFJlZjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IG1fY29udGV4dDsKK307CisKIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAgIDogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5n
QmFja2VuZCkKICAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXll
ckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKQEAgLTcyLDYgKzkxLDExIEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgp
CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6Omxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUoKnRoaXMpOworfQorCiB9CiAKIFJlZlB0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5
MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0
OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBt
X2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICgh
b3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7Cisg
ICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVz
RGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVz
ZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51
bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAg
IGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAg
ICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENG
VHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAg
ICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0
cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBB
U1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwor
ICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRl
U2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVu
dHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VS
VChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAg
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5
U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRp
ZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBm
YTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVu
dHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQg
c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRp
ZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1
MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFi
ZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAg
IFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3By
b3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3
YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZk
NmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNB
TGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1Bs
YXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODIs
OCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9
IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwog
Ci0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRz
UHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQz
RChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21M
YXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9p
bnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55
LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBj
dXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1D
QUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAg
ICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0
XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBi
cmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsK
ICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRm
b3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAK
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewot
ICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0
TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rp
c3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAw
ZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTll
MzViMDU1OTY1MTg4MGRhM2VlNTA4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAs
MTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMo
KTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxl
Z2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3Bs
YXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBw
bGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9y
bUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRm
b3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRl
bnRzTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODYwNmVlNDQzMTI5
NjJlYWJlNzQ0YWU0YjljZjc0OTg3NzdiNjFiNC4uMjk2MzYyNWYxMzk2ZTZhYTZiNjgwY2UxNjg1
OGVmNmMyZDc5ZGYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQg
VUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06Cisg
ICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTEtMTkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFtHTElC
XSBBZGQgbmV3IHRlc3QgY2FzZSB0byAvanNjL2NsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRh
NDIwNTU3ZTI0ZDVhYmE3ODNmNi4uOTUxNDkwMTg1ZDdmNGMyYWY5ZGFlYmY3NGIwYTJkOGIxM2Ni
YzlmNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQpAQCAtMzUsMTMgKzM1LDE0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewotY2xhc3MgVGVzdGVkR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworY2xhc3Mg
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcykKICAgICB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgICAgICBy
ZXR1cm4gY29udGV4dDsKICAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIHByaXZhdGU6CiAgICAgVGVzdGVkR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAg
ICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444976</attachid>
            <date>2021-11-22 10:36:11 -0800</date>
            <delta_ts>2021-11-22 23:44:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211122203609.patch</filename>
            <type>text/plain</type>
            <size>109410</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjUxYmUzYmU3ODA3NjI4M2Q0Y2RlZGY1OTQ5Yzc3OGIx
MWNhYTc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC03MzQsNyArNzI5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KIH0KIAotCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpAQCAtNzk2LDYgKzc5MCwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQogICAgIGN1
cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorSU9TdXJmYWNlKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3Bs
YXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAgICBtX3N3YXBDaGFpbi5tYXJrRGlz
cGxheUJ1ZmZlckluVXNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2Mzll
YTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXll
ciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzoo
ZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1
ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQz
ZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1
ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVs
UmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNl
IGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtl
IGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4g
WS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBz
aW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3Qg
YWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBl
bnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0
Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEs
IDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1
cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0g
KHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNv
bnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8g
bGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVy
KChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
bGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggMjU2MjVlZGJmZTI1NGUzNzVmZWYxNjk4MTY5ZjUyZWZkNGFhNzcyMi4uMTc0NGQ2
OWNhOTJmOTIzZWE1OGMyYzljYWI5MDEyMDg5MWI2NTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI5LDUzICsy
OSw3NSBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBs
YXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19Citj
bGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQg
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9
CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmlu
YWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lk
IGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNw
bGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMo
bnVsbHB0cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpC
b3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlz
cGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uo
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09w
YXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVy
OworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hl
biBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KICAg
ICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykK
LSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihhdHRyaWJ1dGVzKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLQorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOwogfTsKIAogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJl
cGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5
QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVy
bjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNl
dENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5QnVm
ZmVyKCkpOwogfQogCiB9CkBAIC05MCw3ICsxMTIsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
RwogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmlu
ZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMyYjQ4
NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgIkNv
bG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNj
NTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEs
OCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJp
ZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXRO
ZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigp
KSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9y
bUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiAr
MTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Omlu
ZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0K
IH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAg
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25l
ciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAg
ICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7
CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEz
OGYwM2I5MzRkYzExZTI5ZGUzNGQuLjM2MjgyZjdlNDQyZDQ1ZTlkNmZjZmJmMDNiZjA3MmYwMjlk
M2RhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYg
KzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFs
IDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Uo
KTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lk
IGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Cisg
ICAgLy8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMuCiAg
ICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q29u
dGVudExheWVyPiBtX25pY29zaWFMYXllcjsKQEAgLTYyLDE2ICs2NCwzNSBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2NsYXNz
IFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlKCk7Ci0gICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsK
LQorICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZlB0
cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29zaWFMYXll
cikpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3VyY2VE
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAg
ICAgIDogbV9uaWNvc2lhTGF5ZXIoV1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAgICB9
CisgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Cit9OwogCi0gICAgUmVm
UHRyPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+IG1fc291cmNlOworY2xhc3MgTmljb3Np
YUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworcHVibGlj
OgorICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKQorICAgICAgICA6IG1fc291cmNlKGFkb3B0
UmVmKCpuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSkpCisgICAgICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU6OmNyZWF0
ZShtX3NvdXJjZS0+cGxhdGZvcm1MYXllcigpKSkKKyAgICB7CisgICAgfQorICAgIC8vIEltYWdl
QnVmZmVyUGlwZSBvdmVycmlkZXMuCisgICAgUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNl
PiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZS5wdHIoKTsgfQorICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUucHRyKCk7IH0KK3ByaXZhdGU6CisgICAgUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U+IG1fc291cmNlOworICAgIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCkKQEAgLTEzNSwzMCArMTU2LDEw
IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgbV9pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsK
IH0KIAotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6cGxhdGZv
cm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOwotfQot
CiB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
KQogewogfQogCi1OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
KCkKLXsKLSAgICBtX3NvdXJjZSA9IGFkb3B0UmVmKG5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlOjpzb3VyY2UoKSBjb25zdAotewotICAgIHJldHVybiBtX3NvdXJjZTsKLX0K
LQotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fc291cmNlKQotICAgICAgICByZXR1cm4gbV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
Tmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAzODI3M2IwNzJi
NTZkM2ZkYTJiY2RlMzQ4YjNlMGY3NDJjMjAwNWU1Li40MjIwYWRiYTVlMjU3ZjczMzg1MTU1ZTAz
NzdiNGM2ODNlYmJhZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NjUsOCArNjUsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1Mg
Q0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTsKIH0KQEAgLTEwMywxMyArMTAxLDE0IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAgdmlydHVhbCB+
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5T2JqOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0
Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CiAgICAgc3RhdGljIEdD
R0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdD
R0xlbnVtIGRyYXdpbmdUYXJnZXQpOwogICAgIHN0YXRpYyBHQ0dMaW50IEVHTERyYXdpbmdCdWZm
ZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KTsK
LSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
I2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIC8vIEZJWE1FOiBNaWdyYXRlIHRvIGxh
eWVycyB0byBzdWJjbGFzcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Q7CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQoKTsKQEAgLTE0NCw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGln
bm1lbnQgPSA0KTsKICNlbmRpZgogCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVz
LgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC00NjMsNiArNDYzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIElP
U3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpOworICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSgpOworI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUmVuZGVy
aW5nUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZTI4NTFjMmUzZDIyMTc3MTY5NGJk
ZDZmMTJmMGU1Zjc4OTljNzU1Yi4uMGE2ZjVjYzMxMjQyNTBiZWJmYjhlZDA2ZGFlNTMxMTAwNzZh
NDcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKQEAgLTY2LDYgKzY2LDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNl
IHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGZpbmFsIDogcHVibGlj
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHsKK3B1YmxpYzoKKyAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBvdmVycmlkZXMuCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOworcHJp
dmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDsKKyAgICAvLyBGSVhNRTogbW92ZSBtb3JlIHBsYXRmb3JtLXNwZWNpZmlj
IHByb3BlcnRpZXMgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIHRvIGhlcmUuCit9Owor
CitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmPEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKGNvbnRleHQpKSk7
CisgICAgfQorICAgIC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVy
cmlkZXMuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFJlZjxHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI+IG1fY29udGV4dDsKK307CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6bGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK30KKwogUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KikKIHsKICAgICBzdGF0aWMg
Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtODUsNyArMTI2LDcgQEAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dEcKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBDcmVhdGUgdGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG9iamVjdCBmaXJzdCBpbiBvcmRlciB0byBlc3RhYmxp
c3QgYSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCi0gICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJpYnV0ZXMpKTsKKyAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
KGF0dHJpYnV0ZXMpKTsKIAogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykgJiYg
RU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNh
bm5vdCBiZSBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFjY2NlMTNjNjBjNGIuLmQ4Zjcw
NWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENsaWVudCh0aGlzKTsK
IH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNGcm9tRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCiB7CiAgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIzNGEzZjQxZDFiYTMxN2NmZmFh
MTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5YTA4YWIxODYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0MjM3ZDhhNGEzOWYuLmEzYmY1
ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgiCiAj
aW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgpAQCAt
NDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVu
dHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5
RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+
cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDY4OTZjNWU1
YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFhMmE5ODUyZTEwZWNhZWIwZDA1
NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxk
RGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdy
YXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIo
UmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1
MWQuLjgzZTliYmU2NjYyMjVjMTg3N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcg
KzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihj
b25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVy
KCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09
IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVu
dCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVu
dCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRl
eHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xh
eWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29u
dGVudHNGcm9tRGlzcGxheURlbGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAK
ICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggMWVlZTE4ZDYyZjA1MDlmMDA5ZjM0YzNlZGU2OGQzNWUwZDA4
OTY1My4uMTAyZWUyZmFhNDc2OTczZWQyOGU3NWQyZjI4ZWRlYTYyMzQ3ZDc2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICAgfQotCisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZm
ZXIoKSB7IHJldHVybiBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsg
fQogICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpIHsgcmV0dXJuIG1fc3dhcENoYWlu
Lm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwCmluZGV4IGRjMmZhYmQ0ZWY1NWY3ODMxNzI3MGMzMjIxMDIzZTM4NjFlODA3MWQuLjE2
YmRmZGZmOWQ1ZDM5ZmFlZDkyNmExNTM3ODQ0Y2Q1MmFjNTU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjoKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29u
dGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIg
PSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdo
dDsKKyAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZm
ZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtE
aXNwbGF5QnVmZmVySW5Vc2UoKTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lE
RU5USVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3ZDllODY3Zjk4ZWI5NTMx
N2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRkNmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2
OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjMsNiArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZvaWQgc2V0Q29udGVudHMo
V1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7
CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7
CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5oYXNfdmFsdWUoKTsKICAgICB9CiAKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZs
dXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1
YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAK
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAg
ICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2Zyb250QnVmZmVyLmRpc2Nh
cmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5QmFja0J1
ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8
IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikg
ewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFj
ZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUg
PSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpi
YWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxV
bmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVm
ZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5
TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1f
YnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVy
LCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsK
QEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9y
dHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IElu
Y2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fYnVm
ZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNv
cmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworfQorCiBib29sIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRC
dWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYgKzI1NywxMiBAQCBib29sIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFj
a2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsK
IAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNw
bGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0
aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29t
ZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250
LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBlbmQobV9m
cm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwogI2Vu
ZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgor
ICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVu
c3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZl
ckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGlj
X2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCku
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0g
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAg
ICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdm
OTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUxNTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2
YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5
ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlv
bigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlk
ICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAiIChj
b250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0
LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA3OTQwM2ExYmFm
NjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZk
MWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYg
KzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5k
aWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWlu
TGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29u
c3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1
c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoK
LSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVy
OgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIHJldHVy
biBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxh
eWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRl
ckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCAzOWQwNzRmNDMxMTAyY2Y0
N2RmODAxYWNkMjU3OTMyMDkwMmVhMDRjLi43MjM5M2U0ZmY1OWU3NmViZDc5YjM2MTBiMzM0Mzkx
ZDZjNjY5MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBA
IC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1v
dGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBtYWtlV2l0
aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKQEAg
LTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKIAogICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVI
b3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwogICAgICAgICAgICAgICAgIHBpZDptX2Ry
YXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZpZXIoKSBjb250ZXh0SUQ6cHJvcGVydGll
cy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ZGI1NjEzZjhkNmMwODhjYWM3MTZkMDg1N2E4NzYwOTlm
MGJjMmNjLi45MjYyMGEzYjY5NzkxOTIzYjBhOTA2ZjdjZGU1ZDc1ZTdiZWY5YWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5MTEs
NiArNDkxMSw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZl
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgy
MTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyog
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIz
MTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1
Li5jYzUzZTlmMmYxY2VmZWE3MTYxODVkNDhmMDAwODg3MGIxNTIzY2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAt
MzIsMjQgKzMyLDYzIEBACiAjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVz
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgot
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xMYXllcjsgfQotICAgIFdl
YkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRl
KGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAgfQorICAgIC8vIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCB3aWxs
RGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisg
ICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVy
LnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisgICAgdm9pZCBkaXNw
bGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAg
ICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobV9k
aXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVu
dHMobnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29y
ZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5
QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAg
ICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsg
fTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5
QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNl
bmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIg
PSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAgICB9Citwcml2YXRlOgorICAgIERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNT
Y2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVlKQorICAgICAgICAsIG1fY29udGVu
dHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICB9CisgICAgY29uc3QgYm9vbCBtX2lz
T3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJp
Z2h0IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsK
K3B1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4K
LSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV93ZWJHTExheWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigp
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMwICs5NywyNCBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVj
dGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgIHsK
KyAgICB9CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsK
ICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVu
ZGVyaW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9w
dE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRl
dmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5E
RUJVRwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAg
ICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVm
ZmVyLT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2Ft
cGxlLgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6
OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciks
IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwg
dHJ1ZSk7CkBAIC0xMDAsMjYgKzEzMywxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIg
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRp
c3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dl
YkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdU
Rk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgp
OworICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlciht
X2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCks
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmli
dXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0
NmYyOGFkOWYzZGIzZGZkN2E2MC4uYzBlNmZmNWFlYTZjMzA1YmYyYmNmNzUzOTQwZThlYjJmNTRm
YmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93
Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
LmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5CiBwdWJsaWM6
CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCiAgICAgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5n
ZXQoKTsgfQogcHJpdmF0ZToKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKQEAgLTU0LDYgKzU1LDI0IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7
CiB9OwogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGlj
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVm
PFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsK
KyAgICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFJlZjxHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI+IG1fY29udGV4dDsKK307CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kKQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNz
Q29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKICAgICAsIG1fcGxhdGZv
cm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKSkKQEAgLTcyLDYgKzkxLDExIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgbWFya0xheWVyQ29tcG9zaXRl
ZCgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKQoreworICAgIHJldHVybiBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
KnRoaXMpOworfQorCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3
NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDEx
ICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJh
bnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlm
IChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3Jl
ID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwg
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYg
KG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVy
dGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJh
Y2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJv
cGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNo
YW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJG
QUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdp
bmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5n
U3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7
CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlm
CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxv
YXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdj
MzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0
ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsK
LQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRN
aW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0
Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3
ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhk
ODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJM
YXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZv
cm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRl
KFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3du
ZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9
IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9y
bUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5
ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0
b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRz
ID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHBy
b3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54
LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHBy
b3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQ
b2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2lu
dFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0x
MjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9u
ZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgp
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBj
dXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVy
LgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUw
LDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3By
b3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNl
Ci0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNj
YzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTllMzViMDU1OTY1MTg4MGRhM2VlNTA4Yjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dy
YXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
V0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xh
eWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXll
clB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURl
bGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAg
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQor
CiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODYwNmVlNDQzMTI5NjJlYWJlNzQ0YWU0YjljZjc0OTg3Nzdi
NjFiNC4uMjk2MzYyNWYxMzk2ZTZhYTZiNjgwY2UxNjg1OGVmNmMyZDc5ZGYzMCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTExLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAg
ICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJy
aWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuCisKIDIwMjEtMTEtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFtHTElCXSBBZGQgbmV3IHRlc3QgY2FzZSB0byAv
anNjL2NsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3ZTI0ZDVhYmE3ODNmNi4uOTUx
NDkwMTg1ZDdmNGMyYWY5ZGFlYmY3NGIwYTJkOGIxM2NiYzlmNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMzUsMTMgKzM1LDE0IEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgewotY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wo
V1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
IHByaXZhdGU6CiAgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445007</attachid>
            <date>2021-11-22 23:44:46 -0800</date>
            <delta_ts>2021-11-23 00:57:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211123094444.patch</filename>
            <type>text/plain</type>
            <size>109639</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjUxYmUzYmU3ODA3NjI4M2Q0Y2RlZGY1OTQ5Yzc3OGIx
MWNhYTc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC03MzQsNyArNzI5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KIH0KIAotCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpAQCAtNzk2LDYgKzc5MCwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQogICAgIGN1
cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorSU9TdXJmYWNlKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3Bs
YXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAgICBtX3N3YXBDaGFpbi5tYXJrRGlz
cGxheUJ1ZmZlckluVXNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2Mzll
YTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXll
ciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzoo
ZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1
ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQz
ZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1
ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVs
UmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNl
IGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtl
IGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4g
WS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBz
aW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3Qg
YWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBl
bnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0
Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEs
IDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1
cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0g
KHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNv
bnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8g
bGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVy
KChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
bGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggMjU2MjVlZGJmZTI1NGUzNzVmZWYxNjk4MTY5ZjUyZWZkNGFhNzcyMi4uMTc0NGQ2
OWNhOTJmOTIzZWE1OGMyYzljYWI5MDEyMDg5MWI2NTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI5LDUzICsy
OSw3NSBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBs
YXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19Citj
bGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQg
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9
CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmlu
YWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lk
IGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNw
bGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMo
bnVsbHB0cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpC
b3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlz
cGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uo
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09w
YXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVy
OworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hl
biBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KICAg
ICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykK
LSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihhdHRyaWJ1dGVzKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLQorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOwogfTsKIAogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJl
cGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5
QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVy
bjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNl
dENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5QnVm
ZmVyKCkpOwogfQogCiB9CkBAIC05MCw3ICsxMTIsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
RwogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmlu
ZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMyYjQ4
NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgIkNv
bG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNj
NTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEs
OCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJp
ZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXRO
ZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigp
KSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9y
bUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiAr
MTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Omlu
ZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0K
IH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAg
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25l
ciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAg
ICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7
CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEz
OGYwM2I5MzRkYzExZTI5ZGUzNGQuLjM2MjgyZjdlNDQyZDQ1ZTlkNmZjZmJmMDNiZjA3MmYwMjlk
M2RhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYg
KzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFs
IDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Uo
KTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lk
IGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Cisg
ICAgLy8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMuCiAg
ICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q29u
dGVudExheWVyPiBtX25pY29zaWFMYXllcjsKQEAgLTYyLDE2ICs2NCwzNSBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2NsYXNz
IFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlKCk7Ci0gICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsK
LQorICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZlB0
cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29zaWFMYXll
cikpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3VyY2VE
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAg
ICAgIDogbV9uaWNvc2lhTGF5ZXIoV1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAgICB9
CisgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Cit9OwogCi0gICAgUmVm
UHRyPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+IG1fc291cmNlOworY2xhc3MgTmljb3Np
YUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworcHVibGlj
OgorICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKQorICAgICAgICA6IG1fc291cmNlKGFkb3B0
UmVmKCpuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSkpCisgICAgICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU6OmNyZWF0
ZShtX3NvdXJjZS0+cGxhdGZvcm1MYXllcigpKSkKKyAgICB7CisgICAgfQorICAgIC8vIEltYWdl
QnVmZmVyUGlwZSBvdmVycmlkZXMuCisgICAgUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNl
PiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZS5wdHIoKTsgfQorICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUucHRyKCk7IH0KK3ByaXZhdGU6CisgICAgUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U+IG1fc291cmNlOworICAgIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCkKQEAgLTEzNSwzMCArMTU2LDEw
IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgbV9pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsK
IH0KIAotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6cGxhdGZv
cm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOwotfQot
CiB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
KQogewogfQogCi1OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
KCkKLXsKLSAgICBtX3NvdXJjZSA9IGFkb3B0UmVmKG5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlOjpzb3VyY2UoKSBjb25zdAotewotICAgIHJldHVybiBtX3NvdXJjZTsKLX0K
LQotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fc291cmNlKQotICAgICAgICByZXR1cm4gbV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
Tmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAzODI3M2IwNzJi
NTZkM2ZkYTJiY2RlMzQ4YjNlMGY3NDJjMjAwNWU1Li40MjIwYWRiYTVlMjU3ZjczMzg1MTU1ZTAz
NzdiNGM2ODNlYmJhZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NjUsOCArNjUsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLU9CSkNfQ0xBU1Mg
Q0FMYXllcjsKLU9CSkNfQ0xBU1MgV2ViR0xMYXllcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRTsKIH0KQEAgLTEwMywxMyArMTAxLDE0IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAgdmlydHVhbCB+
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5T2JqOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0
Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9CiAgICAgc3RhdGljIEdD
R0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdD
R0xlbnVtIGRyYXdpbmdUYXJnZXQpOwogICAgIHN0YXRpYyBHQ0dMaW50IEVHTERyYXdpbmdCdWZm
ZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KTsK
LSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
I2VuZGlmCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAgIC8vIEZJWE1FOiBNaWdyYXRlIHRvIGxh
eWVycyB0byBzdWJjbGFzcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Q7CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCiAgICAgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQoKTsKQEAgLTE0NCw2ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0ZXhJ
bWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGln
bm1lbnQgPSA0KTsKICNlbmRpZgogCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVz
LgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC00NjMsNiArNDYzLDEwIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
TWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIElP
U3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpOworICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSgpOworI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUmVuZGVy
aW5nUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZTI4NTFjMmUzZDIyMTc3MTY5NGJk
ZDZmMTJmMGU1Zjc4OTljNzU1Yi4uMGE2ZjVjYzMxMjQyNTBiZWJmYjhlZDA2ZGFlNTMxMTAwNzZh
NDcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKQEAgLTY2LDYgKzY2LDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNl
IHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGZpbmFsIDogcHVibGlj
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHsKK3B1YmxpYzoKKyAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCBvdmVycmlkZXMuCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOworcHJp
dmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDsKKyAgICAvLyBGSVhNRTogbW92ZSBtb3JlIHBsYXRmb3JtLXNwZWNpZmlj
IHByb3BlcnRpZXMgZnJvbSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIHRvIGhlcmUuCit9Owor
CitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmPEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKGNvbnRleHQpKSk7
CisgICAgfQorICAgIC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVy
cmlkZXMuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFJlZjxHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoV1RG
TW92ZShjb250ZXh0KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI+IG1fY29udGV4dDsKK307CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6bGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK30KKwogUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KikKIHsKICAgICBzdGF0aWMg
Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtODUsNyArMTI2LDcgQEAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dEcKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBDcmVhdGUgdGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG9iamVjdCBmaXJzdCBpbiBvcmRlciB0byBlc3RhYmxp
c3QgYSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCi0gICAgYXV0byBjb250ZXh0ID0g
YWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKGF0dHJpYnV0ZXMpKTsKKyAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
KGF0dHJpYnV0ZXMpKTsKIAogI2lmIFVTRShMSUJFUE9YWSkgJiYgVVNFKE9QRU5HTF9FUykgJiYg
RU5BQkxFKFdFQkdMMikKICAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNh
bm5vdCBiZSBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFjY2NlMTNjNjBjNGIuLmQ4Zjcw
NWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENsaWVudCh0aGlzKTsK
IH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNGcm9tRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCiB7CiAgICAg
aWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIzNGEzZjQxZDFiYTMxN2NmZmFh
MTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5YTA4YWIxODYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0MjM3ZDhhNGEzOWYuLmEzYmY1
ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgiCiAj
aW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgpAQCAt
NDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVu
dHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5
RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+
cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDY4OTZjNWU1
YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFhMmE5ODUyZTEwZWNhZWIwZDA1
NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxk
RGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdy
YXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIo
UmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1
MWQuLjgzZTliYmU2NjYyMjVjMTg3N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcg
KzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihj
b25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVy
KCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09
IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVu
dCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVu
dCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRl
eHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xh
eWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29u
dGVudHNGcm9tRGlzcGxheURlbGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAK
ICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggMWVlZTE4ZDYyZjA1MDlmMDA5ZjM0YzNlZGU2OGQzNWUwZDA4
OTY1My4uMTAyZWUyZmFhNDc2OTczZWQyOGU3NWQyZjI4ZWRlYTYyMzQ3ZDc2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICAgfQotCisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZm
ZXIoKSB7IHJldHVybiBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsg
fQogICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpIHsgcmV0dXJuIG1fc3dhcENoYWlu
Lm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwCmluZGV4IGRjMmZhYmQ0ZWY1NWY3ODMxNzI3MGMzMjIxMDIzZTM4NjFlODA3MWQuLjE2
YmRmZGZmOWQ1ZDM5ZmFlZDkyNmExNTM3ODQ0Y2Q1MmFjNTU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjoKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29u
dGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIg
PSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdo
dDsKKyAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZm
ZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtE
aXNwbGF5QnVmZmVySW5Vc2UoKTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lE
RU5USVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3ZDllODY3Zjk4ZWI5NTMx
N2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRkNmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2
OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjMsNiArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZvaWQgc2V0Q29udGVudHMo
V1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7
CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7
CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5oYXNfdmFsdWUoKTsKICAgICB9CiAKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZs
dXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1
YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAK
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAg
ICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2Zyb250QnVmZmVyLmRpc2Nh
cmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5QmFja0J1
ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8
IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikg
ewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFj
ZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUg
PSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpi
YWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxV
bmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVm
ZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5
TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1f
YnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVy
LCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsK
QEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9y
dHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IElu
Y2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fYnVm
ZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNv
cmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworfQorCiBib29sIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRC
dWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYgKzI1NywxMiBAQCBib29sIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFj
a2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsK
IAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNw
bGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0
aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29t
ZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250
LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBlbmQobV9m
cm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwogI2Vu
ZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgor
ICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVu
c3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZl
ckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGlj
X2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCku
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0g
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAg
ICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdm
OTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUxNTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2
YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5
ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlv
bigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlk
ICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAiIChj
b250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0
LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA3OTQwM2ExYmFm
NjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZk
MWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYg
KzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5k
aWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWlu
TGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29u
c3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1
c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoK
LSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVy
OgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIHJldHVy
biBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxh
eWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRl
ckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCAzOWQwNzRmNDMxMTAyY2Y0
N2RmODAxYWNkMjU3OTMyMDkwMmVhMDRjLi43MjM5M2U0ZmY1OWU3NmViZDc5YjM2MTBiMzM0Mzkx
ZDZjNjY5MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBA
IC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1v
dGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBtYWtlV2l0
aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKQEAg
LTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKIAogICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVI
b3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwogICAgICAgICAgICAgICAgIHBpZDptX2Ry
YXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZpZXIoKSBjb250ZXh0SUQ6cHJvcGVydGll
cy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1ZGI1NjEzZjhkNmMwODhjYWM3MTZkMDg1N2E4NzYwOTlm
MGJjMmNjLi45MjYyMGEzYjY5NzkxOTIzYjBhOTA2ZjdjZGU1ZDc1ZTdiZWY5YWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5MTEs
NiArNDkxMSw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZl
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgy
MTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyog
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIz
MTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1
Li5jYzUzZTlmMmYxY2VmZWE3MTYxODVkNDhmMDAwODg3MGIxNTIzY2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAt
MzIsMjQgKzMyLDYzIEBACiAjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVz
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgot
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xMYXllcjsgfQotICAgIFdl
YkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRl
KGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAgfQorICAgIC8vIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCB3aWxs
RGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisg
ICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVy
LnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisgICAgdm9pZCBkaXNw
bGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAg
ICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobV9k
aXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVu
dHMobnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29y
ZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5
QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAg
ICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsg
fTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5
QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNl
bmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIg
PSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAgICB9Citwcml2YXRlOgorICAgIERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNT
Y2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVlKQorICAgICAgICAsIG1fY29udGVu
dHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICB9CisgICAgY29uc3QgYm9vbCBtX2lz
T3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJp
Z2h0IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsK
K3B1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4K
LSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV93ZWJHTExheWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigp
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMwICs5NywyNCBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nl
c3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVj
dGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgIHsK
KyAgICB9CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsK
ICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVu
ZGVyaW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9w
dE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRl
dmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5E
RUJVRwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAg
ICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVm
ZmVyLT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2Ft
cGxlLgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6
OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciks
IFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwg
dHJ1ZSk7CkBAIC0xMDAsMjYgKzEzMywxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIg
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRp
c3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dl
YkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdU
Rk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgp
OworICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlciht
X2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCks
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmli
dXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0
NmYyOGFkOWYzZGIzZGZkN2E2MC4uMjFkZjU2ODQwZTFkZWUzZjI4NzgzOGYxYWQ1MjljNDAwYjU3
MWFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93
Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
LmNwcApAQCAtMzksMjcgKzM5LDQzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
ewogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVmPFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVy
JiYgcGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkpOworICAg
IH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorcHJpdmF0ZToK
KyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXIm
JiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihXVEZNb3ZlKHBsYXRm
b3JtTGF5ZXIpKQorICAgIHsKKyAgICB9CisgICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3Bs
YXRmb3JtTGF5ZXI7Cit9OworCiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0Mg
ZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CiBwdWJsaWM6CiAg
ICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCiAgICAgdm9pZCBw
cmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJp
dmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1f
cGxhdGZvcm1MYXllcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXll
ckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4o
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9Owog
Ci1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRl
cmluZ0JhY2tlbmQpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3Jt
TGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFl
NzcyM2JhMC4uNThiNmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3Mywx
MSArMTczLDExIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRy
YW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBp
ZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9y
ZSA9IG93bmVyKCkgJiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8
IG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlm
IChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAg
ICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3Bl
cnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpC
YWNraW5nU3RvcmVDaGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZSAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVBy
b3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVD
aGFuZ2VkKTsKIApAQCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpjb250ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAg
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VS
RkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJD
b3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3
aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRS
aWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcp
OworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmUtPnNldENvbnRlbnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3
YzMwNTU3ZDU5OGNhMjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTll
NDg5OGI2NWI4YThlYWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7
Ci0KKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RG
OjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0
TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLmgKaW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYz
NC4uN2FiOTkwYmMyNWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAs
NyArNjAsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gbV9wbGF0Zm9ybUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4
ZDgzMDIxMzA4ZTQ4ZjRlLi42MjkyMzFiNjM5ZWE1YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0KQEAgLTM0LDE1ICszNCwxNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2Vi
TGF5ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29h
L0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRm
b3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29u
c3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8
UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0
ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIg
PSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZv
cm1MYXllciwgb3duZXIsIGNvbnRleHQpKTsKQEAgLTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxh
eWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3Vz
dG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50
cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBw
cm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24u
eCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3VzdG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBw
cm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9y
UG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9p
bnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRzID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAt
MTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRmb3JtQ0FMYXllcgogICAgICAgICAgICAgY2xv
bmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwogICAgICAgICB9CiAK
LSAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUo
KSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5
ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgICAgICAvLyBGSVhNRTog
Y3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVudHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXll
ci4KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1
MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZU
eXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9w
cm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxh
eUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRl
bnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxz
ZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOworICAg
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5kZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFj
Y2MwNGM2MWQwZDBkMDVmNC4uZTZmMThjYThiMWYxNzE5ZTM1YjA1NTk2NTE4ODBkYTNlZTUwOGI5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9H
cmFwaGljc0xheWVyV0MuY3BwCkBAIC0yOTAsNiArMjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXll
cldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5
ZXJQdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlE
ZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAg
ICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30K
KwogYm9vbCBHcmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg2MDZlZTQ0MzEyOTYyZWFiZTc0NGFlNGI5Y2Y3NDk4Nzc3
YjYxYjQuLjI5NjM2MjVmMTM5NmU2YWE2YjY4MGNlMTY4NThlZjZjMmQ3OWRmMzAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0xMS0xOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAg
ICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RH
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVy
cmlkZSBvZiB0aGUgbmV3IG1lbWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLgorCiAyMDIxLTExLTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBbR0xJQl0gQWRkIG5ldyB0ZXN0IGNhc2UgdG8g
L2pzYy9jbGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tCmluZGV4IDkxN2QyZTgxNjBhNTMyYmY2Njc0YTQyMDU1N2UyNGQ1YWJhNzgzZjYuLjk1
MTQ5MDE4NWQ3ZjRjMmFmOWRhZWJmNzRiMGEyZDhiMTNjYmM5ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTM1LDEzICszNSwxNCBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIHsKLWNsYXNzIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIDogcHVibGlj
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHsKK2NsYXNzIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
KFdURk1vdmUoYXR0cmlidXRlcykpKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICAgfQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CiBwcml2YXRlOgogICAgIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgICAgICA6IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKFdURk1vdmUoYXR0cmlidXRlcykpCg==
</data>
<flag name="commit-queue"
          id="470149"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445014</attachid>
            <date>2021-11-23 00:50:11 -0800</date>
            <delta_ts>2021-11-23 03:32:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211123105009.patch</filename>
            <type>text/plain</type>
            <size>109638</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjUxYmUzYmU3ODA3NjI4M2Q0Y2RlZGY1OTQ5Yzc3OGIx
MWNhYTc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC03MzQsNyArNzI5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KIH0KIAotCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpAQCAtNzk2LDYgKzc5MCwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQogICAgIGN1
cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorSU9TdXJmYWNlKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3Bs
YXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAgICBtX3N3YXBDaGFpbi5tYXJrRGlz
cGxheUJ1ZmZlckluVXNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2Mzll
YTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXll
ciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzoo
ZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1
ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQz
ZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1
ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVs
UmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNl
IGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtl
IGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4g
WS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBz
aW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3Qg
YWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBl
bnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0
Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEs
IDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1
cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0g
KHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNv
bnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8g
bGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVy
KChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
bGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggMjU2MjVlZGJmZTI1NGUzNzVmZWYxNjk4MTY5ZjUyZWZkNGFhNzcyMi4uMTc0NGQ2
OWNhOTJmOTIzZWE1OGMyYzljYWI5MDEyMDg5MWI2NTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI5LDUzICsy
OSw3NSBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBs
YXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19Citj
bGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQg
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9
CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmlu
YWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lk
IGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNw
bGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMo
bnVsbHB0cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpC
b3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlz
cGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uo
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09w
YXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVy
OworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hl
biBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KICAg
ICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykK
LSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihhdHRyaWJ1dGVzKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLQorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOwogfTsKIAogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJl
cGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5
QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVy
bjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNl
dENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5QnVm
ZmVyKCkpOwogfQogCiB9CkBAIC05MCw3ICsxMTIsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
RwogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmlu
ZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMyYjQ4
NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgIkNv
bG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNj
NTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEs
OCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJp
ZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXRO
ZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigp
KSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9y
bUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiAr
MTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Omlu
ZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0K
IH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAg
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25l
ciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAg
ICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7
CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEz
OGYwM2I5MzRkYzExZTI5ZGUzNGQuLmY0MGQ2MWUxMzc2NDZhMjYyNDBjYjVlMDE0ODRmYTUyOTcx
ZWI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYg
KzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFs
IDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Uo
KTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lk
IGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Cisg
ICAgLy8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMuCiAg
ICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q29u
dGVudExheWVyPiBtX25pY29zaWFMYXllcjsKQEAgLTYyLDE2ICs2NCwzNSBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2NsYXNz
IFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlKCk7Ci0gICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsK
LQorICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZlB0
cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29zaWFMYXll
cikpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRy
PEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBzb3VyY2UoKSBjb25zdCBmaW5hbDsKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUGlwZVNvdXJjZURp
c3BsYXlEZWxlZ2F0ZShSZWZQdHI8Q29udGVudExheWVyPiYmIG5pY29zaWFMYXllcikKKyAgICAg
ICAgOiBtX25pY29zaWFMYXllcihXVEZNb3ZlKG5pY29zaWFMYXllcikpCisgICAgeworICAgIH0K
KyAgICBSZWZQdHI8Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKK307CiAKLSAgICBSZWZQ
dHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CitjbGFzcyBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitwdWJsaWM6
CisgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCisgICAgICAgIDogbV9zb3VyY2UoYWRvcHRS
ZWYoKm5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKSkKKyAgICAgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpKQorICAgIHsKKyAgICB9CisgICAgLy8gSW1hZ2VC
dWZmZXJQaXBlIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+
IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlLnB0cigpOyB9CisgICAgUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5wdHIoKTsgfQorcHJpdmF0ZToKKyAgICBSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKQpAQCAtMTM1LDMwICsxNTYsMTAg
QEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwog
fQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7Ci19Ci0K
IHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgp
CiB7CiB9CiAKLU5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGUo
KQotewotICAgIG1fc291cmNlID0gYWRvcHRSZWYobmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2UpOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGU6OnNvdXJjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc291cmNlOwotfQot
Ci1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBtX3NvdXJjZS0+cGxh
dGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBO
aWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDM4MjczYjA3MmI1
NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUuLjQyMjBhZGJhNWUyNTdmNzMzODUxNTVlMDM3
N2I0YzY4M2ViYmFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC02
NSw4ICs2NSw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotT0JKQ19DTEFTUyBD
QUxheWVyOwotT0JKQ19DTEFTUyBXZWJHTExheWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwogfQpAQCAtMTAzLDEzICsxMDEsMTQgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKTsKICAgICB2aXJ0dWFsIH5H
cmFwaGljc0NvbnRleHRHTE9wZW5HTCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRm
b3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdPYmo7IH0KICAgICBzdGF0aWMgR0NH
TGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoR0NH
TGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJhd2luZ0J1ZmZl
clRleHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwot
I2Vsc2UKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7Cisj
ZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgLy8gRklYTUU6IE1pZ3JhdGUgdG8gbGF5
ZXJzIHRvIHN1YmNsYXNzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldCgpOwpAQCAtMTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHRleElt
YWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdu
bWVudCA9IDQpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMu
CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAKICAgICAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgSU9T
dXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNl
KCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJp
bmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBy
ZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlMjg1MWMyZTNkMjIxNzcxNjk0YmRk
NmYxMmYwZTVmNzg5OWM3NTViLi4wYTZmNWNjMzEyNDI1MGJlYmZiOGVkMDZkYWU1MzExMDA3NmE0
NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNw
cApAQCAtNjYsNiArNjYsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2Ug
eworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIgZmluYWwgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworcHVibGljOgorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7Citwcml2
YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOworICAgIC8vIEZJWE1FOiBtb3ZlIG1vcmUgcGxhdGZvcm0tc3BlY2lmaWMg
cHJvcGVydGllcyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggdG8gaGVyZS4KK307CisK
K2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsK
KyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJy
aWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9Citw
cml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUmVmPEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcj4gbV9jb250ZXh0OworfTsKKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKQogewogICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkID0gZmFsc2U7CkBAIC04NSw3ICsxMjYsNyBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0RwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENyZWF0ZSB0aGUg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGluIG9yZGVyIHRvIGVzdGFibGlz
dCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykpOworICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
YXR0cmlidXRlcykpOwogCiAjaWYgVVNFKExJQkVQT1hZKSAmJiBVU0UoT1BFTkdMX0VTKSAmJiBF
TkFCTEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYgR0xFUzMgd2FzIHJlcXVlc3RlZCBidXQgY2Fu
bm90IGJlIHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZDhmNzA1
ZDBhZjU5ZjZiMjM2ODM4YjhlNTA2NWI2YjBkZTAwM2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVN
YXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Zyb21EaXNw
bGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4m
JiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlE
ZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKIHsKICAgICBp
ZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2ZmYWEx
ODYxMjk4Li4yZjQ1OThkYzBhOTJiNGMzY2Y2M2ZhNzY5ZGRkNzlhMDhhYjE4NjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNU
b1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBv
c2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uYTNiZjVm
M2JhMGYzMmFjNDM4MDA4NmNjYzdjM2Y0YzQ2ZmMxZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNp
bmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00
OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlE
ZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTVi
MDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEyYTk4NTJlMTBlY2FlYjBkMDU0
OWY5Y2NkNzQwOTlkYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRE
aXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXllcihSZWZQdHI8R3Jh
cGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihS
ZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0ZDUx
ZC4uODNlOWJiZTY2NjIyNWMxODc3ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyAr
MTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNv
bnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIo
KS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0g
Q2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50
KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4
dCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1M
YXllcihjb250ZXh0LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5
ZXJQdXJwb3NlOjpDYW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250
ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKIAog
ICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0wuaAppbmRleCAxZWVlMThkNjJmMDUwOWYwMDlmMzRjM2VkZTY4ZDM1ZTBkMDg5
NjUzLi4xMDJlZTJmYWE0NzY5NzNlZDI4ZTc1ZDJmMjhlZGVhNjIzNDdkNzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Ci0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZl
cigpIHsgcmV0dXJuIG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOyB9
CiAgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4u
bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAKaW5kZXggZGMyZmFiZDRlZjU1Zjc4MzE3MjcwYzMyMjEwMjNlMzg2MWU4MDcxZC4uMTZi
ZGZkZmY5ZDVkMzlmYWVkOTI2YTE1Mzc4NDRjZDUyYWM1NTU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOgogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9
IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0
OworICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZl
cigpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFya0Rp
c3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURF
TlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3
ZjlmNGEzYmU5OTZhZDQ1MWQwMTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5
NTk5MjI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50cyhX
VEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsK
KyAgICAgICAgcmV0dXJuIG1fYnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAogICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVj
NTZjZTE3NTM0YjExZmNmYjVhNDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAog
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAg
IG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2Fy
ZCgpOwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVm
ZmVyLmRpc2NhcmQoKTsKQEAgLTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwg
bV9pbmNsdWRlRGlzcGxheUxpc3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7
Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNl
OgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAg
ICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9
IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJh
Y2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVu
YWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZm
ZXJIYW5kbGU7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlM
aXN0SGFuZGxlOwpAQCAtMjIwLDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9i
dWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIs
IG1fYmFja0J1ZmZlcik7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpA
QCAtMjU3LDYgKzI0MCwxMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0
c1BhcnRpYWxSZXBhaW50KCkKICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5j
bHVkZURpc3BsYXlMaXN0OjpObzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9idWZm
ZXJIYW5kbGUgPSBXVEZNb3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29y
ZTo6UmVnaW9uKCk7CisgICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1
ZmZlckZsdXNoZXJzLnNpemUoKSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0
KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNr
aW5nU3RvcmUgPSBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwog
CisgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3Bs
YXkobV9sYXllcikpIHsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
TGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKwogICAgIC8vIE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRp
bGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21l
cyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQs
IGZhbHNlKTsKIApAQCAtMzI3LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zy
b250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5k
aWYKIAorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Cisg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVy
SGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNf
Y2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAg
ICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5
NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZh
MTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkg
KzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9u
KCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQg
IiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNv
bnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQt
aWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2
M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQx
Y2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiAr
Mjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRp
ZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5M
YXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3Vz
dG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgot
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6
CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJu
IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5
ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVy
TGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM5ZDA3NGY0MzExMDJjZjQ3
ZGY4MDFhY2QyNTc5MzIwOTAyZWEwNGMuLjcyMzkzZTRmZjU5ZTc2ZWJkNzliMzYxMGIzMzQzOTFk
NmM2NjkxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAg
LTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRo
VmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAt
NzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhv
c3QpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJh
d2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVz
Lmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDVkYjU2MTNmOGQ2YzA4OGNhYzcxNmQwODU3YTg3NjA5OWYw
YmMyY2MuLjkyNjIwYTNiNjk3OTE5MjNiMGE5MDZmN2NkZTVkNzVlN2JlZjlhYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDkxMSw2
ICs0OTExLDcgQEAKIAkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZl
UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNl
aXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIx
N0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMx
MjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUu
LmNjNTNlOWYyZjFjZWZlYTcxNjE4NWQ0OGYwMDA4ODcwYjE1MjNjYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0z
MiwyNCArMzIsNjMgQEAKICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMu
aCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0g
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2Vi
Q29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUo
aXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxE
ZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rp
c3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50
cyhudWxscHRyKTsKKyAgICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXlC
dWZmZXIoY29uc3QgTWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAg
IGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlC
dWZmZXIgJiYgZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2Vu
ZFJpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9
IGRpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50
c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKyAgICBjb25zdCBib29sIG1faXNP
cGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIE1hY2hTZW5kUmln
aHQgbV9kaXNwbGF5QnVmZmVyOworfTsKIAorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewor
cHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmlu
YWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgsMzAgKzk3LDI0IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
IWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgewor
ICAgIH0KKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwog
ICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5k
ZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2
aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewogICAg
IGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZm
ZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1w
bGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6
Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwg
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0
cnVlKTsKQEAgLTEwMCwyNiArMTMzLDE2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1
ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlz
cGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2Vi
R0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RG
TW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7
CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKG1f
ZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkpOwogfQogCiB9CiAKIFJlZlB0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwg
YXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1
dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2
ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi4yMWRmNTY4NDBlMWRlZTNmMjg3ODM4ZjFhZDUyOWM0MDBiNTcx
YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3dj
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0Mu
Y3BwCkBAIC0zOSwyNyArMzksNDMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7
CiAKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBSZWY8UGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXIm
JiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAg
fQorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKKyAgICB9Citwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZv
cm1MYXllcikpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxh
dGZvcm1MYXllcjsKK307CisKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBm
aW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKIHB1YmxpYzoKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUucHRyKCk7IH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2
YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLQotICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9w
bGF0Zm9ybUxheWVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5k
KQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPiht
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAK
LVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVy
aW5nQmFja2VuZCkKLSAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1M
YXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3
NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDEx
ICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJh
bnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlm
IChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3Jl
ID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwg
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYg
KG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVy
dGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJh
Y2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJv
cGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNo
YW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJG
QUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdp
bmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5n
U3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7
CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlm
CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxv
YXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdj
MzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0
ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsK
LQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRN
aW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0
Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3
ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhk
ODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJM
YXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZv
cm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRl
KFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3du
ZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9
IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9y
bUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5
ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0
b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRz
ID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHBy
b3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54
LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHBy
b3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQ
b2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2lu
dFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0x
MjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9u
ZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgp
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBj
dXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVy
LgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUw
LDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3By
b3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNl
Ci0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNj
YzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTllMzViMDU1OTY1MTg4MGRhM2VlNTA4Yjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dy
YXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
V0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xh
eWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXll
clB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURl
bGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAg
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQor
CiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODYwNmVlNDQzMTI5NjJlYWJlNzQ0YWU0YjljZjc0OTg3Nzdi
NjFiNC4uMjk2MzYyNWYxMzk2ZTZhYTZiNjgwY2UxNjg1OGVmNmMyZDc5ZGYzMCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTExLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAg
ICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJy
aWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuCisKIDIwMjEtMTEtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFtHTElCXSBBZGQgbmV3IHRlc3QgY2FzZSB0byAv
anNjL2NsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3ZTI0ZDVhYmE3ODNmNi4uOTUx
NDkwMTg1ZDdmNGMyYWY5ZGFlYmY3NGIwYTJkOGIxM2NiYzlmNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMzUsMTMgKzM1LDE0IEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgewotY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wo
V1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
IHByaXZhdGU6CiAgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445021</attachid>
            <date>2021-11-23 03:32:16 -0800</date>
            <delta_ts>2021-11-23 22:34:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211123133214.patch</filename>
            <type>text/plain</type>
            <size>109854</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uYzAzMDlmZjJiYWJiOWJhNDU2OGFm
MDk5MTU3NjY4NmU1YjRjNTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0yMTIsNiArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0Nv
bnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5
ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxh
dGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwx
MCArMzA0LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIGNvbnN0ZXhwciBzdGF0
aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9y
bUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDYsNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwog
I2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKQEAgLTY2Myw2ICs2NjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYXNFdmVyUGFpbnRlZCA6IDE7CiAgICAgYm9vbCBtX2hhc0Rlc2Nl
bmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zIDogMTsKICAgICBib29sIG1faGFz
RGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzIDogMTsKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRk
YTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlm
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiAr
NTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUo
SU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9y
bUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiAr
MjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
aW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2
ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0
OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5
cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENG
VHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYy
ODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMw
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBA
QAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1w
b3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4K
KyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBA
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJM
YXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2lt
cGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAg
Y2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3Mg
PSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJs
ZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdy
YXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXll
clR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpA
QCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQo
KQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMg
b24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIg
d2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNldERl
bGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03
OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBI
QVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJm
YWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTliOWRh
ZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjUxYmUzYmU3ODA3NjI4M2Q0Y2RlZGY1OTQ5Yzc3OGIx
MWNhYTc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpA
QCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQgPT0gLTEpCkBAIC03MzQsNyArNzI5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KIH0KIAotCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpAQCAtNzk2LDYgKzc5MCwxNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQogICAgIGN1
cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorSU9TdXJmYWNlKiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3Bs
YXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAgICBtX3N3YXBDaGFpbi5tYXJrRGlz
cGxheUJ1ZmZlckluVXNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2Mzll
YTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXll
ciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzoo
ZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1
ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQz
ZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1
ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVs
UmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNl
IGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtl
IGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4g
WS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBz
aW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3Qg
YWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBl
bnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0
Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEs
IDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1
cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0g
KHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNv
bnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8g
bGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVy
KChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
bGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggMjU2MjVlZGJmZTI1NGUzNzVmZWYxNjk4MTY5ZjUyZWZkNGFhNzcyMi4uMTc0NGQ2
OWNhOTJmOTIzZWE1OGMyYzljYWI5MDEyMDg5MWI2NTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI5LDUzICsy
OSw3NSBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBs
YXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19Citj
bGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQg
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9
CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4K
KyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmlu
YWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lk
IGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
IChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNw
bGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMo
bnVsbHB0cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpC
b3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlz
cGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uo
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09w
YXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRl
bnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVy
OworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hl
biBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KICAg
ICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykK
LSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihhdHRyaWJ1dGVzKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLQorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOwogfTsKIAogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJl
cGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5
QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVy
bjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNl
dENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5QnVm
ZmVyKCkpOwogfQogCiB9CkBAIC05MCw3ICsxMTIsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
RwogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRD
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmlu
ZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMyYjQ4
NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQgIkNv
bG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNj
NTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEs
OCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJp
ZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXRO
ZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigp
KSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9y
bUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiAr
MTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Omlu
ZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0K
IH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAg
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25l
ciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAg
ICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7
CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEz
OGYwM2I5MzRkYzExZTI5ZGUzNGQuLmY0MGQ2MWUxMzc2NDZhMjYyNDBjYjVlMDE0ODRmYTUyOTcx
ZWI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYg
KzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFs
IDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Uo
KTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lk
IGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Cisg
ICAgLy8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMuCiAg
ICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q29u
dGVudExheWVyPiBtX25pY29zaWFMYXllcjsKQEAgLTYyLDE2ICs2NCwzNSBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2NsYXNz
IFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlKCk7Ci0gICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsK
LQorICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZlB0
cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29zaWFMYXll
cikpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRy
PEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBzb3VyY2UoKSBjb25zdCBmaW5hbDsKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUGlwZVNvdXJjZURp
c3BsYXlEZWxlZ2F0ZShSZWZQdHI8Q29udGVudExheWVyPiYmIG5pY29zaWFMYXllcikKKyAgICAg
ICAgOiBtX25pY29zaWFMYXllcihXVEZNb3ZlKG5pY29zaWFMYXllcikpCisgICAgeworICAgIH0K
KyAgICBSZWZQdHI8Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKK307CiAKLSAgICBSZWZQ
dHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CitjbGFzcyBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitwdWJsaWM6
CisgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCisgICAgICAgIDogbV9zb3VyY2UoYWRvcHRS
ZWYoKm5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKSkKKyAgICAgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpKQorICAgIHsKKyAgICB9CisgICAgLy8gSW1hZ2VC
dWZmZXJQaXBlIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+
IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlLnB0cigpOyB9CisgICAgUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5wdHIoKTsgfQorcHJpdmF0ZToKKyAgICBSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKQpAQCAtMTM1LDMwICsxNTYsMTAg
QEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwog
fQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7Ci19Ci0K
IHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgp
CiB7CiB9CiAKLU5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGUo
KQotewotICAgIG1fc291cmNlID0gYWRvcHRSZWYobmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2UpOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGU6OnNvdXJjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc291cmNlOwotfQot
Ci1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKLXsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBtX3NvdXJjZS0+cGxh
dGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBO
aWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDM4MjczYjA3MmI1
NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUuLjQyMjBhZGJhNWUyNTdmNzMzODUxNTVlMDM3
N2I0YzY4M2ViYmFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC02
NSw4ICs2NSw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotT0JKQ19DTEFTUyBD
QUxheWVyOwotT0JKQ19DTEFTUyBXZWJHTExheWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwogfQpAQCAtMTAzLDEzICsxMDEsMTQgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKTsKICAgICB2aXJ0dWFsIH5H
cmFwaGljc0NvbnRleHRHTE9wZW5HTCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRm
b3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdPYmo7IH0KICAgICBzdGF0aWMgR0NH
TGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoR0NH
TGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJhd2luZ0J1ZmZl
clRleHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwot
I2Vsc2UKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7Cisj
ZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgLy8gRklYTUU6IE1pZ3JhdGUgdG8gbGF5
ZXJzIHRvIHN1YmNsYXNzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldCgpOwpAQCAtMTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHRleElt
YWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
aW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdu
bWVudCA9IDQpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMu
CiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAKICAgICAvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgSU9T
dXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNl
KCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJp
bmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBy
ZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlMjg1MWMyZTNkMjIxNzcxNjk0YmRk
NmYxMmYwZTVmNzg5OWM3NTViLi4wYTZmNWNjMzEyNDI1MGJlYmZiOGVkMDZkYWU1MzExMDA3NmE0
NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNw
cApAQCAtNjYsNiArNjYsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2Ug
eworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIgZmluYWwgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworcHVibGljOgorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7Citwcml2
YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOworICAgIC8vIEZJWE1FOiBtb3ZlIG1vcmUgcGxhdGZvcm0tc3BlY2lmaWMg
cHJvcGVydGllcyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggdG8gaGVyZS4KK307CisK
K2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkpKTsK
KyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJy
aWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9Citw
cml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUmVmPEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChXVEZN
b3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcj4gbV9jb250ZXh0OworfTsKKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKQogewogICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkID0gZmFsc2U7CkBAIC04NSw3ICsxMjYsNyBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0RwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENyZWF0ZSB0aGUg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGluIG9yZGVyIHRvIGVzdGFibGlz
dCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KLSAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykpOworICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
YXR0cmlidXRlcykpOwogCiAjaWYgVVNFKExJQkVQT1hZKSAmJiBVU0UoT1BFTkdMX0VTKSAmJiBF
TkFCTEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYgR0xFUzMgd2FzIHJlcXVlc3RlZCBidXQgY2Fu
bm90IGJlIHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZDhmNzA1
ZDBhZjU5ZjZiMjM2ODM4YjhlNTA2NWI2YjBkZTAwM2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVN
YXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Zyb21EaXNw
bGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4m
JiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlE
ZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9pZCBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKIHsKICAgICBp
ZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2ZmYWEx
ODYxMjk4Li4yZjQ1OThkYzBhOTJiNGMzY2Y2M2ZhNzY5ZGRkNzlhMDhhYjE4NjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNU
b1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBv
c2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uYTNiZjVm
M2JhMGYzMmFjNDM4MDA4NmNjYzdjM2Y0YzQ2ZmMxZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNp
bmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00
OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlE
ZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTVi
MDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEyYTk4NTJlMTBlY2FlYjBkMDU0
OWY5Y2NkNzQwOTlkYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRE
aXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXllcihSZWZQdHI8R3Jh
cGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihS
ZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0ZDUx
ZC4uODNlOWJiZTY2NjIyNWMxODc3ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyAr
MTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNv
bnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIo
KS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0g
Q2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50
KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4
dCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1M
YXllcihjb250ZXh0LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5
ZXJQdXJwb3NlOjpDYW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250
ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKIAog
ICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0wuaAppbmRleCAxZWVlMThkNjJmMDUwOWYwMDlmMzRjM2VkZTY4ZDM1ZTBkMDg5
NjUzLi4xMDJlZTJmYWE0NzY5NzNlZDI4ZTc1ZDJmMjhlZGVhNjIzNDdkNzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Ci0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZl
cigpIHsgcmV0dXJuIG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOyB9
CiAgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4u
bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAKaW5kZXggZGMyZmFiZDRlZjU1Zjc4MzE3MjcwYzMyMjEwMjNlMzg2MWU4MDcxZC4uMTZi
ZGZkZmY5ZDVkMzlmYWVkOTI2YTE1Mzc4NDRjZDUyYWM1NTU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOgogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9
IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0
OworICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZl
cigpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFya0Rp
c3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURF
TlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3
ZjlmNGEzYmU5OTZhZDQ1MWQwMTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5
NTk5MjI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50cyhX
VEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsK
IAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsK
KyAgICAgICAgcmV0dXJuIG1fYnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAogICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVj
NTZjZTE3NTM0YjExZmNmYjVhNDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAog
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAg
IG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2Fy
ZCgpOwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVm
ZmVyLmRpc2NhcmQoKTsKQEAgLTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwg
bV9pbmNsdWRlRGlzcGxheUxpc3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7
Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNl
OgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAg
ICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9
IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJh
Y2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVu
YWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZm
ZXJIYW5kbGU7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlM
aXN0SGFuZGxlOwpAQCAtMjIwLDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9i
dWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIs
IG1fYmFja0J1ZmZlcik7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpA
QCAtMjU3LDYgKzI0MCwxMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0
c1BhcnRpYWxSZXBhaW50KCkKICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5j
bHVkZURpc3BsYXlMaXN0OjpObzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9idWZm
ZXJIYW5kbGUgPSBXVEZNb3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29y
ZTo6UmVnaW9uKCk7CisgICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1
ZmZlckZsdXNoZXJzLnNpemUoKSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0
KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNr
aW5nU3RvcmUgPSBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwog
CisgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3Bs
YXkobV9sYXllcikpIHsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
TGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKwogICAgIC8vIE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRp
bGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21l
cyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQs
IGZhbHNlKTsKIApAQCAtMzI3LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zy
b250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5k
aWYKIAorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Cisg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVy
SGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNf
Y2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAg
ICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5
NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZh
MTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkg
KzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9u
KCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQg
IiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNv
bnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQt
aWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2
M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQx
Y2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiAr
Mjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRp
ZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5M
YXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3Vz
dG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgot
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6
CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJu
IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5
ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVy
TGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM5ZDA3NGY0MzExMDJjZjQ3
ZGY4MDFhY2QyNTc5MzIwOTAyZWEwNGMuLjcyMzkzZTRmZjU5ZTc2ZWJkNzliMzYxMGIzMzQzOTFk
NmM2NjkxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAg
LTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRo
VmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAt
NzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhv
c3QpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJh
d2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVz
Lmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDVkYjU2MTNmOGQ2YzA4OGNhYzcxNmQwODU3YTg3NjA5OWYw
YmMyY2MuLjkyNjIwYTNiNjk3OTE5MjNiMGE5MDZmN2NkZTVkNzVlN2JlZjlhYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDkxMSw2
ICs0OTExLDcgQEAKIAkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZl
UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNl
aXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIx
N0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMx
MjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUu
LmNjNTNlOWYyZjFjZWZlYTcxNjE4NWQ0OGYwMDA4ODcwYjE1MjNjYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0z
MiwyNCArMzIsNjMgQEAKICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMu
aCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0g
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2Vi
Q29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUo
aXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxE
ZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rp
c3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50
cyhudWxscHRyKTsKKyAgICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXlC
dWZmZXIoY29uc3QgTWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAg
IGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlC
dWZmZXIgJiYgZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2Vu
ZFJpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9
IGRpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50
c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKyAgICBjb25zdCBib29sIG1faXNP
cGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIE1hY2hTZW5kUmln
aHQgbV9kaXNwbGF5QnVmZmVyOworfTsKIAorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewor
cHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmlu
YWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgsMzAgKzk3LDI0IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
IWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgewor
ICAgIH0KKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwog
ICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5k
ZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0
TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2
aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewogICAg
IGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZm
ZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1w
bGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6
Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwg
V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0
cnVlKTsKQEAgLTEwMCwyNiArMTMzLDE2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1
ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlz
cGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2Vi
R0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RG
TW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7
CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKG1f
ZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkpOwogfQogCiB9CiAKIFJlZlB0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwg
YXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1
dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2
ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi41ZWYwNTJlZDQ4Yjc0MmNhNDA4Y2Y3MDliNTg4MWY1ZTZmOTFj
ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3dj
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0Mu
Y3BwCkBAIC0zMywzMyArMzMsNTAgQEAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRp
c3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxh
eWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRp
c3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAgfQorICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5
ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCisg
ICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsK
K307CisKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1Ymxp
YyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNw
bGF5KCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7
IH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNh
bXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKLQotICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVy
OworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVBy
b2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAs
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVn
YXRlOjpjcmVhdGUobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJE
aXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmll
bmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkK
LSAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEwLi41OGI2
YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMsMTEgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5iYWNraW5n
U3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3duZXIoKSAm
JiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJvcGVydGll
cy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJv
cGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNo
YW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmIG1f
cHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0
b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5n
ZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogCkBA
IC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRl
bnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKENG
VHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3BlcnRpZXMu
YmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFj
ZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVu
c3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENv
bnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNl
SGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJl
QmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVu
dHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1
ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdkNTk4Y2Ey
MTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVh
Y2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lmIEhBVkUo
SU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmln
aHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmljYXRpb25G
aWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApp
bmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5OTBiYzI1
ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2IEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXll
ckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3Jt
TGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEzMDhlNDhm
NGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAt
MzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9p
bnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNB
TGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5
ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpu
ZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXll
clR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25l
ciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAog
ICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJf
ZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBl
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5w
b3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXll
ci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5h
bmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0
b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHBy
b3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2
IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5
Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMo
W1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29w
eWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBj
b3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVu
dHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3Rd
OwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpz
ZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQw
NWY0Li5lNmYxOGNhOGIxZjE3MTllMzViMDU1OTY1MTg4MGRhM2VlNTA4YjljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJX
Qy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENv
bnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UpCit7
CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlz
cGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIEdyYXBo
aWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3Bs
YXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggODYwNmVlNDQzMTI5NjJlYWJlNzQ0YWU0YjljZjc0OTg3NzdiNjFiNC4uMjk2MzYy
NWYxMzk2ZTZhYTZiNjgwY2UxNjg1OGVmNmMyZDc5ZGYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTE4
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2Eg
V2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8v
ODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBu
ZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEt
MTEtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFtHTElCXSBBZGQgbmV3IHRlc3QgY2FzZSB0byAvanNjL2NsYXNzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXgg
OTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3ZTI0ZDVhYmE3ODNmNi4uOTUxNDkwMTg1ZDdmNGMy
YWY5ZGFlYmY3NGIwYTJkOGIxM2NiYzlmNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMzUsMTMgKzM1LDE0IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ugewot
Y2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wgeworY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwg
OiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRy
aWJ1dGVzKSkpOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIHByaXZhdGU6CiAg
ICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92
ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445067</attachid>
            <date>2021-11-23 22:34:59 -0800</date>
            <delta_ts>2021-11-24 04:57:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211124083456.patch</filename>
            <type>text/plain</type>
            <size>109809</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uNTA0ZmZkYjJlZjE3OTNmODM1ZmRmMDliN2ViODNm
OTFmOTdhYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5cGVy
bGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDhl
MThhZjI5OWM2OTdkNDc3YTJjYjE0MTIzZDk3YjA2OThkMjkuLjNjOGZlODE4Nzk2YTNkNWY3MmM3
Y2U2YmEzNWQyOTUxZTRlOTE2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTEt
MTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2Nv
YSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6
Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAg
ICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJv
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBj
b250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAg
ICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1
ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgor
ICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2Ug
ZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRz
IG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0
aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhp
Y3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTExLTE4
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDliNTc4NjllNjkyY2ViZGY1NTEyZDVjOTZmOGMxN2FmNTYxZmY3NWYuLmU5
YTRhNzdmZjUxYzE4NThlYjcyNzZkNGVmOTIzMzgxNzA5ZGE2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAxMzY4ODAzYmE0MDdmZGE4MTcwMTk5YWYxMGJi
NjNmMTMwMGIzN2EzLi5lNmY1YzhmNjY5ODJhZjQ0ZTM0ZjlhMGJjMmM2OWFjODg1YjA4OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGll
c0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZDkzMzBiY2EzZmFl
ZGJhM2FhNDIyZGE0NmMxMjY0YTM1YzkwODhmLi5hMWY3MjI1OGZjZjYwOGRmMjdhODYyMDlmYTgw
MzE4ZjkwNDVlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAyMiw2ICsyMDIyLDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxYTQ2Njg2Zjc4Y2RjYjIzOGJh
ZDVmMmFjMzJhNzJjNTQxNzQ2M2RlLi44YTcxZDJjZDAxMDllZDE4NGZmODRhMTcyOGJjMzMzYjEx
OTdjZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MCw3ICszOTAsNiBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXgg
OWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgz
Yzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4
ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwog
X09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xB
U1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNT
XyRfV2ViR0xMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRf
V2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0
MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhp
dFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
dGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2Fj
dGlvbgogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVs
ZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xM
YXllci5tX2xheWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmlt
cAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMmVh
ZjZhZWJkMDE0M2QxYTYwNTU3OTU3NTZiMWYxYzQ1ODUxOTguLjExZGU4NmU2OGQ5MDI1ZDY1MzIw
NmFhODk2MzI0NTY3ODIzODE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzQsNyArMTQzNCw2IEBACiAJCTQ5RUNFQjcw
MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUQxNDExMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87
IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2
QTcxMTggLyogV2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFB
QUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMw
MDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMzYxLDggKzIzNjAsMTAgQEAKIAkJN0FGOUIyMEYxOENGQjVG
NDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVn
aW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1
NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMx
QUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMg
LyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5
MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcy
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBC
MEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA2NCw4ICs5MDY1LDYgQEAKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYx
QzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0Ux
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkw
MEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTAzNSw2ICsxMTAzNCw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA0NCw2ICsxMTA0NCw3
IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VF
eHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkEx
QkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0Nv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGls
aXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc5NDQsNiArMjc5
NDUsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTky
MTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0
RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJ
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBA
IC0yODI1NCw4ICsyODI1Nyw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdl
YkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAv
KiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUw
MDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZC
RjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgy
QTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYx
OTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSAqLywKQEAgLTMyMzAyLDYgKzMyMzAzLDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYxNyw2ICszMzYxOSw3IEBACiAJCQkJMEY1
ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4NDUsNyArMzY4NDgsNiBAQAogCQkJ
CTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVD
IC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1
NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5
RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNj
ZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkw
YjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJm
ZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1l
bnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1
cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXll
ciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1Jl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBs
YXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4u
MGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vo
b2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFt
X2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMzM5MjVi
YzZhYzhkODdiNDEwNmIwNjMxZWQzNDI5MDM5YTc4YWZlNC4uN2IzMDgxM2FhOWIwN2E2NGFhYTRm
ZGFiNmUxNWFiMmYxMjhkY2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDQ1LDkgKzY0NDYsMTEgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9
CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgp
CiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJl
c29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUy
NGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMw
MzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBA
IHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBj
b250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZWRhYTRjZTVlYTcyZTczMGJjNTI1
NDZjNzAwNmVkMjM3MjczOTYwZC4uM2Y5MDNjYjljNTlkNmY4ZGFiNWQ2MTI3MGVlZGQxZDU2NzY3
NWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhh
KERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1
YTdkZjFiZmIwYzRiMmIyNjJjNy4uMWJiNzdmNDc3MWY4YmVkYzIwY2M4MGE3MDc0NjMzOTExZmU3
NzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0
aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVk
NWZiMjUyYmUxOGI5ODk5Yy4uMTYxZTNiOTdiNTg5ZGRhMDA3ODQ5Y2Q4MDg3ZWE5NTZiOTUyMDll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsK
K2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdl
OwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAg
cHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRl
bnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25z
dCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwo
UmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyMzA2ZjgwNDFiNDA4
YTJjZmMyNTc5OWMxYTIyY2ZhNjI2MWY3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6d2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWJlOGE4NWM2NzM5N2MyMTczZTE1ZDY1Zjk5
NDgyYWQ0NTVlMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0
dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNy
ZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVu
dHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxh
dGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQ
aXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUu
aAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQw
YWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1M
YXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdl
QnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBw
cm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJ
bWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdv
cmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLjc1YWEyMTk4ZGZiYTA0
NDUzMTEyMmM0N2MxNWMzNmVhMzRiMjgxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlz
dC5oIgpAQCAtMTM0OCw2ICsxMzQ5LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXll
ciAmJiBwcm92aWRlciA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkg
ZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0
Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBh
Y2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdp
bmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNBOjpjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAt
MTg3OCw2ICsxOTA0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJM
b2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCku
bG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5k
aXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBo
aWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRz
TGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9y
aWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAg
ICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7
CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpA
QCAtNDQxMiwxOSArNDQ1MSwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJU
eXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBj
bGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0K
IAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBo
aWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJl
dHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRp
b25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
b250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAo
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAg
ICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2
YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uNTBjYjlmYjkzNDVjNmU1MDdlMGU4
N2FjMzMwNGExYzJiZGEzMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0xOTMsNiArMTk1LDgg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IGRvdWJsZT4+IGFjY2VsZXJhdGVkQW5pbWF0aW9uc0ZvclRlc3RpbmcoKSBjb25zdCBmaW5hbDsK
IAorICAgIGNvbnN0ZXhwciBzdGF0aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uOjpUb3BEb3duOworCiBwcml2YXRlOgogICAgIGJvb2wgaXNHcmFwaGljc0xheWVyQ0Eo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTIxMiw2ICsyMTYsOCBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCk7IH0KICAgICBib29sIHBsYXRmb3Jt
Q0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRyYXdzQ29udGVu
dCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNE
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIG92
ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJuIGxheWVyRGlkRGlzcGxheShsYXllcik7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5lZWRzVG9SZXZh
bGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBwbGF0Zm9y
bUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzAwLDEwICsz
MDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1aXJlc1RpbGVkTGF5ZXIoZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRh
dGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0OwotCi0gICAgdm9pZCBzZXR1
cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CisgICAgdm9pZCBzZXR1cENvbnRlbnRz
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
ID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwogICAgIFBsYXRmb3JtQ0FMYXllciogY29u
dGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQogCiAg
ICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBsYXRmb3JtQ0FMYXllciYsIFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYp
OwpAQCAtNjQ0LDYgKzY0Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQp
CiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9kZWw7CiAjZW5kaWYKKyAgICBSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBtX2NvbnRlbnRzRGlzcGxheURl
bGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYW5pbWF0aW9u
czsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zv
cm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhl
OWRkYTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIwNjExYWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXllckxheWVyOwog
dHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYKIAorbmFtZXNw
YWNlIFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJpZ2h0OworI2Vu
ZGlmCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgs
NiArNTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsKIAorI2lmIEhB
VkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0
Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7CkBAIC0xOTAs
NiArMjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAK
KyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhj
b25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0
NTY2ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
Q0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRjZDg1NWVjNWNk
MTE0OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDli
MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2ICsxMjAsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBD
RlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
KENGVHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRD
b250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAK
ICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5
YmYyODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5
NTMwMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAs
NiBAQAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxp
bmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0cmFzLmgiCi0j
aW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0xvY2su
aD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjExLDkgKzIxMSw2
IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXll
clR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlkZW9Db250YWlu
ZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2ViR0xMYXllciBj
bGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwot
CiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIzMSw3IEBAIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJU
eXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBl
U2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6Cisg
ICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xh
c3MgPSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExh
eWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZv
cm1DQUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1ld29ya0F2YWls
YWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNs
YXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyQ29jb2Fz
IHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBM
YXllclR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3Nd
OwpAQCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbklu
aXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlv
bnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5
ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIg
fHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5
cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5l
ckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAgICAgW21fbGF5
ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFttX2xheWVyIHNl
dERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hhcmVkXV07CkBA
IC03OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRz
KENGVHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKyNp
ZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRz
KGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRDb250ZW50cyhz
dXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQor
eworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsKK30KKyNlbmRp
ZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxv
YXRSZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IGZiNzIzZGQ0MjJkZTli
OWRhZGE5ZTRjYjg5N2QwNjFjYmU2ZDYwM2UuLjUxYmUzYmU3ODA3NjI4M2Q0Y2RlZGY1OTQ5Yzc3
OGIxMWNhYTc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQpAQCAtNDM0LDExICs0MzQsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjppc1Zh
bGlkKCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3
aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpCiB7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlclRleHR1
cmVUYXJnZXQgPT0gLTEpCkBAIC03MzQsNyArNzI5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KIH0KIAotCiAjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmFzQ1YoKQogewpAQCAtNzk2LDYgKzc5MCwxNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQogICAg
IGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAorSU9TdXJmYWNlKiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkKK3sKKyAgICBtX3N3YXBDaGFpbi5tYXJr
RGlzcGxheUJ1ZmZlckluVXNlKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2
MzllYTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBs
YXllciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJm
YWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRp
bzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09w
YXF1ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVl
MjQzZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNz
TGF5ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1D
QUxheWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRo
RGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZToo
Ym9vbCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2Vs
Zi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09w
YXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBp
eGVsUmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJm
YWNlIGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0
YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8g
aW4gWS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5
LCBzaW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11
c3QgYWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhh
cHBlbnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0z
RCl0Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwg
LTEsIDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAg
W3N1cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0K
LS0gKHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhl
IGNvbnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1
dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxh
eWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVy
KCkpCi0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3Bs
YXkobGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlBy
b2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KaW5kZXggMjU2MjVlZGJmZTI1NGUzNzVmZWYxNjk4MTY5ZjUyZWZkNGFhNzcyMi4uMTc0
NGQ2OWNhOTJmOTIzZWE1OGMyYzljYWI5MDEyMDg5MWI2NTBhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI5LDUz
ICsyOSw3NSBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5h
Z2VyLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMg
UmV0YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVy
PiBsYXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFk
b3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmli
dXRlcy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7
Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNl
bmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19
CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxv
YXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAg
ICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikg
ZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAg
ICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2
b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9k
aXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVu
dHMobnVsbHB0cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
OjpCb3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSog
ZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAg
ICAgICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5z
dXJmYWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZh
Y2UoZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJv
b2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShp
c09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7
CisgICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2Nv
bnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVm
ZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgdHlwZSB0aGF0IGlzIHVzZWQg
d2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFz
cyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0woKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0K
ICAgICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9
CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRl
cykKLSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihhdHRyaWJ1dGVzKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKLQorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOwogfTsKIAogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNw
bGF5QnVmZmVyKCkuc3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJl
dHVybjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVy
IHNldENvbnRlbnRzOnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExh
eWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5
QnVmZmVyKCkpOwogfQogCiB9CkBAIC05MCw3ICsxMTIsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0RwogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5h
ZGRDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwotCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGll
cy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CmluZGV4IDQwNzI3MDQzZmQxMmQ2MmE0Y2JkN2RiYjU5ZTQxMTYwYTI4ZGRmMjIuLjMyNmYwNDMy
YjQ4NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAKKyNpbXBvcnQg
IkNvbG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8
d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2
MDNjNTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAt
ODEsOCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXll
ciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9f
YnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBs
YXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtz
dXBlciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyRHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBz
ZXROZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dS
ZWN0KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25l
cigpKSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0
Zm9ybUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUlu
UmVjdDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1D
QUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMs
NiArMTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OmluZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAg
IH0KIH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwog
I2VuZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07
CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxh
eWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXll
ci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVy
RGlkRGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChv
d25lciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQo
KSkpCisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0
KCkpOworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikK
KyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0
YTEzOGYwM2I5MzRkYzExZTI5ZGUzNGQuLmY0MGQ2MWUxMzc2NDZhMjYyNDBjYjVlMDE0ODRmYTUy
OTcxZWI3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQs
MTYgKzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZp
bmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3Vy
Y2UoKTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2
b2lkIGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6
CisgICAgLy8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMu
CiAgICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8
Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKQEAgLTYyLDE2ICs2NCwzNSBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2Ns
YXNzIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlKCk7Ci0gICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVs
dDsKLQorICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJl
ZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29zaWFM
YXllcikpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVm
UHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBzb3VyY2UoKSBjb25zdCBmaW5hbDsKLSAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUGlwZVNvdXJj
ZURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8Q29udGVudExheWVyPiYmIG5pY29zaWFMYXllcikKKyAg
ICAgICAgOiBtX25pY29zaWFMYXllcihXVEZNb3ZlKG5pY29zaWFMYXllcikpCisgICAgeworICAg
IH0KKyAgICBSZWZQdHI8Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKK307CiAKLSAgICBS
ZWZQdHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CitjbGFzcyBOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitwdWJs
aWM6CisgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCisgICAgICAgIDogbV9zb3VyY2UoYWRv
cHRSZWYoKm5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKSkKKyAgICAgICAgLCBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpKQorICAgIHsKKyAgICB9CisgICAgLy8gSW1h
Z2VCdWZmZXJQaXBlIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3Vy
Y2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlLnB0cigpOyB9CisgICAg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5wdHIoKTsgfQorcHJpdmF0ZToKKyAgICBSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU+IG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKQpAQCAtMTM1LDMwICsxNTYs
MTAgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPElt
YWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwogfQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7Ci19
Ci0KIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCgpCiB7CiB9CiAKLU5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGUoKQotewotICAgIG1fc291cmNlID0gYWRvcHRSZWYobmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2UpOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGU6OnNvdXJjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc291cmNlOwot
fQotCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKLXsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBtX3NvdXJjZS0+
cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDM4MjczYjA3
MmI1NmQzZmRhMmJjZGUzNDhiM2UwZjc0MmMyMDA1ZTUuLjQyMjBhZGJhNWUyNTdmNzMzODUxNTVl
MDM3N2I0YzY4M2ViYmFkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC02NSw4ICs2NSw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotT0JKQ19DTEFT
UyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJHTExheWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOwogfQpAQCAtMTAzLDEzICsxMDEsMTQgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0
ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKTsKICAgICB2aXJ0dWFs
IH5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdCB7IHJldHVy
biBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBs
YXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdPYmo7IH0KICAgICBzdGF0aWMg
R0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQo
R0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJhd2luZ0J1
ZmZlclRleHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQp
OwotI2Vsc2UKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7
CisjZW5kaWYKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgLy8gRklYTUU6IE1pZ3JhdGUgdG8g
bGF5ZXJzIHRvIHN1YmNsYXNzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSBkcmF3aW5nQnVmZmVy
VGV4dHVyZVRhcmdldCgpOwpAQCAtMTQ0LDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHRl
eEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFs
aWdubWVudCA9IDQpOwogI2VuZGlmCiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBvdmVycmlk
ZXMuCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAKICAgICAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCk7CisgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlcklu
VXNlKCk7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5k
ZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlMjg1MWMyZTNkMjIxNzcxNjk0
YmRkNmYxMmYwZTVmNzg5OWM3NTViLi4wYTZmNWNjMzEyNDI1MGJlYmZiOGVkMDZkYWU1MzExMDA3
NmE0NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
LmNwcApAQCAtNjYsNiArNjYsNDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3Bh
Y2UgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworcHVibGljOgorICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7Citw
cml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOworICAgIC8vIEZJWE1FOiBtb3ZlIG1vcmUgcGxhdGZvcm0tc3BlY2lm
aWMgcHJvcGVydGllcyBmcm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggdG8gaGVyZS4KK307
CisKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWY8R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUoY29udGV4dCkp
KTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92
ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICB9
Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUmVmPEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcj4mJiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChX
VEZNb3ZlKGNvbnRleHQpKQorICAgIHsKKyAgICB9CisgICAgUmVmPEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcj4gbV9jb250ZXh0OworfTsKKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1MYXllckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworfQorCiBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqKQogewogICAgIHN0YXRp
YyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CkBAIC04NSw3ICsxMjYsNyBAQCBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0RwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENyZWF0ZSB0
aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGluIG9yZGVyIHRvIGVzdGFi
bGlzdCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KLSAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdFJlZihuZXcgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcykpOworICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIoYXR0cmlidXRlcykpOwogCiAjaWYgVVNFKExJQkVQT1hZKSAmJiBVU0UoT1BFTkdMX0VTKSAm
JiBFTkFCTEUoV0VCR0wyKQogICAgIC8vIEJhaWwgaWYgR0xFUzMgd2FzIHJlcXVlc3RlZCBidXQg
Y2Fubm90IGJlIHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZDhm
NzA1ZDBhZjU5ZjZiMjM2ODM4YjhlNTA2NWI2YjBkZTAwM2U4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1
cmVNYXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMp
OwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Zyb21E
aXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7Cisg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3Bs
YXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKIHsKICAg
ICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2Zm
YWExODYxMjk4Li4yZjQ1OThkYzBhOTJiNGMzY2Y2M2ZhNzY5ZGRkNzlhMDhhYjE4NjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiArMjMsNyBAQAog
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVu
dHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uYTNi
ZjVmM2JhMGYzMmFjNDM4MDA4NmNjYzdjM2Y0YzQ2ZmMxZGVjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rv
cnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIK
ICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBA
IC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAor
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxl
Z2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3Bs
YXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRl
LT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1
ZTViMDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEyYTk4NTJlMTBlY2FlYjBk
MDU0OWY5Y2NkNzQwOTlkYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91
bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXll
clB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVn
YXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRl
bnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXllcihSZWZQdHI8
R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXll
cihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0
ZDUxZC4uODNlOWJiZTY2NjIyNWMxODc3ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODks
NyArMTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9u
KGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVy
ZXIoKS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkg
PT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVt
ZW50KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVt
ZW50KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29u
dGV4dCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihjb250ZXh0LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRz
TGF5ZXJQdXJwb3NlOjpDYW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsK
IAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0wuaAppbmRleCAxZWVlMThkNjJmMDUwOWYwMDlmMzRjM2VkZTY4ZDM1ZTBk
MDg5NjUzLi4xMDJlZTJmYWE0NzY5NzNlZDI4ZTc1ZDJmMjhlZGVhNjIzNDdkNzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVBy
b2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Ci0K
KyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcigpIHsgcmV0dXJuIG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgp
OyB9CiAgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkgeyByZXR1cm4gbV9zd2FwQ2hh
aW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKaW5kZXggZGMyZmFiZDRlZjU1Zjc4MzE3MjcwYzMyMjEwMjNlMzg2MWU4MDcxZC4u
MTZiZGZkZmY5ZDVkMzlmYWVkOTI2YTE1Mzc4NDRjZDUyYWM1NTU5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV1RGOgogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9j
b250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZl
ciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJp
Z2h0OworICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1
ZmZlcigpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFy
a0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBf
SURFTlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1
MzE3ZjlmNGEzYmU5OTZhZDQ1MWQwMTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5
MzY5NTk5MjI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50
cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXko
KTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
cjsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVy
Rmx1c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45Mzdh
OTVjNTZjZTE3NTM0YjExZmNmYjVhNDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMK
IAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogewor
ICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlz
Y2FyZCgpOwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNr
QnVmZmVyLmRpc2NhcmQoKTsKQEAgLTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIg
PDwgbV9pbmNsdWRlRGlzcGxheUxpc3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
KSB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJm
YWNlOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAg
ICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRs
ZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4o
KmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9i
dWZmZXJIYW5kbGU7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9C
VUZGRVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3Bs
YXlMaXN0SGFuZGxlOwpAQCAtMjIwLDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAg
bV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZm
ZXIsIG1fYmFja0J1ZmZlcik7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikg
ewpAQCAtMjU3LDYgKzI0MCwxMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBw
b3J0c1BhcnRpYWxSZXBhaW50KCkKICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0g
SW5jbHVkZURpc3BsYXlMaXN0OjpObzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6c2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9i
dWZmZXJIYW5kbGUgPSBXVEZNb3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2Vi
Q29yZTo6UmVnaW9uKCk7CisgICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9u
dEJ1ZmZlckZsdXNoZXJzLnNpemUoKSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250
ZXh0KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVC
YWNraW5nU3RvcmUgPSBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMp
OwogCisgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobV9sYXllcikpIHsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyTGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIC8vIE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9s
YXRpbGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBj
b21lcyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJv
bnQsIGZhbHNlKTsKIApAQCAtMzI3LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZCht
X2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAj
ZW5kaWYKIAorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6
CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+
ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVm
ZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0
aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5k
KS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAg
ICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFh
N2Y5NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2Vh
NzZhMTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1
LDkgKzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0
aW9uKCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQt
aWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIg
KGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRl
eHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFi
YWY2M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1
ZmQxY2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYs
NiArMjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxh
eWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNl
bmRpZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShj
b25zdCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVy
OgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0
dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMu
bGF5ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVu
ZGVyTGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM5ZDA3NGY0MzExMDJj
ZjQ3ZGY4MDFhY2QyNTc5MzIwOTAyZWEwNGMuLjcyMzkzZTRmZjU5ZTc2ZWJkNzliMzYxMGIzMzQz
OTFkNmM2NjkxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
QEAgLTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJl
bW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VX
aXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpA
QCAtNzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVt
b3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJl
ZUhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1f
ZHJhd2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0
aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVkYjU2MTNmOGQ2YzA4OGNhYzcxNmQwODU3YTg3NjA5
OWYwYmMyY2MuLjkyNjIwYTNiNjk3OTE5MjNiMGE5MDZmN2NkZTVkNzVlN2JlZjlhYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDkx
MSw2ICs0OTExLDcgQEAKIAkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VS
ZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3Mjcx
ODIxN0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAv
KiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMx
MjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFl
YjUuLmNjNTNlOWYyZjFjZWZlYTcxNjE4NWQ0OGYwMDA4ODcwYjE1MjNjYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBA
IC0zMiwyNCArMzIsNjMgQEAKICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRp
ZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6
Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAg
V2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdh
dGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdp
bGxEZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwK
KyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5
ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRp
c3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyht
X2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250
ZW50cyhudWxscHRyKTsKKyAgICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KKyAgICB2b2lkIHNldERpc3Bs
YXlCdWZmZXIoY29uc3QgTWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
eyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3Bs
YXlCdWZmZXIgJiYgZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIu
c2VuZFJpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZl
ciA9IGRpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpOworICAgIH0KK3ByaXZhdGU6CisgICAg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50
c1NjYWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250
ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKyAgICBjb25zdCBib29sIG1f
aXNPcGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIE1hY2hTZW5k
UmlnaHQgbV9kaXNwbGF5QnVmZmVyOworfTsKIAorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkg
eworcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVz
LgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NW
KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgsMzAgKzk3LDI0IEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAg
eworICAgIH0KKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAot
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFk
b3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMu
ZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYg
TkRFQlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewog
ICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBh
dXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlC
dWZmZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFT
YW1wbGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29y
ZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4
ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpN
ZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVy
KSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3du
LCB0cnVlKTsKQEAgLTEwMCwyNiArMTMzLDE2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZl
ciA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUo
ZGlzcGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
d2ViR0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygp
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0g
V1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVy
KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkpOwogfQogCiB9CiAKIFJlZlB0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNW
YWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRy
aWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2
YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi5mYzg4ZjM3ODFlMTNlZDI5OWQ4MjM1YjJiOWQyMDY2MDUy
Mjk3NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0MuY3BwCkBAIC0zMywzMyArMzMsNTAgQEAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNz
IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBSZWY8UGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXIm
JiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAg
fQorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKKyAgICB9Citwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZv
cm1MYXllcikpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxh
dGZvcm1MYXllcjsKK307CisKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBm
aW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKIHB1YmxpYzoKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUucHRyKCk7IH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2
YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLQotICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9w
bGF0Zm9ybUxheWVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5k
KQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPiht
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAK
LVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVy
aW5nQmFja2VuZCkKLSAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1M
YXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3
NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDEx
ICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJh
bnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlm
IChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3Jl
ID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwg
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYg
KG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVy
dGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJh
Y2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJv
cGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNo
YW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJG
QUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdp
bmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5n
U3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7
CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlm
CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxv
YXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdj
MzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0
ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsK
LQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRN
aW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0
Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3
ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVy
PiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhk
ODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJM
YXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZv
cm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRl
KFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3du
ZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9
IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9y
bUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5
ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0
b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRz
ID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHBy
b3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54
LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHBy
b3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQ
b2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2lu
dFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0x
MjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9u
ZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgp
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBj
dXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVy
LgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUw
LDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3By
b3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNl
Ci0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNj
YzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTllMzViMDU1OTY1MTg4MGRhM2VlNTA4Yjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dy
YXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
V0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xh
eWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXll
clB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURl
bGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAg
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQor
CiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODYwNmVlNDQzMTI5NjJlYWJlNzQ0YWU0YjljZjc0OTg3Nzdi
NjFiNC4uMjk2MzYyNWYxMzk2ZTZhYTZiNjgwY2UxNjg1OGVmNmMyZDc5ZGYzMCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTExLTE4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAg
ICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJy
aWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuCisKIDIwMjEtMTEtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFtHTElCXSBBZGQgbmV3IHRlc3QgY2FzZSB0byAv
anNjL2NsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3ZTI0ZDVhYmE3ODNmNi4uOTUx
NDkwMTg1ZDdmNGMyYWY5ZGFlYmY3NGIwYTJkOGIxM2NiYzlmNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMzUsMTMgKzM1LDE0IEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgewotY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgeworY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wo
V1RGTW92ZShhdHRyaWJ1dGVzKSkpOwogICAgICAgICByZXR1cm4gY29udGV4dDsKICAgICB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0K
IHByaXZhdGU6CiAgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445089</attachid>
            <date>2021-11-24 04:57:12 -0800</date>
            <delta_ts>2021-12-01 00:30:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211124145710.patch</filename>
            <type>text/plain</type>
            <size>109850</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdiNWY2N2QyMGJjZDhj
MDRlMzgyZTgwZjJkYWRmYzYzYzkxNWUyNS4uYWJjYjAwNDdkNWQ1ZTZhY2ViMDUyOGFhMzFhNDFi
NmIwMWMxMGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0xOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEFOR0xFIE1ldGFsOiBUaGUgbWVtb3J5IGJhY2tpbmcgSU9TdXJmYWNlcyBv
ZiBmb3JtZXIgY2xpZW50IGJ1ZmZlciBwYnVmZmVycyBpcyBsZWFrZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTk0
OGUxOGFmMjk5YzY5N2Q0NzdhMmNiMTQxMjNkOTdiMDY5OGQyOS4uM2M4ZmU4MTg3OTZhM2Q1Zjcy
YzdjZTZiYTM1ZDI5NTFlNGU5MTZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMS0x
MS0xOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENv
Y29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRh
cjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCB0aGUgY2FwYWJpbGl0eSB0byBhc3NpZ24gSU9TdXJmYWNlcworICAg
ICAgICB0byBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY29udGVudHMuCisKKyAgICAgICAgTWFrZSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgdXNlIHRoZSBhZGRlZAorICAgICAgICBH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNw
bGF5KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpoYXNG
cm9udEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICBDaGFuZ2UgdGhl
IGNvbnRyYWN0IG9mIHdoYXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgc2VyaWFsaXplcyB0bwor
ICAgICAgICB0aGUgdHJhbnNhY3Rpb24uIEJlZm9yZSwgaXQgc2VyaWFsaXplZCB0aGUgZnJvbnQg
YnVmZmVyLgorICAgICAgICBBZnRlciwgaXQgc2VyaWFsaXplcyB0aGUgbV9idWZmZXJIYW5kbGUu
CisgICAgICAgIFRoZSBidWZmZXIgaGFuZGxlIGlzIHByb2R1Y2VkIGJ5IGRpc3BsYXkoKSBwaGFz
ZSBlaXRoZXIgYnkKKyAgICAgICAgZGVsZWdhdGVkIGRpc3BsYXkgc2V0dGluZyB0aGUgY29udGVu
dHMgb3IgZHJhd2luZyB0bworICAgICAgICBmcm9udCBidWZmZXIgYW5kIHRoZW4gYXNzaWduaW5n
IHRoZSBmcm9udCBidWZmZXIgaGFuZGxlLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlXQy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
OjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFw
aGljc0xheWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisKIDIwMjEtMTEt
MTggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVs
XSBhZGQgc3VwcG9ydCBmb3IgcGF1c2luZyBhbmQgcmVzdW1pbmcgYW5pbWF0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKaW5kZXggOWI1Nzg2OWU2OTJjZWJkZjU1MTJkNWM5NmY4YzE3YWY1NjFmZjc1Zi4u
ZTlhNGE3N2ZmNTFjMTg1OGViNzI3NmQ0ZWY5MjMzODE3MDlkYTYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCkBAIC0xMzEzLDYgKzEzMTMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
RmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDEzNjg4MDNiYTQwN2ZkYTgxNzAxOTlhZjEw
YmI2M2YxMzAwYjM3YTMuLmU2ZjVjOGY2Njk4MmFmNDRlMzRmOWEwYmMyYzY5YWM4ODViMDg4ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9u
RGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGFkOTMzMGJjYTNm
YWVkYmEzYWE0MjJkYTQ2YzEyNjRhMzVjOTA4OGYuLmExZjcyMjU4ZmNmNjA4ZGYyN2E4NjIwOWZh
ODAzMThmOTA0NWUxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDIyLDYgKzIwMjIsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDFhNDY2ODZmNzhjZGNiMjM4
YmFkNWYyYWMzMmE3MmM1NDE3NDYzZGUuLjhhNzFkMmNkMDEwOWVkMTg0ZmY4NGExNzI4YmMzMzNi
MTE5N2NkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkwLDcgKzM5MCw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRl
eCA5Zjg1ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1
ODNjODZkMjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcy
LDggKzIwNDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3
CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19D
TEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xB
U1NfJF9XZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1Nf
JF9XZWJMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMw
NjQxLDYgQEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9l
eGl0V2FybmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3
Ll90YXJnZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5f
YWN0aW9uCiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZp
ZWxkCi1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJH
TExheWVyLm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUu
aW1wCiBfT0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JK
Q19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWUy
ZWFmNmFlYmQwMTQzZDFhNjA1NTc5NTc1NmIxZjFjNDU4NTE5OC4uMTFkZTg2ZTY4ZDkwMjVkNjUz
MjA2YWE4OTYzMjQ1Njc4MjM4MTRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzNCw3ICsxNDM0LDYgQEAKIAkJNDlFQ0VC
NzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAv
KiBGaWx0ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaCAqLzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUVFRDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAq
LzsgfTsKLQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlF
MUFBRjVFN0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2
QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAw
NjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNjEsOCArMjM2MCwxMCBAQAogCQk3QUY5QjIwRjE4Q0ZC
NUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNWVFRS
ZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAzMzlG
MjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1
QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4
MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgx
NzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Qjcy
MEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjcy
MEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I3MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1
RjAyNkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC05MDY0LDggKzkwNjUsNiBAQAogCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUZDN0E0RjE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJl
c2hNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZC
RjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5
M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR0xMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYz
RTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBMERBMkZDMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQx
OTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEEwRkZBOUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMDM1LDYgKzExMDM0LDcgQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8q
IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAv
KiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyog
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyog
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDQ0LDYgKzExMDQ0
LDcgQEAKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI3MjVC
QTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNr
c01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBC
NzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdM
RVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRBMjcwNUM5NDkwMEVCMjEyNyAvKiBB
TkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVz
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQzI3MDVDOTQ5
MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0
aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzk0NCw2ICsy
Nzk0NSw4IEBACiAJCQkJMEY1ODBCMDkwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIu
Y3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmgg
Ki8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQu
aCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywKKwkJCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQg
LyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8sCiAJCQkJMUFDNjk1
OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJCQkJMEZB
MjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLywKIAkJ
CQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLywK
QEAgLTI4MjU0LDggKzI4MjU3LDYgQEAKIAkJCQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyog
V2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8sCiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNE
IC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4
RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlG
RkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTEx
QzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4
MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1
ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJN0Ix
NjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tICovLApAQCAtMzIzMDIsNiArMzIzMDMsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVy
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChudWxsKSBpbiBIZWFkZXJzICov
LAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0
RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjE3LDYgKzMzNjE5LDcgQEAKIAkJCQkw
RjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2QkNFMEUgLyog
R3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjg0NSw3ICszNjg0OCw2IEBACiAJ
CQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJh
bWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAv
KiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJC
RUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVDMzYyRDkyNUI0
QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3
QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmplY3QuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJkNWMyNWI2YmFlYTIyM2Y1NjdiLi43MmIy
Y2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZjZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0
dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRlcmVmQ2FudmFzQmFzZSgpOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxG
b3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhlbEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5k
ZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGViOTk3OGU4MDIzZS4uNWFlNzliZjBiOWUz
OTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCiAgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgeyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
KGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcikgeyBtX2hhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1Nzg2OGIwYTIzYjIyM2JkZGU5MWMwNzhk
YmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5YzQyYTRlZjBmOWQyODkxYWQ1NjEzNzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCBIVE1MQ2FudmFzRWxl
bWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMoKSBjb25zdAogICAgIHJl
dHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGJhc2UpOwogfQogCi1QbGF0Zm9ybUxh
eWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+
cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPmxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDljYmU0OTc2MGE2YzY2YTM4MzRkZjk5MTk5
Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0Mjk5NzRkMTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNQbGFj
ZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAh
IW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBpc0dQVUJhc2VkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAzMzky
NWJjNmFjOGQ4N2I0MTA2YjA2MzFlZDM0MjkwMzlhNzhhZmU0Li43YjMwODEzYWE5YjA3YTY0YWFh
NGZkYWI2ZTE1YWIyZjEyOGRjYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTIsNiArNTIsNyBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTY0NDUsOSArNjQ0NiwxMSBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzQ29udGV4dFVucmVjb3ZlcmFibHlMb3N0
KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9zdCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsK
IH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5
UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAgaWYgKGlz
Q29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZW1vdmVT
aGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCA2
NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUwNTgxNjA4Li5iNTQ1N2U3MTM3Zjg0MjZk
YzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODYsNyArMzg2LDcg
QEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAgICAgV2ViR0xDb250ZXh0R3JvdXAq
IGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEdyb3VwLmdldCgpOyB9Ci0g
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBlZGFhNGNlNWVhNzJlNzMwYmM1
MjU0NmM3MDA2ZWQyMzcyNzM5NjBkLi4zZjkwM2NiOWM1OWQ2ZjhkYWI1ZDYxMjcwZWVkZDFkNTY3
Njc1ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lmIEVOQUJMRShXRUJHTCkK
IAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03ODYsNyAr
Nzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAgICB9OwogCi0gICAgdmlydHVhbCBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaGFzQWxw
aGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBjNzVkYTU2YTgzNjE1NmNjMGQ1
ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li4xYmI3N2Y0NzcxZjhiZWRjMjBjYzgwYTcwNzQ2MzM5MTFm
ZTc3Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2ICs2MTMsMTAgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cit9CisKIHZvaWQg
R3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdp
ZHRoKSBjb25zdAogewogICAgIHdpZHRoID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjk1MDlmMThjY2I5NTk5MjNkZDlm
NWQ1ZmIyNTJiZTE4Yjk4OTljLi4xNjFlM2I5N2I1ODlkZGEwMDc4NDljZDgwODdlYTk1NmI5NTIw
OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuaW1h
dGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
OworY2xhc3MgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogY2xhc3MgSW1h
Z2U7CiBjbGFzcyBNb2RlbDsKIGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTUyMiw2ICs1MjMsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92ZSB0aGUgY29u
dGVudHMgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNv
bnN0IENvbG9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSk7CiAjaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Nb2Rl
bChSZWZQdHI8TW9kZWw+JiYpIHsgfQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllcklEIGNvbnRl
bnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIzMDZmODA0MWI0
MDhhMmNmYzI1Nzk5YzFhMjJjZmE2MjYxZjdhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKKworI2lmIFVTRShDQSkKKyNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ0EuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6fkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpID0gZGVmYXVsdDsKKworI2lmIFVTRShDQSkKK3ZvaWQgR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVu
dHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1YmU4YTg1YzY3Mzk3YzIxNzNlMTVkNjVm
OTk0ODJhZDQ1NWUyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5o
IgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgVVNFKENBKQorY2xhc3MgUGxhdGZv
cm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNwZWNpZmljIGludGVyZmFjZSBmb3Ig
YXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIuCisvLyBSZXNwb25zaWJsZSBmb3Ig
Y3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hvdyB0aGUgcGFydGljdWxhciBjb250
ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdyYXBoaWNzTGF5ZXIuCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShQ
bGF0Zm9ybUNBTGF5ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNlCisgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworI2VuZGlmCit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clBpcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlw
ZS5oCmluZGV4IDZlNmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2FlMTA5OTUwZTguLjNiZWQx
ZDBhZTZlMzkwMDM4MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHByb3ZpZGUgYSBQbGF0Zm9y
bUxheWVyIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1h
Z2VCdWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCisvLyBVc2VkIHRv
IHByb3ZpZGUgR3JhcGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2Vk
IEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEg
V29ya2VyIHRocmVhZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2VCdWZmZXJQaXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291cmNlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBS
ZWZQdHI8U291cmNlPiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSgpID0wOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5k
ZXggNTE5MGEzODY1NDMwMDcyMDA1MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uNzVhYTIxOThkZmJh
MDQ0NTMxMTIyYzQ3YzE1YzM2ZWEzNGIyODFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlM
aXN0LmgiCkBAIC0xMzQ4LDYgKzEzNDksMzEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBwcm92aWRl
ciwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBpZiAobV9jb250ZW50c0xh
eWVyICYmIHByb3ZpZGVyID09IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXll
ci0+c2V0T3duZXIobnVsbHB0cik7CisgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKKyAg
ICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CisgICAgaWYgKHByb3ZpZGVy
KSB7CisgICAgICAgIG1fY29udGVudHNMYXllciA9IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllciwgdGhpcyk7CisgICAg
ICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKKyAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CisgICAgICAgIC8vIEN1cnJlbnRs
eSBkZWxlZ2F0ZWQgZGlzcGxheSBpcyBvbmx5IHVzZWZ1bCB3aGVuIGRlbGVnYXRlZSBjYWxscyBz
ZXRDb250ZW50cywgc28gc2V0IHRoZQorICAgICAgICAvLyBiYWNraW5nIHN0b3JlIHNldHRpbmdz
IGFjY29yZGluZ2x5LgorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tpbmdTdG9yZUF0
dGFjaGVkKHRydWUpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFjY2VsZXJhdGVzRHJh
d2luZyh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+d2lsbERlbGVn
YXRlRGlzcGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CisKKyAgICBub3RlU3VibGF5ZXJz
Q2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3Jt
TGF5ZXJDaGFuZ2VkKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBQbGF0Zm9ybUxh
eWVyKiBHcmFwaGljc0xheWVyQ0E6OmNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0CiB7CkBA
IC0xODc4LDYgKzE5MDQsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
ckxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUodW5zaWduZWQgYmxhbmtQaXgKICAgICBjbGllbnQo
KS5sb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKGJsYW5rUGl4ZWxDb3VudCk7CiB9CiAKK2Jvb2wg
R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgJiYgbV9jb250ZW50c0xheWVyID09IGxheWVyOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIp
Cit7CisgICAgQVNTRVJUKG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUpOworICAgIEFTU0VSVChs
YXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUt
PmRpc3BsYXkoKmxheWVyKTsKK30KKwogc3RhdGljIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
IGxheWVyVHlwZUZvckN1c3RvbUJhY2tkcm9wQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0
b21BcHBlYXJhbmNlIGFwcGVhcmFuY2UpCiB7CiAgICAgcmV0dXJuIGFwcGVhcmFuY2UgPT0gR3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJvcCA/IFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDogUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKQEAgLTI3OTIsNyArMjgzMCw4IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3JtTGF5ZXIoKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBQbGF0Zm9ybSBsYXllciB3YXMgc2V0IGFzIG1fY29udGVu
dHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgot
ICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgIGF1dG8g
b3JpZW50YXRpb24gPSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID8gbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS0+b3JpZW50YXRpb24oKSA6IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOwor
ICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCksIG9yaWVudGF0aW9u
KTsKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENvbnRlbnRzTGF5ZXJQdXJw
b3NlOjpDYW52YXMpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7
CkBAIC00NDEyLDE5ICs0NDUxLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpjaGFuZ2VMYXll
clR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBuZXdMYXllclR5cGUpCiAgICAgICAg
IGNsaWVudCgpLnRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZCh0aGlzLCBpc1RpbGVkTGF5ZXIpOwog
fQogCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3Jh
cGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIq
IGNvbnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllciwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFR1cm4gb2ZmIGltcGxpY2l0IGFuaW1h
dGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGNvbnRlbnRzTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAjZW5kaWYKLQotICAgIGlm
IChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbjo6Qm90dG9tVXApIHsKKyAgICBpZiAob3JpZW50YXRpb24gPT0gQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgewogICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBmbGlwcGVyKAogICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwK
ICAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA5ZDQ0
ZjZhYjM4MGM4ODY2NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3Li41MGNiOWZiOTM0NWM2ZTUwN2Uw
ZTg3YWMzMzA0YTFjMmJkYTMxYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUwLDYgKzE1MCw4IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBjb250ZW50c0xheWVyRm9y
TWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzRnJv
bURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7
CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
b250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSBvdmVycmlkZTsKQEAgLTE5Myw2ICsxOTUs
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgZG91YmxlPj4gYWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yVGVzdGluZygpIGNvbnN0IGZpbmFs
OwogCisgICAgY29uc3RleHByIHN0YXRpYyBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24gPSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb246OlRvcERvd247CisKIHByaXZhdGU6CiAgICAgYm9vbCBpc0dyYXBoaWNzTGF5ZXJD
QSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMjEyLDYgKzIxNiw4IEBA
IHByaXZhdGU6CiAKICAgICBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29udGVudHNPcGFxdWUoKTsgfQogICAgIGJvb2wgcGxhdGZv
cm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHJhd3NDb250
ZW50KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBsYXRmb3JtQ0FMYXllckRlbGVnYXRl
c0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZv
cm1DQUxheWVyKiBsYXllcikgb3ZlcnJpZGUgeyByZXR1cm4gbGF5ZXJEaWREaXNwbGF5KGxheWVy
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1Jl
dmFsaWRhdGVUaWxlcygpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHBsYXRm
b3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDAsMTAg
KzMwNiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihmbG9hdCBw
YWdlU2NhbGVGYWN0b3IpIGNvbnN0OwogICAgIHZvaWQgY2hhbmdlTGF5ZXJUeXBlVG8oUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGUpOwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNl
dHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICB2b2lkIHNldHVwQ29udGVu
dHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gPSBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbik7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBj
b250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZUNsaXBwaW5nU3RyYXRlZ3koUGxhdGZvcm1DQUxheWVyJiwgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4mIHNoYXBlTWFza0xheWVyLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
Jik7CkBAIC02NDQsNiArNjQ3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKICAgICBSZWZQdHI8TW9kZWw+IG1fY29udGVudHNNb2RlbDsKICNlbmRpZgorICAgIFJlZlB0
cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGU7CiAKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRp
b25zOwogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5z
Zm9ybUFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDVkZjFhM2I2MWFiNWQ5N2VkNjNjOGFiMTg4
OGU5ZGRhOTJkMTU4MzQuLjhhMjFhMWQ1Y2Y0MThiYzBiODNhMmM5YWMwMjYwZjk2MjA2MTFhYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5oCkBAIC0zOSw2ICszOSwxMiBAQCBPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXI7
CiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKICNlbmRpZgogCituYW1l
c3BhY2UgV1RGIHsKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7Cisj
ZW5kaWYKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclBvb2w7CkBAIC00
OCw2ICs1NCwxMCBAQCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ7CiAKIHR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+PiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCitjbGFzcyBJT1N1cmZhY2U7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBs
YXRmb3JtQ0FMYXllciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTsKQEAgLTE5
MCw2ICsyMDAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpID0gMDsK
IAorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QmFja2luZ1N0b3JlQXR0YWNoZWQoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGll
bnQuaAppbmRleCA2Nzc4ZGU3MTljNTBlMWE0NWZjODI0NmQ3M2E5MDhhYmZiYWQxMzA2Li4xZTcy
YzQ1NjZlN2FmZWFiNjRkNjZkYTkwNmMwZjE5ZmZkODM5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGll
bnQuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDliMWIwMTEyMDEzNGNkODU1ZWM1
Y2QxMTQ4YzExMWVmZjdlMDZmZDMuLjgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3ZTA0
OWIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTIwLDYgKzEyMCwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVu
dHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNl
dENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYK
IAogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDM0ZTI1OTBmNTc3Mjk2YjIy
MzliZjI4NjgyZmM3NTZhYzY2OTAzYWEuLjJhNDVkZGM0NThkZTA2N2JhZGIwMWE1N2VkZmIyYjlh
Yjk1MzAzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC00MCw3ICs0
MCw2IEBACiAjaW1wb3J0ICJUaWxlZEJhY2tpbmcuaCIKICNpbXBvcnQgIldlYkFjdGlvbkRpc2Fi
bGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCIK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CkBAIC01NCw2ICs1Myw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTG9j
ay5oPgorI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCkBAIC0yMTEsOSArMjEx
LDYgQEAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6Omxh
eWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIoUGxhdGYKICAgICAgICAgJiYgWyhXZWJWaWRlb0NvbnRh
aW5lckxheWVyKilsYXllciBwbGF5ZXJMYXllcl0pCiAgICAgICAgIHJldHVybiBMYXllclR5cGVB
VlBsYXllckxheWVyOwogCi0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHTExheWVy
IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7
Ci0KICAgICByZXR1cm4gTGF5ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yMzQsNiArMjMxLDcgQEAg
UGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIExheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoK
KyAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgbGF5ZXJD
bGFzcyA9IFtXZWJTaW1wbGVMYXllciBjbGFzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0yNjUsMTAgKzI2Myw2IEBAIFBsYXRmb3JtQ0FM
YXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0
Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGlmIChQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZh
aWxhYmxlKCkpCiAgICAgICAgICAgICBsYXllckNsYXNzID0gUEFMOjpnZXRBVlBsYXllckxheWVy
Q2xhc3MoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXI6Ci0gICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNl
IExheWVyVHlwZU1vZGVsTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbQ0FMYXllciBjbGFz
c107CkBAIC0zMTAsNyArMzA0LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9u
SW5pdCgpCiAgICAgfQogICAgIAogICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5pbWF0
aW9ucyBvbiB0aGUgQ0FMYXllcgotICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBs
YXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xh
eWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCisgICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVy
VHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFp
bmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9s
YXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogICAgIGVsc2UKICAgICAgICAgW21fbGF5ZXIg
c2V0RGVsZWdhdGU6W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsK
QEAgLTc5Nyw2ICs3OTEsMTkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVu
dHMoQ0ZUeXBlUmVmIHZhbHVlKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAor
I2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIHNldENvbnRlbnRz
KHN1cmZhY2UuYXNMYXllckNvbnRlbnRzKCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUp
Cit7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgc2V0Q29udGVudHMoKnN1cmZhY2UpOworfQorI2Vu
ZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmIHZhbHVlKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZmI3MjNkZDQyMmRl
OWI5ZGFkYTllNGNiODk3ZDA2MWNiZTZkNjAzZS4uNTFiZTNiZTc4MDc2MjgzZDRjZGVkZjU5NDlj
Nzc4YjExY2FhNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCkBAIC00MzQsMTEgKzQzNCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omlz
VmFsaWQoKSBjb25zdAogICAgIHJldHVybiBtX3RleHR1cmU7CiB9CiAKLVBsYXRmb3JtTGF5ZXIq
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQogR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKIHsKICAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldCA9PSAtMSkKQEAgLTczNCw3ICs3MjksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogfQogCi0KICNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6YXNDVigpCiB7CkBAIC03OTYsNiArNzkwLDE2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCiAg
ICAgY3VycmVudENvbnRleHQgPSBudWxscHRyOwogfQogCitJT1N1cmZhY2UqIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9zd2FwQ2hhaW4u
ZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQoreworICAgIG1fc3dhcENoYWluLm1h
cmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBl
NjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVh
cnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBB
IGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4
ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXll
ci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhp
Y3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVl
Oihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBz
ZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRz
T3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNl
UGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1
cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRv
IHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0v
LyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtl
bHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQg
bXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0g
aGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9y
bTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAx
LCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAg
ICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0K
LQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0
aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAg
YXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9y
TGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3du
ZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlz
cGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbQppbmRleCAyNTYyNWVkYmZlMjU0ZTM3NWZlZjE2OTgxNjlmNTJlZmQ0YWE3NzIyLi4x
NzQ0ZDY5Y2E5MmY5MjNlYTU4YzJjOWNhYjkwMTIwODkxYjY1MGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjks
NTMgKzI5LDc1IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaCIgLy8gTk9MSU5UCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXIuaCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSB7CiAKLXN0YXRp
YyBSZXRhaW5QdHI8V2ViR0xMYXllcj4gY3JlYXRlV2ViR0xMYXllcihjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCi17Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5
ZXI+IGxheWVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGxheWVyID0g
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJpYnV0ZXMuYWxwaGFd
KTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW2xheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwot
I2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBsYXllcjsK
LX0KK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBm
bG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOwor
ICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJp
ZGVzLgorICAgIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVy
KSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNPcGFxdWUpOworICAg
ICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAgfQorICAg
IHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKCpt
X2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250
ZW50cyhudWxscHRyKTsKKyAgICB9CisgICAgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29y
ZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b246OkJvdHRvbVVwOworICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoSU9TdXJmYWNl
KiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Cisg
ICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIt
PnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3Vy
ZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKKyAgICB9Citwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUo
Ym9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVl
KGlzT3BhcXVlKQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAg
IHsKKyAgICB9CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1f
Y29udGVudHNTY2FsZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2Rpc3BsYXlC
dWZmZXI7Cit9OwogCiAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB0eXBlIHRoYXQgaXMgdXNl
ZCB3aGVuIFdlYkdMIGlzIHJ1biBpbi1wcm9jZXNzIGluIFdlYkNvbnRlbnQgcHJvY2Vzcy4KIGNs
YXNzIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1YmxpYyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgfldlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCgpID0gZGVmYXVsdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsg
fQogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQorICAgIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7
IH0KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiBwcml2YXRlOgogICAgIFdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0cmlidXRlcykKICAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1
dGVzKQotICAgICAgICAsIG1fd2ViR0xMYXllcihjcmVhdGVXZWJHTExheWVyKGF0dHJpYnV0ZXMp
KQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2
aWNlUGl4ZWxSYXRpbykpCiAgICAgewogICAgIH0KLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4g
bV93ZWJHTExheWVyOwotCisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w7CiB9OwogCiB2b2lkIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KQEAgLTkwLDcgKzExMiw2IEBAIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHRHCiAgICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmFkZENvbnRleHQoY29udGV4dC5nZXQoKSk7Ci0KICAgICByZXR1cm4gY29udGV4dDsKIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0
aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMu
bW0KaW5kZXggNDA3MjcwNDNmZDEyZDYyYTRjYmQ3ZGJiNTllNDExNjBhMjhkZGYyMi4uMzI2ZjA0
MzJiNDg2MjIxOTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI2LDcgKzI2LDkg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKIAorI2ltcG9y
dCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0
IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgw
ZDYwM2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBA
IC04MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxh
eWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigo
X19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYm
IGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAg
W3N1cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVy
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNB
TGF5ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRl
bGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVy
IHNldE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihD
R1JlY3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93
bmVyKCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29u
dGVudCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0Nv
bnRlbnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBs
YXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEw
Myw2ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJl
Y3Q6aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgfQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7
CiAjZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5
XTsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNB
TGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxh
eWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5
ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYg
KG93bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdl
dCgpKSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVy
KQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdl
dCgpKTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3
MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZh
NTI5NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00
NCwxNiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Ug
ZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAg
IHZvaWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0
ZToKKyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRl
cy4KICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0
cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3Mg
Tmljb3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgewor
Y2xhc3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZh
dWx0OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUo
UmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3Np
YUxheWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291
cmNlRGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQor
ICAgICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7Cisg
ICAgfQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAg
IFJlZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1
YmxpYzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShh
ZG9wdFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpj
cmVhdGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJ
bWFnZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNv
dXJjZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1
NiwxMCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8
SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cik7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsK
LX0KLQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVl
ZGVkKCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVy
UGlwZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7
Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNl
LT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMzgyNzNi
MDcyYjU2ZDNmZGEyYmNkZTM0OGIzZTBmNzQyYzIwMDVlNS4uNDIyMGFkYmE1ZTI1N2Y3MzM4NTE1
NWUwMzc3YjRjNjgzZWJiYWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
QEAgLTY1LDggKzY1LDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1PQkpDX0NM
QVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQU5HTEU7CiB9CkBAIC0xMDMsMTMgKzEwMSwxNCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3Jl
YXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgSG9zdFdpbmRvdyopOwogICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzcGxheU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcg
cGxhdGZvcm1Db25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ09iajsgfQogICAgIHN0YXRp
YyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1Rhcmdl
dChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KTsKICAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1Rhcmdl
dCk7Ci0jZWxzZQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorI2lmICFQTEFURk9STShDT0NPQSkKKyAgICAvLyBGSVhNRTogTWlncmF0ZSB0
byBsYXllcnMgdG8gc3ViY2xhc3MuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0OwogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQogICAgIEdDR0xlbnVtIGRyYXdpbmdCdWZm
ZXJUZXh0dXJlVGFyZ2V0KCk7CkBAIC0xNDQsNiArMTQzLDcgQEAgcHVibGljOgogICAgIGJvb2wg
dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQg
YWxpZ25tZW50ID0gNCk7CiAjZW5kaWYKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJy
aWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKIAogICAgIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtNDYzLDYgKzQ2MywxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKTsKKyAgICB2b2lkIG1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsKKyNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZFJl
bmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGUyODUxYzJlM2QyMjE3NzE2
OTRiZGQ2ZjEyZjBlNWY3ODk5Yzc1NWIuLjBhNmY1Y2MzMTI0MjUwYmViZmI4ZWQwNmRhZTUzMTEw
MDc2YTQ3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuY3BwCkBAIC02Niw2ICs2Niw0NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVz
cGFjZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlciBmaW5hbCA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CitwdWJsaWM6CisgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsK
K3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorICAgICAgICA6IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKGF0dHJpYnV0ZXMpCisgICAgeworICAgIH0KKyAgICBmcmllbmQgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w7CisgICAgLy8gRklYTUU6IG1vdmUgbW9yZSBwbGF0Zm9ybS1zcGVj
aWZpYyBwcm9wZXJ0aWVzIGZyb20gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCB0byBoZXJlLgor
fTsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZjxHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI+JiYgY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShjb250ZXh0
KSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUg
b3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOworICAg
IH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShSZWY8R3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiYmIGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0
KFdURk1vdmUoY29udGV4dCkpCisgICAgeworICAgIH0KKyAgICBSZWY8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyPiBtX2NvbnRleHQ7Cit9OworCitSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6Omxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUoKnRoaXMpOworfQorCit9CisKIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyopCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTg1LDcgKzEyNiw3IEBAIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHRHCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ3JlYXRl
IHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBvYmplY3QgZmlyc3QgaW4gb3JkZXIgdG8gZXN0
YWJsaXN0IGEgY3VycmVudCBjb250ZXh0IG9uIHRoaXMgdGhyZWFkLgotICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzKSk7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcihhdHRyaWJ1dGVzKSk7CiAKICNpZiBVU0UoTElCRVBPWFkpICYmIFVTRShPUEVOR0xfRVMp
ICYmIEVOQUJMRShXRUJHTDIpCiAgICAgLy8gQmFpbCBpZiBHTEVTMyB3YXMgcmVxdWVzdGVkIGJ1
dCBjYW5ub3QgYmUgcHJvdmlkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNjNTJhY2NjZTEzYzYwYzRiLi5k
OGY3MDVkMGFmNTlmNmIyMzY4MzhiOGU1MDY1YjZiMGRlMDAzZTgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2ICszNDIsMTIgQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoVGV4
dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDbGllbnQodGhp
cyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJv
bURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sK
KyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlz
cGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogewog
ICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEzMTdj
ZmZhYTE4NjEyOTguLjJmNDU5OGRjMGE5MmI0YzNjZjYzZmE3NjlkZGQ3OWEwOGFiMTg2MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNs
aWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250
ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVy
UHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAppbmRleCBhNzQ5MDdjZTFjYjcwMWI3ODcwZDA4YmJjY2UwNDIzN2Q4YTRhMzlmLi5h
M2JmNWYzYmEwZjMyYWM0MzgwMDg2Y2NjN2MzZjRjNDZmYzFkZWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIk5pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5o
IgogI2luY2x1ZGUgIk5pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaCIK
QEAgLTQ5OSw2ICs1MDAsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3IKICNlbmRpZgogfQog
Cit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNGcm9tRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlz
cGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdh
dGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2ODk2
YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi5hYTYxYTJhOTg1MmUxMGVjYWVi
MGQwNTQ5ZjljY2Q3NDA5OWRhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBib29sIHNo
b3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xh
eWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TWFza0xheWVyKFJlZlB0
cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRCeUxh
eWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRz
RGlzcGxheSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2YjcwYmM5Mjcy
MzRkNTFkLi44M2U5YmJlNjY2MjI1YzE4NzdkNmRkYTM5MGVkMTQ2MzUyNTQ0NWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA4
OSw3ICsxMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRp
b24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICBlbHNlIGlmIChyZW5k
ZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigp
KSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0Vs
ZW1lbnQqIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVs
ZW1lbnQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdD
b250ZXh0KCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVu
dHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNl
dENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShjb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMp
OwogCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDFlZWUxOGQ2MmYwNTA5ZjAwOWYzNGMzZWRlNjhkMzVl
MGQwODk2NTMuLjEwMmVlMmZhYTQ3Njk3M2VkMjhlNzVkMmYyOGVkZWE2MjM0N2Q3NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvR1BV
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBjb250ZXh0OwogICAgIH0K
LQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5
QnVmZmVyKCkgeyByZXR1cm4gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0
KCk7IH0KICAgICB2b2lkIG1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKSB7IHJldHVybiBtX3N3YXBD
aGFpbi5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcAppbmRleCBkYzJmYWJkNGVmNTVmNzgzMTcyNzBjMzIyMTAyM2UzODYxZTgwNzFk
Li4xNmJkZmRmZjlkNWQzOWZhZWQ5MjZhMTUzNzg0NGNkNTJhYzU1NTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBt
X2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVm
ZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNlbmRSaWdodCBzZW5k
UmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5
QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgbV9jb250ZXh0LT5t
YXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJ
UF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggN2Q5ZTg2N2Y5OGVi
OTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uYzZhNzg0ZDZkMTkzZDA4YWU2YzA5YjZmYTdl
ODkzNjk1OTkyMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTYzLDYgKzYz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAKKyAgICB2b2lkIHNldENvbnRl
bnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUpOwogICAgIGJvb2wgZGlzcGxh
eSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZl
cigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyOworICAgICAgICByZXR1cm4gbV9idWZmZXJIYW5kbGUuaGFzX3ZhbHVlKCk7CiAgICAgfQog
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZm
ZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjkz
N2E5NWM1NmNlMTc1MzRiMTFmY2ZiNWE0OGRlMWI5MjVkNTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUg
cwogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiB7
CisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9mcm9udEJ1ZmZlci5k
aXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX3NlY29uZGFyeUJh
Y2tCdWZmZXIuZGlzY2FyZCgpOwpAQCAtMTEyLDI2ICsxMTMsNyBAQCB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7CiAgICAgZW5jb2Rl
ciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJT1N1
cmZhY2U6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQm
PigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAg
ICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVu
c3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nh
c3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7CisgICAgZW5jb2RlciA8PCBt
X2J1ZmZlckhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlz
cGxheUxpc3RIYW5kbGU7CkBAIC0yMjAsNiArMjAyLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1
ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
KSB7CkBAIC0yNTcsNiArMjQwLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1
cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2luY2x1ZGVEaXNwbGF5TGlzdCA9
PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBjb250ZW50cykKK3sKKyAgICBt
X2J1ZmZlckhhbmRsZSA9IFdURk1vdmUoY29udGVudHMpOworICAgIG1fZGlydHlSZWdpb24gPSBX
ZWJDb3JlOjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsKK30KKwogYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7CiAgICAgQVNTRVJUKCFtX2Zy
b250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKQEAgLTI2Nyw2ICsyNTcsMTIgQEAgYm9vbCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgaWYgKFJlbW90ZUxheWVyVHJlZUNv
bnRleHQqIGNvbnRleHQgPSBtX2xheWVyLT5jb250ZXh0KCkpCiAgICAgICAgIG5lZWRUb0VuY29k
ZUJhY2tpbmdTdG9yZSA9IGNvbnRleHQtPmJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZCgqdGhp
cyk7CiAKKyAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVz
RGlzcGxheShtX2xheWVyKSkgeworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNB
TGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12
b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0
IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpG
cm9udCwgZmFsc2UpOwogCkBAIC0zMjcsNiArMzIzLDIwIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX2Zyb250QnVmZmVyRmx1c2hlcnMuYXBwZW5k
KG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+Y3JlYXRlRmx1c2hlcigpKTsK
ICNlbmRpZgogCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OklPU3VyZmFj
ZToKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
LT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisgICAgICAgICAgICAgICAgbV9i
dWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0
YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tl
bmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qml0bWFwOgorICAgICAgICBpZiAoYXV0byogYmFja2Vu
ZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCisg
ICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZk
MWE3Zjk0NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3
ZWE3NmExNDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEw
MzUsOSArMTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3Jp
cHRpb24oKSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4
dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwg
IiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsK
LSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29u
dGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNh
MWJhZjYzYmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJk
NjVmZDFjZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5
Niw2ICsyOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgog
I2VuZGlmCisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlk
ZWRMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KGNvbnN0IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5
ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllcjoKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGll
cy5sYXllcklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9y
ZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggMzlkMDc0ZjQzMTEw
MmNmNDdkZjgwMWFjZDI1NzkzMjA5MDJlYTA0Yy4uNzIzOTNlNGZmNTllNzZlYmQ3OWIzNjEwYjMz
NDM5MWQ2YzY2OTE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bQpAQCAtNTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4g
UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFr
ZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6
CkBAIC03NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBS
ZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJU
cmVlSG9zdCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6
bV9kcmF3aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3Bl
cnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWRiNTYxM2Y4ZDZjMDg4Y2FjNzE2ZDA4NTdhODc2
MDk5ZjBiYzJjYy4uOTI2MjBhM2I2OTc5MTkyM2IwYTkwNmY3Y2RlNWQ3NWU3YmVmOWFjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
OTExLDYgKzQ5MTEsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcy
NzE4MjE3QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFG
IC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3
MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNiZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1
YWViNS4uY2M1M2U5ZjJmMWNlZmVhNzE2MTg1ZDQ4ZjAwMDg4NzBiMTUyM2NjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0K
QEAgLTMyLDI0ICszMiw2MyBAQAogI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNz
YWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxp
dGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgotI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVyLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1Ymxp
YzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAg
ICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5
RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOworICAgIH0KKyAgICAvLyBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQg
d2lsbERlbGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5h
bAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNPcGFxdWUpOworICAgICAgICBs
YXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAgfQorICAgIHZvaWQg
ZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRz
KG1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENv
bnRlbnRzKG51bGxwdHIpOworICAgIH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorICAgIHZvaWQgc2V0RGlz
cGxheUJ1ZmZlcihjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAg
ICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIg
PSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlz
cGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpID09IG1fZGlzcGxheUJ1ZmZl
ci5zZW5kUmlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVm
ZmVyID0gZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCk7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2Nv
bnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorICAgIGNvbnN0IGJvb2wg
bV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgTWFjaFNl
bmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7Cit9OwogCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSB7CitwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlk
ZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fd2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0K
ICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFz
Q1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwzMCArOTcsMjQgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQ
cm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNy
ZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAg
ICB7CisgICAgfQorICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworICAgIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9Owog
Ci1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMs
IHJlbmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV93ZWJHTExheWVyID0g
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRy
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRl
ZiBOREVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2Vu
ZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7
CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRp
YVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJD
b3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFw
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZm
ZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURv
d24sIHRydWUpOwpAQCAtMTAwLDI2ICsxMzMsMTYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICB9CiAgICAgaWYgKCFkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBkaXNwbGF5QnVm
ZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAgICAgbWFya0NvbnRleHRMb3N0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92
ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
bV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZlci0+YXNMYXllckNvbnRlbnRz
KCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2Rpc3BsYXlCdWZmZXIg
PSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZm
ZXIobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9CiAKIH0KIAogUmVmUHRyPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjb250ZXh0Owor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0
dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4IGU0ZGM4MTk4ZTE4ZWYzZGU2
MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLmNjNDhjOTZiYjBlM2Y1YWQ3YmFjNjI2NmJlODE5MDkx
MTA0MzE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQy5jcHAKQEAgLTMzLDMzICszMyw1MCBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3JtTGF5ZXJHQ0dMLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAorY2xh
c3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5l
ciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAg
ICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOworICAgIH0KK3ByaXZhdGU6
CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVy
JiYgcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3JtTGF5ZXIoV1RGTW92ZShwbGF0
Zm9ybUxheWVyKSkKKyAgICB7CisgICAgfQorICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9w
bGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
IGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGljOgog
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0
KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotCi0gICAgUGxhdGZvcm1MYXllckNv
bnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRl
cmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBs
YXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1M
YXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0K
KyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1
dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlxdWU8
V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQotewot
fQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkxYWIxNDE4NzUwMDQx
Yjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4NmYyMDQ4ZGFmMTM3MzQ1MjY4
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3Bw
CkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJz
aXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgIEFTU0VS
VCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1fY29udGV4dCk7CiAg
ICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFvd25lcigpIHx8ICFv
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAgICBib29sIHVzZXNC
YWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0Nv
bnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHRoaXMp
KTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAhdXNlc0JhY2tpbmdTdG9y
ZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICAg
ICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQotCiAgICAgaWYgKG1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkICYm
IG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkKICAgICAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFj
a2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYgQEAgQ0ZUeXBlUmVmIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogeworICAgIGlmICghdmFsdWUp
CisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOworfQorCisjaWYg
SEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMo
Y29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIEFTU0VSVChtX2FjY2Vs
ZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5jcmVhdGVTZW5kUmlnaHQoKSk7
CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0
ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMu
YmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSk7
Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzUmVj
dChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJvcGVydGllcy5jb250ZW50c1Jl
Y3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0YmFlMGZhNjhjLi43MWQ0MGNl
MzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyArMTI3LDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNv
bnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYp
IG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhj
b25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZp
bHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRiMDBlMjUwODI0ZjY4YzkxODU2
NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYxODUwYWJmMmE5YTc5MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
LmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXll
ckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29sIG1fcHJvdmlkZXNDb250ZW50
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMjdiMGZjMDA1MTg1ZGFk
NDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVhNWMxNmQ2YjU0NzU4MGJmNmMy
MjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29h
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQg
PHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVy
IjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBh
dXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxh
dGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXll
ciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBAIC04Miw4ICs4Myw2IEBAIFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKExh
eWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxheWVyID0gY3VzdG9tTGF5ZXI7
CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBtX3Byb3Zp
ZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVy
OwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQb2ludDNEKGN1c3RvbUxheWVy
LnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1c3RvbUxheWVyLnpQb3NpdGlv
bik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxvYXRQb2ludDNEKGN1c3RvbUxh
eWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBvaW50LnksIGN1c3RvbUxheWVy
LmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5kcyA9IGN1c3RvbUxheWVyLmJv
dW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXIKICAgICAg
ICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwotICAgIH0gZWxzZSBpZiAo
bGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyKSB7Ci0gICAgICAg
IGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAgICAg
Ly8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRlbnRzIGJyZWFrcyB0aGUgb3Jp
Z2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwogICAgIH0KIApAQCAt
MTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldENv
bnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0g
ICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBzZXRO
ZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKIH0KIAogdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKG1fcHJv
dmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3BsYXld
OwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmluZGV4IDBmN2ZjMWI1OTBlZmEw
M2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLmU2ZjE4Y2E4YjFmMTcxOWUzNWIwNTU5NjUxODgw
ZGEzZWU1MDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYgKzI5MCwxMiBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCit2b2lk
IEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBD
b250ZW50c0xheWVyUHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyIHBsYXRmb3JtTGF5ZXIg
PSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51
bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVy
cG9zZSk7Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2VzQ29udGVudHNMYXllcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzYTU0MDljZjIyYTZlOGQ2ZDZlZDhkNWJk
YmZiYzBiODAzMjkyNzJlLi42M2I4NWUxOWM5YWFiZTE2NjUwMGYxZWVhZjM4MzI0YmMwYjc1NjAw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjEtMTEtMTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxl
LmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBv
c2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgQWRkIGEg
ZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFOR0xFIE1ldGFsOiBUaGUgbWVtb3J5IGJhY2tpbmcgSU9T
dXJmYWNlcyBvZiBmb3JtZXIgY2xpZW50IGJ1ZmZlciBwYnVmZmVycyBpcyBsZWFrZWQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBlNjky
M2E2ZGEwMTc5ZjliMzRkNjMzYzk3ODY0ZDk2ZjBjNWU3NDQ2Li40YWMyY2I5ZGE4YzBhYTc1MmY2
MGNiYjJkNWQ3OWZhNTM1OGEwZGNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0zOSwxMyArMzksMTQgQEAgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7Ci1jbGFz
cyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCB7CitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBmaW5hbCA6IHB1
YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0
cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRv
cHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0
ZXMpKSk7CiAgICAgICAgIHJldHVybiBjb250ZXh0OwogICAgIH0KKyAgICBSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogcHJpdmF0ZToKICAgICBU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
YXR0cmlidXRlcykKICAgICAgICAgOiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0
dHJpYnV0ZXMpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445537</attachid>
            <date>2021-12-01 00:30:26 -0800</date>
            <delta_ts>2021-12-01 04:24:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211201103024.patch</filename>
            <type>text/plain</type>
            <size>112251</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4NjU0MzAwNzIwMDUwOWNmOTA1
YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzExMjJjNDdjMTVjMzZlYTM0YjI4MWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5TGlz
dFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAgLTEzNDgsNiArMTM0OSwzMSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChD
b250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJw
b3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgcHJvdmlkZXIgPT0gbV9jb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29udGVudHNM
YXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRPd25lcihudWxscHRyKTsKKyAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUg
PSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyUHVy
cG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVu
dHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0g
cHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVnYXRlZCBkaXNwbGF5IGlzIG9ubHkg
dXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRlbnRzLCBzbyBzZXQgdGhlCisgICAg
ICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3JkaW5nbHkuCisgICAgICAgIG1fY29u
dGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQodHJ1ZSk7CisgICAgICAgIG1fY29u
dGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRydWUpOworICAgICAgICBtX2NvbnRl
bnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNwbGF5KCptX2NvbnRlbnRzTGF5ZXIp
OworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOworfQorCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6Y29udGVu
dHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4NzgsNiArMTkwNCwxOCBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZSh1
bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUo
YmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FM
YXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBtX2NvbnRlbnRzTGF5ZXIgPT0g
bGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobV9jb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09IG1fY29udGVudHNMYXllcik7Cisg
ICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworfQorCiBzdGF0
aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BB
cHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsK
ICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNl
OjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJh
Y2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJv
cExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRm
b3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50
ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29u
dGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNw
bGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDog
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29u
dGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXll
clB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250
ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NTEsMTMgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VD
aGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50
c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBD
b250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xh
eWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAg
ICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0Jv
dW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9u
KCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAg
IGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJv
dHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAg
ICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAu
MGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdm
MzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMzMDRhMWMyYmRhMzFjN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2Vu
ZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQ
bGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
KSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1NvbGlk
Q29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+
JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2NlbGVyYXRlZEFuaW1h
dGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAgICBjb25zdGV4cHIgc3RhdGljIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlv
biA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKKwogcHJpdmF0
ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZv
cm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50
c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBj
b25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3Jt
Q0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7
IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAg
dm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAg
ICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50
YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FM
YXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0
aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJh
dGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNr
TGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDcsNyBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250
ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXll
clByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5k
ZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5MmQxNTgzNC4uOGEyMWExZDVjZjQx
OGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTM5LDYgKzM5LDEy
IEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCAq
Q0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworI2lmIEhBVkUoSU9TVVJG
QUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgorfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0LDEwIEBAIGNsYXNzIFBsYXRmb3Jt
Q0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+
IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIElPU3Vy
ZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUNBTGF5ZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyLCBXVEY6OkRlc3RydWN0
aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNsYXNz
IFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikg
PSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3RvcmVBdHRhY2hl
ZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmluZGV4IDY3NzhkZTcxOWM1MGUxYTQ1
ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3YWZlYWI2NGQ2NmRhOTA2YzBmMTlm
ZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVz
RGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxh
dGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0
TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
LmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhjMTExZWZmN2UwNmZkMy4uODE5OTU3
Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0Nv
bnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOworI2lm
IEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9T
dXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3Qo
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2ODJmYzc1NmFjNjY5MDNhYS4uMmE0
NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgIlRpbGVkQmFja2lu
Zy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1w
b3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgogI2lt
cG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9R
dWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTU0LDYgKzUz
LDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRS
aWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0
ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVyIHBsYXllckxheWVy
XSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAKLSAgICBpZiAoW2xh
eWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIExh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0
b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZv
cm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgTGF5
ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQ
cm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW1dlYlNpbXBsZUxheWVyIGNsYXNz
XTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAg
LTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNv
Y29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgaWYgKFBB
TDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgICAgIGxheWVy
Q2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9u
J3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVy
cy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxMYXllcjoKICAgICAg
ICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAgLTMxMCw3ICszMDQsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICB9CiAgICAgCiAgICAgLy8g
Q2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCi0gICAgaWYg
KG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0g
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkK
KyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVy
VHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBM
YXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107
CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlzYWJs
aW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3LDYgKzc5MSwxOSBAQCB2b2lkIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2Um
IHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVyQ29udGVudHMoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6
TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoc3VyZmFjZUhhbmRsZS5jb3B5U2Vu
ZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBz
ZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5k
ZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMwY2I3ODZjMi4uZjc4ZDUxYjBiZjI2
NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29j
b2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5
ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMDI5Y2MzZmFlNDdmODcwMjNjNWMz
MDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFlODIxN2FmZTg1ZDc4OTAyZDkxMjE4
NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00NjIsMTEgKzQ2Miw2
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEgQEAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUNvbmZpZygpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4K
LVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQp
aW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRz
T3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRl
OTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIu
aCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNB
LmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdM
TGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhl
bFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0
eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5j
b250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
Ly8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8g
ZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFj
ZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29t
aW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5
ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFr
ZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0
VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNB
VHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBv
aW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2Uo
cC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0
aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGlu
IHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlm
IChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRm
b3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5YjllOWU1MTdjZDI2YmU3YjUzNTc5OGM4
OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0MDY5MzBiNTE3YTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMjksNTMg
KzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdl
YkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQot
ewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0
V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRz
T3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBz
ZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRl
PiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNP
cGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNl
dE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBs
YXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAg
ICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBz
ZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAg
IGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxh
eUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5z
dXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9
IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRz
U2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09w
YXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0
R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJD
b250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBm
aW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hIHsKIHB1YmxpYzoKICAgICB+V2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpICYm
IG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBvdmVycmlk
ZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwog
cHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAgICAgICA6IEdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAgICAgLCBtX3dlYkdMTGF5ZXIoY3Jl
YXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkKKyAgICAgICAgLCBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRl
KCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQogICAgIHsK
ICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKKyAgICBSZWY8
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ29yZTo6Y3Jl
YXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIH07
CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNw
bGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgp
OwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNl
LmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6c3VyZmFj
ZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmVlZHNEaXNwbGF5
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3BsYXlCdWZmZXIoKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
RUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBw
bGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZiZDlkMTU0ZTYwYzQ5Li4x
YjdjMjViMTFkMzMxYmEyMTBiN2EwYmE2ZDJjNGM2YmU2MThiOTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2Zl
ckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRkVDb21wb25lbnRU
cmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5o
PgogCiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQwYWI4NmU3NzBk
NDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRlMDFlZDhhZGM5
ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZV
dGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZV
dGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgi
CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3Rz
Q0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJM
YXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5t
bQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJjLi4zZTFhNGZk
MjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4MSwxMSBAQAog
LSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2Vs
Zik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlz
cGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5
ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07
CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGlydHlSZWN0CkBA
IC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsKLSAgICAgICAg
aWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7CisgICAgICAg
IGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBsYXllck93
bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5ZXIuZ2V0KCkp
KSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRpcnR5UmVjdF07
CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWlu
dENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2ICsxMDYsNyBAQAogICAg
ICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6aW5kaWNhdG9yUmVjdF07
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAgfQogfQogCkBAIC0xMTMs
MTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQotICAg
ICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVy
LmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyID0gbGF5
ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93bmVyICYmIG93bmVyLT5w
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgb3du
ZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQoKSk7CisgICAgZWxzZQor
ICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQorICAgICAgICBvd25lci0+
cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKIH0KIAogLSAodm9p
ZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFl
MjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5NzFlYjc0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwxNiArNDQsMTggQEAgbmFt
ZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNl
IHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmluYWwgOiBwdWJsaWMgSW1h
Z2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7
CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpOwogCisgICAgLy8g
SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZvaWQgaGFuZGxlKFJlZlB0
cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKKyAgICAvLyBDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4KICAgICB2b2lkIHN3YXBC
dWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1f
bmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElt
YWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmljb3NpYUltYWdlQnVmZmVy
UGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xhc3MgUGlwZVNvdXJjZURp
c3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKTsKLSAgICB2
aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0OwotCisgICAgc3RhdGlj
IFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXll
cj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
aXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0K
KyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgor
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQ
aXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNlRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgICAgICA6IG1fbmljb3Np
YUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJlZlB0cjxOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3Zl
cnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9
Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJj
ZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1NiwxMCBAQCB2b2lkIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3Jt
TGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmlj
b3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9z
b3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0K
LVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6
c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5
ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAg
IGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJk
YjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5h
bDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5
NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li42MGIxZDFjZTI2MGQwZDFh
NmQ1N2Q3MzQzMGFiZjIzZmFmNWRkZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xD
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVk
ZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDM0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxl
Z2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxl
Z2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAgfQorICAgIC8vIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0
Zm9ybUxheWVyLmdldCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICAg
ICAgOiBtX3BsYXRmb3JtTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworfTsKKworUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICBy
ZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCit9CisKIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0
ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg5LDYgKzExOCwxMyBAQCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
KSA9IGRlZmF1bHQ7CiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OkdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzKQogICAgIDogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZShXVEZNb3ZlKGF0
dHJpYnV0ZXMpKQogeworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgcGxhdGZvcm1MYXllcjsK
KyNpZiBVU0UoTklDT1NJQSkKKyAgICBwbGF0Zm9ybUxheWVyID0gbV9uaWNvc2lhTGF5ZXI7Cisj
ZWxzZQorICAgIHBsYXRmb3JtTGF5ZXIgPSBtX3RleG1hcExheWVyOworI2VuZGlmICAgIAorICAg
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGU6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKTsKIH0KIAogUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlk
YjljZDRlYzBhMDVlNzZjYTcuLjc5MDMyNDc2ZWI3YzdhNTVjZmU5ZjI3YTE2ODA4YmVhMjE0NWM3
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJp
ZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wg
Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1
cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2
MGM0Yi4uZDhmNzA1ZDBhZjU5ZjZiMjM2ODM4YjhlNTA2NWI2YjBkZTAwM2U4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xp
ZW50KHRoaXMpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBv
c2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0
ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRD
b250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hv
dykKIHsKICAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFk
MWJhMzE3Y2ZmYWExODYxMjk4Li4yZjQ1OThkYzBhOTJiNGMzY2Y2M2ZhNzY5ZGRkNzlhMDhhYjE4
NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiAr
MjMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVy
UHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xh
eWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0
YTM5Zi4uYTNiZjVmM2JhMGYzMmFjNDM4MDA4NmNjYzdjM2Y0YzQ2ZmMxZGVjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJ
bXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5k
aWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURp
c3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxh
eURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5k
ZXggNjg5NmM1ZTViMDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEyYTk4NTJl
MTBlY2FlYjBkMDU0OWY5Y2NkNzQwOTlkYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXll
cihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNh
dGVkQnlMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCmluZGV4IDFmMGMw
OWYxZDU0NTMwODc1NTdjMWUyMGIxYThhNTBkZjk5MTBjYWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3
NzI4OTA1NTM0MTIzODdjZjZjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJi
ODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3N2Q2ZGRh
MzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRp
bmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21w
b3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewog
ICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENh
bnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNv
bnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXll
cigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAg
ICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKGNv
bnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXllcjo6Q29u
dGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXgg
MTBhNTM2Mjk5Y2YyM2ViOWY4NmY1NzI3ZTg1MjM4M2NlOGEwNDAwOC4uYjhhYTlmZDU1MWE4OGE2
YzNjMGE2MmE3Mjk0MGZhM2QyYzQ0MTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOgogewogICAg
IGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250ZXh0LT5wcmVwYXJl
Rm9yRGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+
ZGlzcGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIElPU3Vy
ZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlm
IChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFya0Rpc3BsYXlCdWZmZXJJ
blVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURFTlRJVFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3ZjlmNGEzYmU5OTZh
ZDQ1MWQwMTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5NTk5MjI0OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lk
IHNldE5lZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5k
UmlnaHQmJiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04Myw3ICs4
NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICAgICAgcmV0
dXJuIG1fYnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQ
ZW5kaW5nRmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0NjZi
NjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVjNTZjZTE3NTM0YjEx
ZmNmYjVhNDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBA
IC0xMDAsNiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFj
a2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAogdm9pZCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAgIG1fYnVmZmVySGFu
ZGxlID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1f
YmFja0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQo
KTsKQEAgLTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7
CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlRGlz
cGxheUxpc3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4g
aGFuZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5k
bGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFj
a2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8q
IGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRl
ZCgpKQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZmZXJIYW5kbGU7CiAK
ICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3Rk
OjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwpA
QCAtMjIwLDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1Zh
bGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9idWZmZXJIYW5kbGUg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZl
cik7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpAQCAtMjU3LDYgKzI0
MCwxMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBh
aW50KCkKICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlM
aXN0OjpObzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMo
V1RGOjpNYWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9idWZmZXJIYW5kbGUgPSBX
VEZNb3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7
CisgICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJz
LnNpemUoKSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0g
bV9sYXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBj
b250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikp
IHsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5
KG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAg
IC8vIE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNv
IHRoYXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5
LgogICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApA
QCAtMzI3LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5
KCkKICAgICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRp
c3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5kaWYKIAorICAgIHN3
aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CisgICAgICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNh
bk1hcEJhY2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3Rh
dGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigq
YmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVy
YXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IFR5cGU6OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgbV9idWZm
ZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2Fh
ZWIzOGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBT
dHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAg
ICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXll
ckxheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVk
TGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVu
dHNQcm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8
PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVh
dGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2Rm
ZTZmYzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTky
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1h
a2VOb2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAg
IHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0
aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5z
Zm9ybUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXll
clRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAj
ZW5kaWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlm
IChtX2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVy
VHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAg
ICAgIHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29u
dGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMw
NjgwZTYwMTE5YzMuLjBiMWJkMDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhv
c3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRp
bGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdl
VGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5T
KFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5
ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAg
ICAgICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBh
Z2UoKS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250
ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGRmODgzZDkyZTcyZGYyMjUxNWFjZTRiMjE3ZjhmZGExOGU1ODM1MTIuLmRmNGUw
MWRhM2FiZTUzZmEyNWExZTk5MGYyMGY1MTFjYTI3YWFjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk5MCw2ICs0OTkwLDcgQEAK
IAkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmlu
ZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLmNjNTNlOWYyZjFj
ZWZlYTcxNjE4NWQ0OGYwMDA4ODcwYjE1MjNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwyNCArMzIsNjMg
QEAKICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFj
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2ViQ29yZTo6SU9TdXJm
YWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLmdldCgp
OyB9CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUo
Ym9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNv
bnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAg
IGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNT
Y2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3BsYXkoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3Bs
YXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rpc3BsYXlCdWZmZXIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsK
KyAgICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50
YXRpb246OkJvdHRvbVVwOworICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3Qg
TWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxh
eUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlz
cGxheUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZm
ZXIuY29weVNlbmRSaWdodCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgICAg
ICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50c1NjYWxlKGNvbnRl
bnRzU2NhbGUpCisgICAgeworICAgIH0KKyAgICBjb25zdCBib29sIG1faXNPcGFxdWU7CisgICAg
Y29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5
QnVmZmVyOworfTsKIAorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZp
bmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworcHVibGljOgogICAg
IC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dlYkdMTGF5ZXIu
Z2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElP
TikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1
cm4gbnVsbHB0cjsgfQpAQCAtNTgsMzAgKzk3LDI0IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkg
ZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIFJldGFp
blB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1
dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJpYnV0ZXMu
YWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgeworICAgIH0KKyAgICBN
YWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5k
KQotewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExh
eWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRp
byBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW21f
d2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewogICAgIGlmICghbV9kaXNw
bGF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2Uo
KSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCisgICAgYXV0
byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlz
cGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhl
bEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9i
akM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVk
aWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKQEAgLTEw
MCwyNiArMTMzLDE2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1ZmZlclNlbmRSaWdo
dCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgaWYgKCFk
aXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlcik7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRD
b250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKG1fZGlzcGxheUJ1ZmZl
ci5jb3B5U2VuZFJpZ2h0KCkpOwogfQogCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywg
cmVuZGVyaW5nQmFja2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJp
bmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eVdDLmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5ZjNkYjNk
ZmQ3YTYwLi5jYzQ4Yzk2YmIwZTNmNWFkN2JhYzYyNjZiZTgxOTA5MTEwNDMxNmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBAIC0zMywz
MyArMzMsNTAgQEAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV0NQbGF0Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFBsYXRmb3JtTGF5ZXJE
aXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAgfQorICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcGxhdGZvcm1MYXllci5nZXQoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5ZXIp
CisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCisgICAg
eworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKK307
CisKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
KCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
cHRyKCk7IH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpN
ZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgot
ICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKLQotICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9y
bUxheWVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAg
ICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdD
R0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEw
Li41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMs
MTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rp
b24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3By
b3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3du
ZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5u
b3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdT
dG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQp
OwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRl
bnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklP
U3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOwor
ICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUt
PnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBz
dXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAg
ZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0
Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdk
NTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1
YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250
ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lm
IEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9T
dXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmlj
YXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5
OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2
IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4g
bV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3Bs
YXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEz
MDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxh
eWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0
Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRm
b3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29h
OjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVy
LCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXll
ciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5
ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRp
ZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0
b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRp
ZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54
LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwog
ICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAg
KzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50
bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAg
ICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYg
Y29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVz
Q29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVk
c0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVk
c0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0g
ICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9H
cmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2Mv
R3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYx
ZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTllMzViMDU1OTY1MTg4MGRhM2VlNTA4YjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVy
V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNz
TGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMK
ICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6
OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBv
c2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRl
ID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENv
bnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29s
IEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVy
biBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYTBiZDVhZGI0YWVjNDA2OTY2MjJiNGQ0YmQyN2Q4MjA5Mzc0NjExNi4u
MzgwZmM5NjI0ZTI5N2RkOTdhMzJiMjFlNWIzZGJlMzI2MzE3ZWJjNCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAg
Q29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxy
ZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9m
IHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisK
IDIwMjEtMTEtMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFtjc3MtdmFsdWVzLTRdIER5bmFtaWMgYGR2KmAgdmlld3BvcnQgdW5pdHMgc2hvdWxkIG5vdCBy
ZXNwZWN0IHRoZSBwYWdlIHNjYWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EubW0KaW5kZXggODc2Yzc0NDgwOGY0MzYxZTNjZDUyZjUzZmZkNmY2MDAzYThhMGY4Ny4uZTE5
MTFkZjZjMDkzZTM4YzhkNDJmYTE3OWVmZDVlNzcyZWE2NWRjNCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDAsNiArNDAsMjEgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRl
eHRHTENvY29hIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisg
ICAgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29u
dGV4dDsKKyAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAg
ICAgOiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykp
CisgICAgeworICAgIH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlIC8vIE5PTElOVApAQCAtNTgsNyArNzMsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3Qg
aW50IGV4cGVjdGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQo
V2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNp
emUgY29udGV4dFNpemUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02Nywx
NCArODIsMTQgQEAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29h
PiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5j
aWwgPSBmYWxzZTsKICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVz
LnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsK
KyAgICBhdXRvIGNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUo
V1RGTW92ZShhdHRyaWJ1dGVzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBjb250ZXh0LT5yZXNoYXBlKGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRl
eHRTaXplLmhlaWdodCgpKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQorc3RhdGljIDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhUZXN0ZWRHcmFwaGlj
c0NvbnRleHRHTENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQogewogICAgIGNvbnRleHQu
bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgV2ViQ29yZTo6Q29sb3IgZXhwZWN0ZWQgeyBpdGVy
YXRpb24gJSAyID8gV2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29yZTo6Q29sb3I6OnllbGxv
dyB9OwpAQCAtMTE5LDE1ICsxMzQsMTUgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FU
ZXN0LCBNQVlCRV9NdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRy
aWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclBy
ZWZlcmVuY2UsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZh
dWx0KTsKLSAgICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0
dHJpYnV0ZXMgfSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
eyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7
CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRvIGxvd1Bvd2VyQ29udGV4
dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gbG93UG93
ZXJDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJU
X05FKGxvd1Bvd2VyQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJl
ZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdo
UGVyZm9ybWFuY2U7Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250
ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGhp
Z2hQZXJmb3JtYW5jZUNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2Vy
Q29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiks
IGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSRVIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445550</attachid>
            <date>2021-12-01 04:24:47 -0800</date>
            <delta_ts>2021-12-01 05:09:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211201142445.patch</filename>
            <type>text/plain</type>
            <size>114737</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li42
MGIxZDFjZTI2MGQwZDFhNmQ1N2Q3MzQzMGFiZjIzZmFmNWRkZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0
Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAgfQorICAg
IC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOworICAgIH0KK3ByaXZhdGU6CisgICAgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZv
cm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3JtTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVy
KSkKKyAgICB7CisgICAgfQorICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxh
eWVyOworfTsKKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigp
OworfQorCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg5LDYgKzEx
OCwxMyBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAgIDogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QmFzZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQogeworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIg
cGxhdGZvcm1MYXllcjsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBwbGF0Zm9ybUxheWVyID0gbV9u
aWNvc2lhTGF5ZXI7CisjZWxzZQorICAgIHBsYXRmb3JtTGF5ZXIgPSBtX3RleG1hcExheWVyOwor
I2VuZGlmICAgIAorICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKTsKIH0K
IAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGQxYWMwZWI3
YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjc5MDMyNDc2ZWI3YzdhNTVjZmU5ZjI3
YTE2ODA4YmVhMjE0NWM3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9y
bUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2
MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZDhmNzA1ZDBhZjU5ZjZiMjM2ODM4YjhlNTA2NWI2YjBkZTAw
M2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0z
NDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5
ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9
IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVs
bHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJw
b3NlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVn
Qm9yZGVyKGJvb2wgc2hvdykKIHsKICAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBz
aG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRh
NGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2ZmYWExODYxMjk4Li4yZjQ1OThkYzBhOTJiNGMzY2Y2M2Zh
NzY5ZGRkNzlhMDhhYjE4NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zy
b21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0Nv
bnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0K
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQw
OGJiY2NlMDQyMzdkOGE0YTM5Zi4uYTNiZjVmM2JhMGYzMmFjNDM4MDA4NmNjYzdjM2Y0YzQ2ZmMx
ZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0
b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXll
clRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2Ug
cHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURl
bGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAg
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQor
CiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVy
cy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTViMDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRj
ZC4uYWE2MWEyYTk4NTJlMTBlY2FlYjBkMDU0OWY5Y2NkNzQwOTlkYWQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcs
NiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IGMzOWMzMTI0ZTg1NDJh
Zjk1MTk3MTc4NGI4MGYyMDRjODE5NWZjZTguLmQzMGI0ZTQxMGVmYzhhNGMwNDZkNmJmNTJjOWVm
MTc5OTcxMGRhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAorI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVy
LmgiCiAjaW1wb3J0ICJMZWdhY3lUaWxlR3JpZC5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWRU
aWxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmll
d0lPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCmlu
ZGV4IGI0ZDJmZDlkZDVjNTJlZmI5N2MzMWRkN2QwNDVkMzk5OWZlNGJmNDEuLjczZTZkN2M4YmZl
ZTAwY2U3NjhmZTAyODY4NjhkMDEwZDRjNDYzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCkBAIC00MSw4ICs0MSw2IEBACiAjaW1wb3J0ICJXZWJD
b3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBOU1Nj
cm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4gKlNjcm9sbFZpZXc6OnNjcm9sbFZpZXco
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0
ZTJhZGM5ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIw
ZTNlODdiNTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJ
T1MubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5o
PgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkx
MGNhZC4uNDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYz
NWU1ZTg4NmM0M2VkOTNkOWMyYi4uZmRkZTAxNDJhMGQwZDcyY2Q1ZGFlYWExZjdkZWVlMzk2YTQx
ZmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2Nh
bGl6ZWREYXRlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2Nv
YS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNo
ZSYgbG9jYWxpemVkRGF0ZUNhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJj
OTI3MjM0ZDUxZC4uODNlOWJiZTY2NjIyNWMxODc3ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTEwODksNyArMTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1
cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAo
cmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVy
ZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52
YXNFbGVtZW50KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIo
KS5lbGVtZW50KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVy
aW5nQ29udGV4dCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihjb250ZXh0LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNv
bnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2Fu
dmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3
MjdlODUyMzgzY2U4YTA0MDA4Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQx
NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3Ry
ZWFtVGhyZWFkKTsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9T
dXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0g
bV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NV
UkZBQ0VfU0VUX09XTkVSU0hJUF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgK
aW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uYzZhNzg0ZDZk
MTkzZDA4YWU2YzA5YjZmYTdlODkzNjk1OTkyMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAK
KyAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUp
OwogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyOworICAgICAgICByZXR1cm4gbV9idWZmZXJIYW5kbGUuaGFz
X3ZhbHVlKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVkNGU4ZjIx
ZGMzYjBhNWRhM2ZmY2QuLjkzN2E5NWM1NmNlMTc1MzRiMTFmY2ZiNWE0OGRlMWI5MjVkNTBmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBX
ZWJDb3JlOjpGbG9hdFNpemUgcwogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVh
ckJhY2tpbmdTdG9yZSgpCiB7CisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsK
ICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOwpAQCAtMTEyLDI2ICsxMTMsNyBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNP
cGFxdWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKLQotICAgIHN0ZDo6
b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAg
ICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2lu
Z1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBU
eXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICAgICAg
aGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7
CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlckhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7CkBAIC0yMjAsNiArMjAyLDcgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBz
dGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0yNTcsNiArMjQwLDEzIEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2lu
Y2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBj
b250ZW50cykKK3sKKyAgICBtX2J1ZmZlckhhbmRsZSA9IFdURk1vdmUoY29udGVudHMpOworICAg
IG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMu
Y2xlYXIoKTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7
CiAgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKQEAgLTI2Nyw2ICsy
NTcsMTIgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgaWYg
KFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQgPSBtX2xheWVyLT5jb250ZXh0KCkpCiAg
ICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbnRleHQtPmJhY2tpbmdTdG9yZVdp
bGxCZURpc3BsYXllZCgqdGhpcyk7CiAKKyAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgeworICAgICAgICBtX2xheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CisgICAgICAgIG1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMg
ZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhl
IHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRp
bGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogCkBAIC0zMjcsNiArMzIzLDIwIEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX2Zyb250QnVm
ZmVyRmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+
Y3JlYXRlRmx1c2hlcigpKTsKICNlbmRpZgogCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBj
YXNlIFR5cGU6OklPU3VyZmFjZToKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAg
ICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisg
ICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qml0bWFwOgorICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmlu
ZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUx
MWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmExNDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTEwMzUsOSArMTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAg
ICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElE
IDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAg
ICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5n
Q29udGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAg
ICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4
dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0KaW5kZXggNzk0MDNhMWJhZjYzYmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1
MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFjZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0KQEAgLTI5Niw2ICsyOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5
ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVNb2RlbExheWVyOgogI2VuZGlmCisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJl
ZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyAr
MzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhv
c3QpCiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBs
YWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5
ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0
aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
aW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2ZkMzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUw
YWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBmYjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVt
b3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgog
ICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBh
bGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxl
ZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1v
dGVMCiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlm
ICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRv
cHROUyhbW1dLVUlSZW1vdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAg
ICAgICAgICAgICAgICBwaWQ6bV9kcmF3aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVy
KCkgY29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGY4ODNkOTJlNzJk
ZjIyNTE1YWNlNGIyMTdmOGZkYTE4ZTU4MzUxMi4uZGY0ZTAxZGEzYWJlNTNmYTI1YTFlOTkwZjIw
ZjUxMWNhMjdhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00OTkwLDYgKzQ5OTAsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMw
QjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNiZDlmNjU2
NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uY2M1M2U5ZjJmMWNlZmVhNzE2MTg1ZDQ4ZjAwMDg4NzBi
MTUyM2NjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2MyBAQAogI2ltcG9ydCAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVyLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKLWNs
YXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUmVmPERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBj
b250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOworICAgIH0K
KyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3Zl
cnJpZGVzLgorICAgIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNP
cGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7
CisgICAgfQorICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVy
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAg
IGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKyAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAg
fQorICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5
QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgp
ID09IG1fZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyID0gZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCk7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNP
cGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1
ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAg
fQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRz
U2NhbGU7CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7Cit9OwogCitjbGFzcyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSB7CitwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwz
MCArOTcsMjQgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgogcHJpdmF0
ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Rpc3Bs
YXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5
QnVmZmVyOworICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRy
cy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJX
ZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCiB7CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBp
eGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmln
aHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZh
Y2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUo
V1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVv
Um90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwpAQCAtMTAwLDI2ICsxMzMsMTYgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAg
ICB9CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0g
ICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNw
bGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZl
ci0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAg
IG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUtPnNldERpc3BsYXlCdWZmZXIobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9
CiAKIH0KIAogUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0g
ICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBjb250ZXh0OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4
IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLmNjNDhjOTZiYjBlM2Y1
YWQ3YmFjNjI2NmJlODE5MDkxMTA0MzE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKQEAgLTMzLDMzICszMyw1MCBAQAogI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3Jt
TGF5ZXJHQ0dMLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIHsKIAorY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxh
dGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxh
dGZvcm1MYXllcikpKTsKKyAgICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgp
OworICAgIH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0
Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3Jt
TGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICB7CisgICAgfQorICAgIFBsYXRmb3Jt
TGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgewogcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3Zl
cnJpZGVzLgogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxh
eWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0
dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotCi0g
ICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7CisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtl
VW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSkpCisgICAgeworICAgIH0KKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9y
bUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpKQotewotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qzo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVh
OGJkYjkxYWIxNDE4NzUwMDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4
NmYyMDQ4ZGFmMTM3MzQ1MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250
ZXh0JiBjbwogICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigp
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0
ID09IG1fY29udGV4dCk7CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
JiYgKCFvd25lcigpIHx8ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkp
IHsKKyAgICBib29sIHVzZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KHRoaXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiAhdXNlc0JhY2tpbmdTdG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ID0gbnVsbHB0cjsKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQot
CiAgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZUF0dGFjaGVkICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkK
ICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYg
QEAgQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2
b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQog
eworICAgIGlmICghdmFsdWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBu
dWxscHRyOworfQorCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQorewor
ICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3Jl
KCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5j
cmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAg
QVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsK
KyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxl
LmNvcHlTZW5kUmlnaHQoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJv
cGVydGllcy5jb250ZW50c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0
YmFlMGZhNjhjLi43MWQ0MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyAr
MTI3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
b250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAg
dm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwor
I2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRi
MDBlMjUwODI0ZjY4YzkxODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYx
ODUwYWJmMmE5YTc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7
CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29s
IG1fcHJvdmlkZXNDb250ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5k
ZXggMjdiMGZjMDA1MTg1ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVh
NWMxNmQ2YjU0NzU4MGJmNmMyMjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0
cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRm
b3JtQ0FMYXllciI7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBA
IldLUGxhdGZvcm1DQUxheWVyIjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXll
ciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3Jt
TGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBA
IC04Miw4ICs4Myw2IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tKExheWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxh
eWVyID0gY3VzdG9tTGF5ZXI7CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9u
c107CiAKLSAgICBtX3Byb3ZpZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29u
dGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQ
b2ludDNEKGN1c3RvbUxheWVyLnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1
c3RvbUxheWVyLnpQb3NpdGlvbik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEKGN1c3RvbUxheWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBv
aW50LnksIGN1c3RvbUxheWVyLmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5k
cyA9IGN1c3RvbUxheWVyLmJvdW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0
Zm9ybUNBTGF5ZXIKICAgICAgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNl
OwotICAgIH0gZWxzZSBpZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyKSB7Ci0gICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRl
bnRzIGJyZWFrcyB0aGUgb3JpZ2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZh
bHNlOwogICAgIH0KIApAQCAtMTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b206OnNldENvbnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21f
cGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAg
ICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
KyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
IH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgp
CiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXll
ciBzZXROZWVkc0Rpc3BsYXldOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5l
ZWRzRGlzcGxheSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmlu
ZGV4IDBmN2ZjMWI1OTBlZmEwM2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLmU2ZjE4Y2E4YjFm
MTcxOWUzNWIwNTU5NjUxODgwZGEzZWU1MDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYg
KzI5MCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNh
dG9ycygpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYg
ZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBs
YXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
cGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2Vz
Q29udGVudHNMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMGJkNWFk
YjRhZWM0MDY5NjYyMmI0ZDRiZDI3ZDgyMDkzNzQ2MTE2Li4zODBmYzk2MjRlMjk3ZGQ5N2EzMmIy
MWU1YjNkYmUzMjYzMTdlYmM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3Vw
cG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bToKKyAgICAgICAgQWRkIGEgZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rp
b24gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMS0zMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy12YWx1ZXMtNF0gRHluYW1p
YyBgZHYqYCB2aWV3cG9ydCB1bml0cyBzaG91bGQgbm90IHJlc3BlY3QgdGhlIHBhZ2Ugc2NhbGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA4NzZjNzQ0ODA4
ZjQzNjFlM2NkNTJmNTNmZmQ2ZjYwMDNhOGEwZjg3Li5lMTkxMWRmNmMwOTNlMzhjOGQ0MmZhMTc5
ZWZkNWU3NzJlYTY1ZGM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00MCw2ICs0MCwyMSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVz
cGFjZSB7CiAKK2NsYXNzIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EgOiBwdWJsaWMgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0
ZToKKyAgICBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorICAgICAgICA6IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKKyAgICB7CisgICAgfQorfTsKKwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OCw3
ICs3Myw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBjb25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVm
ZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRl
eHRTaXplKQorc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVh
dGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBh
dHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKQEAgLTY3LDE0ICs4MiwxNCBAQCBzdGF0aWMgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29u
dGV4dChXZWJDb3JlOgogICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJp
YnV0ZXMuYWxwaGEgPSB0cnVlOwogICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVy
ID0gZmFsc2U7Ci0gICAgYXV0byBjb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIGF1dG8gY29udGV4dCA9IFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsK
ICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnRleHQt
PnJlc2hhcGUoY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogICAg
IHJldHVybiBjb250ZXh0OwogfQogCi1zdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
Y2hhbmdlQ29udGV4dENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNv
bnRleHQsIGludCBpdGVyYXRpb24pCitzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
Y2hhbmdlQ29udGV4dENvbnRlbnRzKFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRl
eHQsIGludCBpdGVyYXRpb24pCiB7CiAgICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5nZWQoKTsK
ICAgICBXZWJDb3JlOjpDb2xvciBleHBlY3RlZCB7IGl0ZXJhdGlvbiAlIDIgPyBXZWJDb3JlOjpD
b2xvcjo6Z3JlZW4gOiBXZWJDb3JlOjpDb2xvcjo6eWVsbG93IH07CkBAIC0xMTksMTUgKzEzNCwx
NSBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRpcGxlR1BV
c0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVl
OwogICAgIEVYUEVDVF9FUShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQpOwotICAgIGF1dG8gZGVmYXVs
dENvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRv
IGRlZmF1bHRDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAg
QVNTRVJUX05FKGRlZmF1bHRDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93
ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
Okxvd1Bvd2VyOwotICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFw
aGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBu
dWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRv
IGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29h
OjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRl
cyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwg
bnVsbHB0cik7CiAKICAgICBFWFBFQ1RfTkUobG93UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4
dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwo=
</data>
<flag name="commit-queue"
          id="470780"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445561</attachid>
            <date>2021-12-01 05:04:32 -0800</date>
            <delta_ts>2021-12-01 07:01:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211201150430.patch</filename>
            <type>text/plain</type>
            <size>116960</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li4x
OWRmZTU2YmJlODEyYjI1ZDkxOTI0ZGFhMWUzZGJmMDhjOWRjY2VmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXIuZ2V0KCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9y
bUxheWVyKHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBt
X3BsYXRmb3JtTGF5ZXI7Cit9OworCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUucHRyKCk7Cit9CisKK30KKwogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcj4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwpA
QCAtODksNiArMTE4LDEzIEBAIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCiB7CisgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcjsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBwbGF0Zm9ybUxheWVyID0g
bV9uaWNvc2lhTGF5ZXIuZ2V0KCk7CisjZWxzZQorICAgIHBsYXRmb3JtTGF5ZXIgPSBtX3RleG1h
cExheWVyLmdldCgpOworI2VuZGlmICAgIAorICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShwbGF0Zm9ybUxheWVy
KTsKIH0KIAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KQpAQCAtMTIzLDE1ICsxNTksNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIHJldHVy
biBjb250ZXh0OwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotI2lmIFVTRShOSUNPU0lBKQotICAgIHJl
dHVybiAmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXllcigpOwotI2Vsc2UKLSAgICByZXR1cm4g
bV90ZXhtYXBMYXllci5nZXQoKTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKaW5kZXggZDFhYzBlYjdjMGFkYTJmZjg4ZjE3
OWRiOWNkNGVjMGEwNWU3NmNhNy4uMWVhYmVjZGIxYmZlNjdkNWZiYjk1MTY2M2JmMWY4OTk3OGE2
NGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcigpOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSBvdmVy
cmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgYm9v
bCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4
dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgUmVmPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
M2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZDhmNzA1ZDBhZjU5ZjZi
MjM2ODM4YjhlNTA2NWI2YjBkZTAwM2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVNYXBwZXJQbGF0
Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwogfQogCit2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5
RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+
cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKIHsKICAgICBpZiAoaXNTaG93
aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2ZmYWExODYxMjk4Li4y
ZjQ1OThkYzBhOTJiNGMzY2Y2M2ZhNzY5ZGRkNzlhMDhhYjE4NjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAi
R3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29s
b3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9y
bUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
YTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uYTNiZjVmM2JhMGYzMmFj
NDM4MDA4NmNjYzdjM2Y0YzQ2ZmMxZGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNs
dWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNpbmNsdWRlICJO
aWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00OTksNiArNTAw
LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwg
Q29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxh
eWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3Jt
TGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmls
dGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25z
dAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTViMDI0MzgzZDc1
OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEyYTk4NTJlMTBlY2FlYjBkMDU0OWY5Y2NkNzQw
OTlkYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93
UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNv
bXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXll
cj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihSZWZQdHI8R3Jh
cGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
Q2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1t
CmluZGV4IGMzOWMzMTI0ZTg1NDJhZjk1MTk3MTc4NGI4MGYyMDRjODE5NWZjZTguLmQzMGI0ZTQx
MGVmYzhhNGMwNDZkNmJmNTJjOWVmMTc5OTcxMGRhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkZvbnRB
bnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAjaW1wb3J0ICJMZWdhY3lUaWxlR3JpZC5oIgogI2lt
cG9ydCAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9TY3JvbGxWaWV3SU9TLm1tCmluZGV4IGI0ZDJmZDlkZDVjNTJlZmI5N2MzMWRkN2QwNDVkMzk5
OWZlNGJmNDEuLjlhOWU2MTk1MTVlZTcwMmNlNzQyMTkxMTVhMzhjMzUwOTdmYmE5ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCkBAIC00MSw4ICs0
MSw2IEBACiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGlubGluZSBOU1Njcm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4gKlNj
cm9sbFZpZXc6OnNjcm9sbFZpZXcoKSBjb25zdApAQCAtMjA2LDcgKzIwNCw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRDb250ZW50c1NpemUoKQogI2Vsc2UKICAgICBMT0coRnJhbWVz
LCAiJXAgJUAgYXQgdyAlZCBoICVkXG4iLCBkb2N1bWVudFZpZXcoKSwgTlNTdHJpbmdGcm9tQ2xh
c3MoW2RvY3VtZW50VmlldygpIGNsYXNzXSksIHcsIGgpOwogI2VuZGlmCi0gICAgTlNTaXplIHRl
bXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtYXgoMCwgdykpLCBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihtYXgoMCwgaCkpIH07IC8vIHdvcmthcm91bmQgZm9yIDQyMTMzMTQKKyAgICBOU1Np
emUgdGVtcFNpemUgPSB7IHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIHcpKSwgc3Rh
dGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwgaCkpIH07IC8vIHdvcmthcm91bmQgZm9yIDQy
MTMzMTQKICAgICBbZG9jdW1lbnRWaWV3KCkgc2V0Qm91bmRzU2l6ZTp0ZW1wU2l6ZV07CiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtMjIzLDcgKzIyMSw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xs
UG9pbnQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgTlNQb2ludCBm
bG9hdFBvaW50ID0gc2Nyb2xsUG9pbnQ7Ci0gICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgt
W3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQueCksIG1heCgtW3Njcm9s
bFZpZXcoKSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgIC8vIERvbid0IHVzZSBO
U01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgorICAgIE5TUG9pbnQgdGVtcFBvaW50
ID0geyBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQu
eCksIHN0ZDo6bWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueSwgZmxvYXRQb2ludC55
KSB9OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAg
ICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0K
aW5kZXggMWJiYTRlMmFkYzlmNmExNmZiYzYzYzA5NjkzZTVjNjYxZjdkZDU0Yi4uNzUyMDUyMzlk
NjhjYjVjYWJlMjBlM2U4N2I1MGEyMzA2MmFlMzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbQpAQCAtMzEsOCArMzEsNiBAQAogI2ltcG9ydCA8cGFsL2lvcy9VSUtp
dFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaGVtZSYgVGhlbWU6OnNpbmds
ZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAppbmRleCAxZjBjMDlmMWQ1NDUzMDg3NTU3YzFlMjBi
MWE4YTUwZGY5OTEwY2FkLi40MjM0MTE2OWVkZDBlM2U3NDhlNzcyODkwNTUzNDEyMzg3Y2Y2Y2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQppbmRleCA5Mzg0ZDAyZGM3
MGM0OWNjYTFjNjM1ZTVlODg2YzQzZWQ5M2Q5YzJiLi5lMGRiODI3ZjQwODRlNzc3MmM0ZDA1NGE5
YTgzODhlYjI4ZjllZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQpAQCAtMzQsOCArMzQsNiBAQAogI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTG9jYWxp
emVkRGF0ZUNhY2hlJiBsb2NhbGl6ZWREYXRlQ2FjaGUoKQpAQCAtMTY2LDcgKzE2NCw3IEBAIGZs
b2F0IExvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11bVdpZHRoKERhdGVDb21wb25l
bnRzVHlwZSB0eXBlLCBjb25zdCBNCiAgICAgICAgIFtjb21wb25lbnRzIHNldE1vbnRoOihpICsg
MSldOwogICAgICAgICBOU0RhdGUgKmRhdGUgPSBbZ3JlZ29yaWFuIGRhdGVGcm9tQ29tcG9uZW50
czpjb21wb25lbnRzLmdldCgpXTsKICAgICAgICAgTlNTdHJpbmcgKmZvcm1hdHRlZERhdGUgPSBb
ZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpkYXRlXTsKLSAgICAgICAgbWF4aW11bVdpZHRo
ID0gbWF4KG1heGltdW1XaWR0aCwgbWVhc3VyZXIubWVhc3VyZVRleHQoU3RyaW5nKGZvcm1hdHRl
ZERhdGUpKSk7CisgICAgICAgIG1heGltdW1XaWR0aCA9IHN0ZDo6bWF4KG1heGltdW1XaWR0aCwg
bWVhc3VyZXIubWVhc3VyZVRleHQoU3RyaW5nKGZvcm1hdHRlZERhdGUpKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG1heGltdW1XaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJj
OTI3MjM0ZDUxZC4uODNlOWJiZTY2NjIyNWMxODc3ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTEwODksNyArMTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1
cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAo
cmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVy
ZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52
YXNFbGVtZW50KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIo
KS5lbGVtZW50KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVy
aW5nQ29udGV4dCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihjb250ZXh0LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNv
bnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2Fu
dmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3
MjdlODUyMzgzY2U4YTA0MDA4Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQx
NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3Ry
ZWFtVGhyZWFkKTsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9T
dXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAg
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0g
bV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAg
ICAgICAgbV9jb250ZXh0LT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NV
UkZBQ0VfU0VUX09XTkVSU0hJUF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgK
aW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uYzZhNzg0ZDZk
MTkzZDA4YWU2YzA5YjZmYTdlODkzNjk1OTkyMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAK
KyAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUp
OwogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyOworICAgICAgICByZXR1cm4gbV9idWZmZXJIYW5kbGUuaGFz
X3ZhbHVlKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVkNGU4ZjIx
ZGMzYjBhNWRhM2ZmY2QuLjkzN2E5NWM1NmNlMTc1MzRiMTFmY2ZiNWE0OGRlMWI5MjVkNTBmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBX
ZWJDb3JlOjpGbG9hdFNpemUgcwogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVh
ckJhY2tpbmdTdG9yZSgpCiB7CisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsK
ICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOwpAQCAtMTEyLDI2ICsxMTMsNyBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNP
cGFxdWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKLQotICAgIHN0ZDo6
b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAg
ICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2lu
Z1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBU
eXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICAgICAg
aGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7
CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlckhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7CkBAIC0yMjAsNiArMjAyLDcgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBz
dGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0yNTcsNiArMjQwLDEzIEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2lu
Y2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBj
b250ZW50cykKK3sKKyAgICBtX2J1ZmZlckhhbmRsZSA9IFdURk1vdmUoY29udGVudHMpOworICAg
IG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMu
Y2xlYXIoKTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7
CiAgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKQEAgLTI2Nyw2ICsy
NTcsMTIgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgaWYg
KFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQgPSBtX2xheWVyLT5jb250ZXh0KCkpCiAg
ICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbnRleHQtPmJhY2tpbmdTdG9yZVdp
bGxCZURpc3BsYXllZCgqdGhpcyk7CiAKKyAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgeworICAgICAgICBtX2xheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CisgICAgICAgIG1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMg
ZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhl
IHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRp
bGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogCkBAIC0zMjcsNiArMzIzLDIwIEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX2Zyb250QnVm
ZmVyRmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+
Y3JlYXRlRmx1c2hlcigpKTsKICNlbmRpZgogCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBj
YXNlIFR5cGU6OklPU3VyZmFjZToKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAg
ICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisg
ICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qml0bWFwOgorICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmlu
ZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUx
MWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmExNDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTEwMzUsOSArMTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAg
ICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElE
IDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAg
ICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5n
Q29udGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAg
ICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4
dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0KaW5kZXggNzk0MDNhMWJhZjYzYmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1
MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFjZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0KQEAgLTI5Niw2ICsyOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5
ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVNb2RlbExheWVyOgogI2VuZGlmCisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJl
ZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyAr
MzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhv
c3QpCiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBs
YWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5
ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0
aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
aW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2ZkMzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUw
YWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBmYjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVt
b3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgog
ICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBh
bGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxl
ZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1v
dGVMCiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlm
ICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRv
cHROUyhbW1dLVUlSZW1vdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAg
ICAgICAgICAgICAgICBwaWQ6bV9kcmF3aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVy
KCkgY29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGY4ODNkOTJlNzJk
ZjIyNTE1YWNlNGIyMTdmOGZkYTE4ZTU4MzUxMi4uZGY0ZTAxZGEzYWJlNTNmYTI1YTFlOTkwZjIw
ZjUxMWNhMjdhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00OTkwLDYgKzQ5OTAsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMw
QjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNiZDlmNjU2
NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uY2M1M2U5ZjJmMWNlZmVhNzE2MTg1ZDQ4ZjAwMDg4NzBi
MTUyM2NjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2MyBAQAogI2ltcG9ydCAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVyLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKLWNs
YXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUmVmPERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBj
b250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOworICAgIH0K
KyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3Zl
cnJpZGVzLgorICAgIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNP
cGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7
CisgICAgfQorICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVy
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAg
IGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKyAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAg
fQorICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5
QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgp
ID09IG1fZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyID0gZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCk7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNP
cGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1
ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAg
fQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRz
U2NhbGU7CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7Cit9OwogCitjbGFzcyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSB7CitwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwz
MCArOTcsMjQgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgogcHJpdmF0
ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Rpc3Bs
YXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5
QnVmZmVyOworICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRy
cy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJX
ZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCiB7CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBp
eGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmln
aHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZh
Y2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUo
V1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVv
Um90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwpAQCAtMTAwLDI2ICsxMzMsMTYgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAg
ICB9CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0g
ICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNw
bGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZl
ci0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAg
IG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUtPnNldERpc3BsYXlCdWZmZXIobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9
CiAKIH0KIAogUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0g
ICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBjb250ZXh0OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4
IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLmNjNDhjOTZiYjBlM2Y1
YWQ3YmFjNjI2NmJlODE5MDkxMTA0MzE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKQEAgLTMzLDMzICszMyw1MCBAQAogI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3Jt
TGF5ZXJHQ0dMLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIHsKIAorY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxh
dGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxh
dGZvcm1MYXllcikpKTsKKyAgICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgp
OworICAgIH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0
Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3Jt
TGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICB7CisgICAgfQorICAgIFBsYXRmb3Jt
TGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgewogcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3Zl
cnJpZGVzLgogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxh
eWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0
dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotCi0g
ICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7CisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtl
VW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSkpCisgICAgeworICAgIH0KKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9y
bUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpKQotewotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qzo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVh
OGJkYjkxYWIxNDE4NzUwMDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4
NmYyMDQ4ZGFmMTM3MzQ1MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250
ZXh0JiBjbwogICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigp
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0
ID09IG1fY29udGV4dCk7CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
JiYgKCFvd25lcigpIHx8ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkp
IHsKKyAgICBib29sIHVzZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KHRoaXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiAhdXNlc0JhY2tpbmdTdG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ID0gbnVsbHB0cjsKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQot
CiAgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZUF0dGFjaGVkICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkK
ICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYg
QEAgQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2
b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQog
eworICAgIGlmICghdmFsdWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBu
dWxscHRyOworfQorCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQorewor
ICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3Jl
KCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5j
cmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAg
QVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsK
KyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxl
LmNvcHlTZW5kUmlnaHQoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJv
cGVydGllcy5jb250ZW50c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0
YmFlMGZhNjhjLi43MWQ0MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyAr
MTI3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
b250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAg
dm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwor
I2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRi
MDBlMjUwODI0ZjY4YzkxODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYx
ODUwYWJmMmE5YTc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7
CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29s
IG1fcHJvdmlkZXNDb250ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5k
ZXggMjdiMGZjMDA1MTg1ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVh
NWMxNmQ2YjU0NzU4MGJmNmMyMjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0
cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRm
b3JtQ0FMYXllciI7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBA
IldLUGxhdGZvcm1DQUxheWVyIjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXll
ciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3Jt
TGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBA
IC04Miw4ICs4Myw2IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tKExheWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxh
eWVyID0gY3VzdG9tTGF5ZXI7CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9u
c107CiAKLSAgICBtX3Byb3ZpZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29u
dGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQ
b2ludDNEKGN1c3RvbUxheWVyLnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1
c3RvbUxheWVyLnpQb3NpdGlvbik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEKGN1c3RvbUxheWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBv
aW50LnksIGN1c3RvbUxheWVyLmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5k
cyA9IGN1c3RvbUxheWVyLmJvdW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0
Zm9ybUNBTGF5ZXIKICAgICAgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNl
OwotICAgIH0gZWxzZSBpZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyKSB7Ci0gICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRl
bnRzIGJyZWFrcyB0aGUgb3JpZ2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZh
bHNlOwogICAgIH0KIApAQCAtMTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b206OnNldENvbnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21f
cGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAg
ICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
KyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
IH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgp
CiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXll
ciBzZXROZWVkc0Rpc3BsYXldOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5l
ZWRzRGlzcGxheSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmlu
ZGV4IDBmN2ZjMWI1OTBlZmEwM2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLmU2ZjE4Y2E4YjFm
MTcxOWUzNWIwNTU5NjUxODgwZGEzZWU1MDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYg
KzI5MCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNh
dG9ycygpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYg
ZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBs
YXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
cGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2Vz
Q29udGVudHNMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMGJkNWFk
YjRhZWM0MDY5NjYyMmI0ZDRiZDI3ZDgyMDkzNzQ2MTE2Li4zODBmYzk2MjRlMjk3ZGQ5N2EzMmIy
MWU1YjNkYmUzMjYzMTdlYmM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3Vw
cG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bToKKyAgICAgICAgQWRkIGEgZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rp
b24gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMS0zMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy12YWx1ZXMtNF0gRHluYW1p
YyBgZHYqYCB2aWV3cG9ydCB1bml0cyBzaG91bGQgbm90IHJlc3BlY3QgdGhlIHBhZ2Ugc2NhbGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA4NzZjNzQ0ODA4
ZjQzNjFlM2NkNTJmNTNmZmQ2ZjYwMDNhOGEwZjg3Li5lMTkxMWRmNmMwOTNlMzhjOGQ0MmZhMTc5
ZWZkNWU3NzJlYTY1ZGM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00MCw2ICs0MCwyMSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVz
cGFjZSB7CiAKK2NsYXNzIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EgOiBwdWJsaWMgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0
ZToKKyAgICBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorICAgICAgICA6IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKKyAgICB7CisgICAgfQorfTsKKwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OCw3
ICs3Myw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBjb25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVm
ZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRl
eHRTaXplKQorc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVh
dGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBh
dHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKQEAgLTY3LDE0ICs4MiwxNCBAQCBzdGF0aWMgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29u
dGV4dChXZWJDb3JlOgogICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJp
YnV0ZXMuYWxwaGEgPSB0cnVlOwogICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVy
ID0gZmFsc2U7Ci0gICAgYXV0byBjb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIGF1dG8gY29udGV4dCA9IFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsK
ICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnRleHQt
PnJlc2hhcGUoY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogICAg
IHJldHVybiBjb250ZXh0OwogfQogCi1zdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
Y2hhbmdlQ29udGV4dENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNv
bnRleHQsIGludCBpdGVyYXRpb24pCitzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
Y2hhbmdlQ29udGV4dENvbnRlbnRzKFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRl
eHQsIGludCBpdGVyYXRpb24pCiB7CiAgICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5nZWQoKTsK
ICAgICBXZWJDb3JlOjpDb2xvciBleHBlY3RlZCB7IGl0ZXJhdGlvbiAlIDIgPyBXZWJDb3JlOjpD
b2xvcjo6Z3JlZW4gOiBXZWJDb3JlOjpDb2xvcjo6eWVsbG93IH07CkBAIC0xMTksMTUgKzEzNCwx
NSBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRpcGxlR1BV
c0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVl
OwogICAgIEVYUEVDVF9FUShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQpOwotICAgIGF1dG8gZGVmYXVs
dENvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRv
IGRlZmF1bHRDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAg
QVNTRVJUX05FKGRlZmF1bHRDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93
ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6
Okxvd1Bvd2VyOwotICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFw
aGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBu
dWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRv
IGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29h
OjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRl
cyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwg
bnVsbHB0cik7CiAKICAgICBFWFBFQ1RfTkUobG93UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4
dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwo=
</data>
<flag name="commit-queue"
          id="470789"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445569</attachid>
            <date>2021-12-01 06:26:19 -0800</date>
            <delta_ts>2021-12-01 08:47:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211201162617.patch</filename>
            <type>text/plain</type>
            <size>116826</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li41
NTE0ZTlkZWY1ZTc0ZTQ4NmU4OTVjZmRkYmNhNmI0ODIyNjMzMDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
cHRyKCk7Cit9CisKK30KKwogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4g
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwpAQCAtODgs
NiArMTE3LDExIEBAIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKIAogR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckJhc2UoV1RGTW92ZShhdHRyaWJ1dGVzKSkKKyNpZiBVU0UoTklDT1NJQSkKKyAgICAs
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVn
YXRlOjpjcmVhdGUobV9uaWNvc2lhTGF5ZXIuZ2V0KCkpCisjZWxzZQorICAgICwgbV9sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0
ZShtX3RleG1hcExheWVyLmdldCgpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTEyMywxNSArMTU3LDYg
QEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxh
dGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKLXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVy
LT5jb250ZW50TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7
Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1w
bGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlci5oCmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcu
LjFlYWJlY2RiMWJmZTY3ZDVmYmI5NTE2NjNiZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVk
aWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5h
bDsKICNlbmRpZgpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEz
NjBhM2M1MmFjY2NlMTNjNjBjNGIuLmQ4ZjcwNWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUw
MDNlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAt
MzQyLDYgKzM0MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRl
bnRzTGF5ZXItPnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xh
eWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIg
PSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51
bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVy
cG9zZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1
Z0JvcmRlcihib29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0g
c2hvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRk
YTRhOGI0ZDIzNGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNm
YTc2OWRkZDc5YTA4YWIxODYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJO
YXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiAr
NzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVy
KiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNG
cm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXND
b250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9
CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY29udGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBk
MDhiYmNjZTA0MjM3ZDhhNGEzOWYuLmEzYmY1ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZj
MWRlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5
ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciogcGxhdGZvcgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
IHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlE
ZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAg
ICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30K
KwogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRl
cnMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0
Y2QuLmFhNjFhMmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3
LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wp
IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSop
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxh
dGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQy
YWY5NTE5NzE3ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzll
ZjE3OTk3MTBkYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKKyNpbXBvcnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZl
ci5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlk
VGlsZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZp
ZXdJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQpp
bmRleCBiNGQyZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1
ZWU3MDJjZTc0MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2Vi
Q29yZUZyYW1lVmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNT
Y3JvbGxWaWV3PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3
KCkgY29uc3QKQEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0
Q29udGVudHNTaXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAl
ZFxuIiwgZG9jdW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBj
bGFzc10pLCB3LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nh
c3Q8Q0dGbG9hdD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9
OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0
aWNfY2FzdDxDR0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0
ZDo6bWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50
VmlldygpIHNldEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIH0KQEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBv
aW50OwotICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xs
T3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS55LCBmbG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBh
cm91bmQgNDIxMzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3Jv
bGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9s
bFZpZXcoKSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5T
TWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNj
cm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZh
MTZmYmM2M2MwOTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBh
MjMwNjJhZTMwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVt
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAg
LTMxLDggKzMxLDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlLmgKaW5kZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIz
NDExNjllZGQwZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9j
YWxpemVkRGF0ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9M
b2NhbGl6ZWREYXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0
M2VkOTNkOWMyYi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRl
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6
ZWREYXRlQ2FjaGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxp
emVkRGF0ZUNhY2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2Fj
aGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3Qg
TQogICAgICAgICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRl
ICpkYXRlID0gW2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07
CiAgICAgICAgIE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5n
RnJvbURhdGU6ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgs
IG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBt
YXhpbXVtV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0
KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lk
dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2
NjYyMjVjMTg3N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJM
YXllciogY29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMo
KSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5
ZXJDb250ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0g
ZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAg
ICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAg
ICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4
dC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6
Q2FudmFzKTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlz
cGxheURlbGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3Jh
cGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5
ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKaW5kZXggMTBhNTM2Mjk5Y2YyM2ViOWY4NmY1NzI3ZTg1MjM4M2NlOGEwNDAwOC4u
YjhhYTlmZDU1MWE4OGE2YzNjMGE2MmE3Mjk0MGZhM2QyYzQ0MTY3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV1RGOgogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9j
b250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZl
ciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJp
Z2h0OworICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1
ZmZlcigpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFy
a0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBf
SURFTlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1
MzE3ZjlmNGEzYmU5OTZhZDQ1MWQwMTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5
MzY5NTk5MjI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50
cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXko
KTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
cjsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVy
Rmx1c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45Mzdh
OTVjNTZjZTE3NTM0YjExZmNmYjVhNDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMK
IAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogewor
ICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlz
Y2FyZCgpOwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNr
QnVmZmVyLmRpc2NhcmQoKTsKQEAgLTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIg
PDwgbV9pbmNsdWRlRGlzcGxheUxpc3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
KSB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJm
YWNlOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAg
ICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRs
ZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4o
KmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9i
dWZmZXJIYW5kbGU7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9C
VUZGRVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3Bs
YXlMaXN0SGFuZGxlOwpAQCAtMjIwLDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAg
bV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZm
ZXIsIG1fYmFja0J1ZmZlcik7CiAKICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikg
ewpAQCAtMjU3LDYgKzI0MCwxMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBw
b3J0c1BhcnRpYWxSZXBhaW50KCkKICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0g
SW5jbHVkZURpc3BsYXlMaXN0OjpObzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6c2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9i
dWZmZXJIYW5kbGUgPSBXVEZNb3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2Vi
Q29yZTo6UmVnaW9uKCk7CisgICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9u
dEJ1ZmZlckZsdXNoZXJzLnNpemUoKSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250
ZXh0KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVC
YWNraW5nU3RvcmUgPSBjb250ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMp
OwogCisgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobV9sYXllcikpIHsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyTGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIC8vIE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9s
YXRpbGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBj
b21lcyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJv
bnQsIGZhbHNlKTsKIApAQCAtMzI3LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZCht
X2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAj
ZW5kaWYKIAorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6
CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+
ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVm
ZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0
aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5k
KS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAg
ICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFh
N2Y5NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2Vh
NzZhMTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1
LDkgKzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0
aW9uKCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQt
aWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIg
KGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRl
eHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFi
YWY2M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1
ZmQxY2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYs
NiArMjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxh
eWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNl
bmRpZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShj
b25zdCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVy
OgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI6CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0
dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMu
bGF5ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVu
ZGVyTGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2Zh
MDNmZDM2ZTFlY2QwZGMwNjgwZTYwMTE5YzMuLjBiMWJkMDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNh
Y2YwZmI4ZWU3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
QEAgLTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJl
bW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VX
aXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpA
QCAtNzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVt
b3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJl
ZUhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1f
ZHJhd2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0
aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmODgzZDkyZTcyZGYyMjUxNWFjZTRiMjE3ZjhmZGEx
OGU1ODM1MTIuLmRmNGUwMWRhM2FiZTUzZmEyNWExZTk5MGYyMGY1MTFjYTI3YWFjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDk5
MCw2ICs0OTkwLDcgQEAKIAkJN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VS
ZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3Mjcx
ODIxN0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAv
KiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMx
MjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFl
YjUuLmNjNTNlOWYyZjFjZWZlYTcxNjE4NWQ0OGYwMDA4ODcwYjE1MjNjYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBA
IC0zMiwyNCArMzIsNjMgQEAKICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRp
ZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6
Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAg
V2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdh
dGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdp
bGxEZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwK
KyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5
ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRp
c3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyht
X2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250
ZW50cyhudWxscHRyKTsKKyAgICB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KKyAgICB2b2lkIHNldERpc3Bs
YXlCdWZmZXIoY29uc3QgTWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
eyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3Bs
YXlCdWZmZXIgJiYgZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIu
c2VuZFJpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZl
ciA9IGRpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpOworICAgIH0KK3ByaXZhdGU6CisgICAg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50
c1NjYWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250
ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKyAgICBjb25zdCBib29sIG1f
aXNPcGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIE1hY2hTZW5k
UmlnaHQgbV9kaXNwbGF5QnVmZmVyOworfTsKIAorY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkg
eworcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVz
LgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAg
ICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NW
KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgsMzAgKzk3LDI0IEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAg
eworICAgIH0KKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAot
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygp
OwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFk
b3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMu
ZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYg
TkRFQlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRp
ZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewog
ICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBh
dXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlC
dWZmZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFT
YW1wbGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29y
ZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4
ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpN
ZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVy
KSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3du
LCB0cnVlKTsKQEAgLTEwMCwyNiArMTMzLDE2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZl
ciA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUo
ZGlzcGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21f
d2ViR0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygp
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0g
V1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVy
KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkpOwogfQogCiB9CiAKIFJlZlB0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNW
YWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRy
aWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2
YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi5jYzQ4Yzk2YmIwZTNmNWFkN2JhYzYyNjZiZTgxOTA5MTEw
NDMxNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0MuY3BwCkBAIC0zMywzMyArMzMsNTAgQEAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNz
IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBSZWY8UGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXIm
JiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAg
fQorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKKyAgICB9Citwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZv
cm1MYXllcikpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxh
dGZvcm1MYXllcjsKK307CisKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBm
aW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKIHB1YmxpYzoKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJl
ZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJl
ZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgp
OyB9CiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLQotICAgIFBsYXRmb3JtTGF5ZXJDb250
YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
QyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJp
bmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5
ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQorICAgIHsKKyAgICB9Cisg
ICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRl
cywgcmVuZGVyaW5nQmFja2VuZCkKLSAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdD
UGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0K
LQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5
KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3
OWVkNWZlYWU3NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApA
QCAtMTczLDExICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2
ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQo
IW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAg
IAotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3du
ZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFj
a2luZ1N0b3JlID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkgfHwgb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7
CisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUp
IHsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAg
IG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGll
cy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tp
bmdTdG9yZUNoYW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQor
ICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhB
VkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVy
YXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGll
cy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwog
fQogCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpN
YWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVz
RHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJh
Y2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOwor
fQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0
ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgK
aW5kZXggNDdjMzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMx
M2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250
ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBv
dmVycmlkZTsKLQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29u
c3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhj
b25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0
ZXJUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3
MTA2MDM0NjM0Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5o
CkBAIC02MCw3ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJI
b3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0
Zm9ybUxheWVyPiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1
YjZjYTNiNzhkODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIy
NmQzMDM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dy
YXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29u
c3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7
Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNs
aWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0
byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRm
b3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIp
LCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXll
clR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwog
ICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRl
c0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsK
LQogICAgIHByb3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5w
b3NpdGlvbi54LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24p
OwogICAgIHByb3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXll
ci5hbmNob3JQb2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5h
bmNob3JQb2ludFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3Vu
ZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAg
ICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxh
eWVyVHlwZSgpID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBj
bG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8v
IEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdp
bmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1
NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250
ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAg
IGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVl
ZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3Zp
ZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsK
LSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5
KCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNl
YjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIxZjE3MTllMzViMDU1OTY1MTg4MGRh
M2VlNTA4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
Yy9HcmFwaGljc0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFw
aGljc0xheWVyV0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBH
cmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29u
dGVudHNMYXllclB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0g
ZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxs
cHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBv
c2UpOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25z
dAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTBiZDVhZGI0YWVjNDA2OTY2MjJiNGQ0YmQy
N2Q4MjA5Mzc0NjExNi4uMzgwZmM5NjI0ZTI5N2RkOTdhMzJiMjFlNWIzZGJlMzI2MzE3ZWJjNCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3Np
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MDA5CisgICAgICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1
bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuCisKIDIwMjEtMTEtMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtjc3MtdmFsdWVzLTRdIER5bmFtaWMgYGR2KmAgdmlld3BvcnQgdW5p
dHMgc2hvdWxkIG5vdCByZXNwZWN0IHRoZSBwYWdlIHNjYWxlCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggODc2Yzc0NDgwOGY0MzYxZTNjZDUyZjUzZmZkNmY2
MDAzYThhMGY4Ny4uZTE5MTFkZjZjMDkzZTM4YzhkNDJmYTE3OWVmZDVlNzcyZWE2NWRjNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDAsNiArNDAsMjEg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0
ZWRHcmFwaGljc0NvbnRleHRHTENvY29hIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQ29jb2EgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250
ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYm
IGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3
IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAg
ICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcykKKyAgICAgICAgOiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1v
dmUoYXR0cmlidXRlcykpCisgICAgeworICAgIH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dEdMQ29jb2FUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5PTElOVApAQCAtNTgsNyArNzMsNyBAQCBwcml2YXRlOgog
CiBzdGF0aWMgY29uc3QgaW50IGV4cGVjdGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAot
c3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQ
dHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0
KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNpemUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9
IHRydWU7CkBAIC02NywxNCArODIsMTQgQEAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBh
dHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxzZTsKICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsK
ICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8g
Y29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CiAgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjb250ZXh0LT5yZXNoYXBlKGNvbnRleHRTaXpl
LndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0K
IAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50
cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9u
KQorc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50
cyhUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQog
ewogICAgIGNvbnRleHQubWFya0NvbnRleHRDaGFuZ2VkKCk7CiAgICAgV2ViQ29yZTo6Q29sb3Ig
ZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8gV2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29y
ZTo6Q29sb3I6OnllbGxvdyB9OwpAQCAtMTE5LDE1ICsxMzQsMTUgQEAgVEVTVF9GKEdyYXBoaWNz
Q29udGV4dEdMQ29jb2FUZXN0LCBNQVlCRV9NdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZl
cmVuY2VNZXQKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0
cmlidXRlcy5wb3dlclByZWZlcmVuY2UsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlOjpEZWZhdWx0KTsKLSAgICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29u
dGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRv
IGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwor
ICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMg
fSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2VyQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRy
aWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250
ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBoaWdo
UGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRl
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAg
ICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgRVhQ
RUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQtPmdldFN0cmluZyhXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpKTsK
</data>
<flag name="commit-queue"
          id="470802"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445576</attachid>
            <date>2021-12-01 08:22:15 -0800</date>
            <delta_ts>2021-12-01 11:19:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211201182212.patch</filename>
            <type>text/plain</type>
            <size>116977</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li45
MDg2NzAzNTY3MjQ5ZGIzMWRiZTRmMDE4MTYwMWY0NDFjYTdkMWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKG1fbmljb3NpYUxheWVyLmdldCgpKSkKKyNlbHNlCisgICAgLCBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6
Y3JlYXRlKG1fdGV4bWFwTGF5ZXIuZ2V0KCkpKQorI2VuZGlmCiB7CiB9CiAKK1JlZlB0cjxHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcjo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsKK30KKwogUmVmUHRyPEdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7CkBAIC0xMjMsMTUgKzE1Nyw2IEBAIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNz
Q29udGV4CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0jaWYgVVNF
KE5JQ09TSUEpCi0gICAgcmV0dXJuICZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCk7Ci0j
ZWxzZQotICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOwotI2VuZGlmCi19Ci0KICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCBkMWFj
MGViN2MwYWRhMmZmODhmMTc5ZGI5Y2Q0ZWMwYTA1ZTc2Y2E3Li4xZWFiZWNkYjFiZmU2N2Q1ZmJi
OTUxNjYzYmYxZjg5OTc4YTY0YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7CiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogI2lmIEVOQUJM
RShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAjZW5kaWYKQEAgLTU3LDYg
KzU3LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKKyAgICBS
ZWY8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNjNTJhY2NjZTEzYzYwYzRi
Li5kOGY3MDVkMGFmNTlmNmIyMzY4MzhiOGU1MDY1YjZiMGRlMDAzZTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2ICszNDIsMTIgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
VGV4dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDbGllbnQo
dGhpcyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkK
K3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8g
ZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQog
ewogICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEz
MTdjZmZhYTE4NjEyOTguLjJmNDU5OGRjMGE5MmI0YzNjZjYzZmE3NjlkZGQ3OWEwOGFiMTg2MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3
IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNsaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
b250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xh
eWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAppbmRleCBhNzQ5MDdjZTFjYjcwMWI3ODcwZDA4YmJjY2UwNDIzN2Q4YTRhMzlm
Li5hM2JmNWYzYmEwZjMyYWM0MzgwMDg2Y2NjN2MzZjRjNDZmYzFkZWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
RmFjdG9yeS5oIgogI2luY2x1ZGUgIk5pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bC5oIgogI2luY2x1ZGUgIk5pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwu
aCIKQEAgLTQ5OSw2ICs1MDAsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3IKICNlbmRpZgog
fQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYg
ZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVs
ZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2
ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi5hYTYxYTJhOTg1MmUxMGVj
YWViMGQwNTQ5ZjljY2Q3NDA5OWRhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBib29s
IHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5
RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwg
Q29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TWFza0xheWVyKFJl
ZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRC
eUxheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5l
ZWRzRGlzcGxheSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggYzM5YzMxMjRlODU0MmFmOTUxOTcxNzg0YjgwZjIwNGM4
MTk1ZmNlOC4uZDMwYjRlNDEwZWZjOGE0YzA0NmQ2YmY1MmM5ZWYxNzk5NzEwZGE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJDb2xvci5o
IgogI2ltcG9ydCAiRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIkxlZ2Fj
eVRpbGVHcmlkLmgiCiAjaW1wb3J0ICJMZWdhY3lUaWxlR3JpZFRpbGUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KaW5kZXggYjRkMmZkOWRkNWM1MmVm
Yjk3YzMxZGQ3ZDA0NWQzOTk5ZmU0YmY0MS4uOWE5ZTYxOTUxNWVlNzAyY2U3NDIxOTExNWEzOGMz
NTA5N2ZiYTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9s
bFZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJ
T1MubW0KQEAgLTQxLDggKzQxLDYgQEAKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJh
bWVTY3JvbGxWaWV3PiAqU2Nyb2xsVmlldzo6c2Nyb2xsVmlldygpIGNvbnN0CkBAIC0yMDYsNyAr
MjA0LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAjZWxz
ZQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50Vmlldygp
LCBOU1N0cmluZ0Zyb21DbGFzcyhbZG9jdW1lbnRWaWV3KCkgY2xhc3NdKSwgdywgaCk7CiAjZW5k
aWYKLSAgICBOU1NpemUgdGVtcFNpemUgPSB7IHN0YXRpY19jYXN0PENHRmxvYXQ+KG1heCgwLCB3
KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KG1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3Ig
NDIxMzMxNAorICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3Rk
OjptYXgoMCwgdykpLCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6Om1heCgwLCBoKSkgfTsgLy8g
d29ya2Fyb3VuZCBmb3IgNDIxMzMxNAogICAgIFtkb2N1bWVudFZpZXcoKSBzZXRCb3VuZHNTaXpl
OnRlbXBTaXplXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CkBAIC0yMjMsNyAr
MjIxLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKICAgICBOU1BvaW50IGZsb2F0UG9pbnQgPSBzY3JvbGxQb2ludDsKLSAgICBOU1BvaW50IHRl
bXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2lu
dC54KSwgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9
OyAgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAg
TlNQb2ludCB0ZW1wUG9pbnQgPSB7IHN0ZDo6bWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdp
bl0ueCwgZmxvYXRQb2ludC54KSwgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS55LCBmbG9hdFBvaW50LnkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFy
b3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1wUG9pbnRd
OwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbQppbmRleCAxYmJhNGUyYWRjOWY2YTE2ZmJjNjNjMDk2OTNlNWM2NjFm
N2RkNTRiLi43NTIwNTIzOWQ2OGNiNWNhYmUyMGUzZTg3YjUwYTIzMDYyYWUzMDI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCkBAIC0zMSw4ICszMSw2IEBACiAjaW1w
b3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRo
ZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCmluZGV4IDFmMGMwOWYx
ZDU0NTMwODc1NTdjMWUyMGIxYThhNTBkZjk5MTBjYWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3NzI4
OTA1NTM0MTIzODdjZjZjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1t
CmluZGV4IDkzODRkMDJkYzcwYzQ5Y2NhMWM2MzVlNWU4ODZjNDNlZDkzZDljMmIuLmUwZGI4Mjdm
NDA4NGU3NzcyYzRkMDU0YTlhODM4OGViMjhmOWVmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0z
NCw4ICszNCw2IEBACiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBMb2NhbGl6ZWREYXRlQ2FjaGUmIGxvY2FsaXplZERhdGVDYWNoZSgpCkBAIC0x
NjYsNyArMTY0LDcgQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVt
V2lkdGgoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUsIGNvbnN0IE0KICAgICAgICAgW2NvbXBvbmVu
dHMgc2V0TW9udGg6KGkgKyAxKV07CiAgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtncmVnb3JpYW4g
ZGF0ZUZyb21Db21wb25lbnRzOmNvbXBvbmVudHMuZ2V0KCldOwogICAgICAgICBOU1N0cmluZyAq
Zm9ybWF0dGVkRGF0ZSA9IFtkYXRlRm9ybWF0dGVyIHN0cmluZ0Zyb21EYXRlOmRhdGVdOwotICAg
ICAgICBtYXhpbXVtV2lkdGggPSBtYXgobWF4aW11bVdpZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4
dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKKyAgICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjpt
YXgobWF4aW11bVdpZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0
ZSkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbWF4aW11bVdpZHRoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3
YjdlNDE3YjI2OWI2YjcwYmM5MjcyMzRkNTFkLi44M2U5YmJlNjY2MjI1YzE4NzdkNmRkYTM5MGVk
MTQ2MzUyNTQ0NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcApAQCAtMTA4OSw3ICsxMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5j
ZXMKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRp
bmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAg
ICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNF
bGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0
ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSwg
R3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CisgICAgICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShjb250ZXh0
LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRz
TGF5ZXJQdXJwb3NlOjpDYW52YXMpOwogCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRy
dWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDEwYTUz
NjI5OWNmMjNlYjlmODZmNTcyN2U4NTIzODNjZThhMDQwMDguLmI4YWE5ZmQ1NTFhODhhNmMzYzBh
NjJhNzI5NDBmYTNkMmM0NDE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3Nl
cnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRp
c3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3Bs
YXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2Uq
IGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlz
cGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2Uo
KTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFk
MDEwOTlmLi5jNmE3ODRkNmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYgc3VyZmFjZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBt
X2J1ZmZlckhhbmRsZS5oYXNfdmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGlu
Z0ZsdXNoZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4
MzZhM2QxN2UwNWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1
YTQ4ZGUxYjkyNWQ1MGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAw
LDYgKzEwMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdT
dG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tC
dWZmZXIuZGlzY2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBA
IC0xMTIsMjYgKzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAg
IGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlM
aXN0OwotCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRs
ZTsKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2gg
KG1fdHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlm
IChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0g
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQm
PigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNr
ZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
LSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBl
bmNvZGVyIDw8IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYg
RU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0
aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIy
MCw2ICsyMDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZy
b250QnVmZmVyKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3Rk
OjpudWxsb3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwog
CiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgp
CiAgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6
Tm87CiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6
TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92
ZShjb250ZW50cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAg
IG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXpl
KCkpOwpAQCAtMjY3LDYgKzI1NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
aXNwbGF5KCkKICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5
ZXItPmNvbnRleHQoKSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4
dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVy
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7Cisg
ICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xh
eWVyKTsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWRE
aXNwbGF5KG1fbGF5ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBN
YWtlIHRoZSBwcmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0
IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAg
ICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMy
Nyw2ICszMjMsMjAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAg
ICAgICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5
TGlzdEltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2gg
KG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byog
YmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBC
YWNraW5nU3RvcmUoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19j
YXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tl
bmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBl
OjpCaXRtYXA6CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFu
ZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KaW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhl
ODkxYi4uY2ExMTM1NmUxNTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5n
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXll
cjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVy
Lmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3Jl
YXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1
c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExh
eWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3
MzZkZGE4NWVjYzljLi40MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1
cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5s
YXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1M
YXllcjoKQEAgLTMxMiw3ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVl
Tm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlm
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9p
c0RlYnVnTGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVO
b2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICBy
ZXR1cm4gbWFrZVdpdGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJ
RDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbQppbmRleCAzNmQ1NWUzZjRkY2NmYTAzZmQzNmUxZWNkMGRjMDY4MGU2
MDExOWMzLi4wYjFiZDA0ZTBhYjQxYTU1NWUxNDIxMjIyN2IzYWNmMGZiOGVlN2I3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0Ojpt
YWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVNpbXBsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJh
Y2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVk
QmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50
c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dL
Q29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1h
a2VOb2RlKGNvbnN0IFJlbW90ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5
ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllcjoKICAgICAgICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAg
ICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybwogICAgICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElE
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkZjg4M2Q5MmU3MmRmMjI1MTVhY2U0YjIxN2Y4ZmRhMThlNTgzNTEyLi5kZjRlMDFkYTNh
YmU1M2ZhMjVhMWU5OTBmMjBmNTExY2EyN2FhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5OTAsNiArNDk5MCw3IEBACiAJCTdC
NDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAx
NDI0ZWY4YTBmM2JkOWY2NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li5jYzUzZTlmMmYxY2VmZWE3
MTYxODVkNDhmMDAwODg3MGIxNTIzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMjQgKzMyLDYzIEBACiAj
aW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkdMTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIHsKIAotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZp
bmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworY2xhc3MgRGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSog
ZGlzcGxheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQor
ICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50
c1NjYWxlKSk7CisgICAgfQorICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBsYXll
ci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUo
bV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVm
ZmVyKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAg
fQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
OjpCb3R0b21VcDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKGNvbnN0IE1hY2hT
ZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZm
ZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlC
dWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNwbGF5QnVmZmVyLmNv
cHlTZW5kUmlnaHQoKTsKKyAgICB9Citwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5
RGVsZWdhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBt
X2lzT3BhcXVlKGlzT3BhcXVlKQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1Nj
YWxlKQorICAgIHsKKyAgICB9CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0
IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZl
cjsKK307CiAKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6
IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAgICAvLyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdldCgp
OyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51
bGxwdHI7IH0KQEAgLTU4LDMwICs5NywyNCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFs
OwogI2VuZGlmCiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8
V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
T1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywg
cmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhh
LCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisgICAgTWFjaFNl
bmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3Mg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLXsK
LSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBh
bGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29u
dGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1fZGlzcGxheUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdl
YkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpOwor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1dG8gc3Vy
ZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlC
dWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZm
ZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpj
cmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0xMDAsMjYg
KzEzMywxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFy
ZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpCiAg
ICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlzcGxh
eUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVu
dHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZl
clNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXIuY29w
eVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9w
dFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRl
cmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIzZGZkN2E2
MC4uY2M0OGM5NmJiMGUzZjVhZDdiYWM2MjY2YmU4MTkwOTExMDQzMTZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtMzMsMzMgKzMz
LDUwIEBACiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldDUGxhdGZvcm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVs
ZWdhdGUoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkpOworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Bs
YXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlz
cGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAg
ICAgICA6IG1fcGxhdGZvcm1MYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQorICAgIHsKKyAg
ICB9CisgICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCiBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MgZmluYWwgOiBwdWJsaWMgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSBvdmVycmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZp
bmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigp
OyB9CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
YW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1
cm4gbnVsbHB0cjsgfQogI2VuZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7Ci0KLSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXll
cjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQ
cm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAg
LCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxl
Z2F0ZTo6Y3JlYXRlKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
Ci0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPiht
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4uNThi
NmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDExIEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVyKCkg
JiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVBy
b3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVD
aGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApA
QCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250
ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhD
RlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZh
Y2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBl
bnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRD
b250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFj
ZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3Vy
ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRl
bnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFs
dWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNh
MjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThl
YWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZF
KElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFj
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9u
RmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgK
aW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMy
NWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBw
cml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5
ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9y
bUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4
ZjRlLi42MjkyMzFiNjM5ZWE1YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAg
LTM0LDE1ICszNCwxNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLmg+CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBv
aW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1D
QUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8UGxhdGZvcm1DQUxh
eWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxh
eWVyICpwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVM
YXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigq
bmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5
ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3du
ZXIsIGNvbnRleHQpKTsKQEAgLTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwK
ICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2Vi
X2Rpc2FibGVBbGxBY3Rpb25zXTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlw
ZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCku
cG9zaXRpb24gPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5
ZXIucG9zaXRpb24ueSwgY3VzdG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCku
YW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3Vz
dG9tTGF5ZXIuYW5jaG9yUG9pbnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBw
cm9wZXJ0aWVzKCkuYm91bmRzID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYs
NiBAQCBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b206OmNsb25lKFBsYXRmb3JtQ0FMYXllcgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBh
ZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29w
eUNvbnRlbnRzID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5T
KFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNv
cHlpbmcgV2ViR0wgY29udGVudHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAg
Y29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRl
bnRzKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRl
bnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0
XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KHJlY3QpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6
c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAg
ICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBo
aWNzTGF5ZXJXQy5jcHAKaW5kZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFjY2MwNGM2MWQwZDBk
MDVmNC4uZTZmMThjYThiMWYxNzE5ZTM1YjA1NTk2NTE4ODBkYTNlZTUwOGI5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVy
V0MuY3BwCkBAIC0yOTAsNiArMjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAg
dXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRD
b250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQor
eworICAgIFBsYXRmb3JtTGF5ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRp
c3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFw
aGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
bGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGEwYmQ1YWRiNGFlYzQwNjk2NjIyYjRkNGJkMjdkODIwOTM3NDYxMTYuLjM4MGZj
OTYyNGUyOTdkZDk3YTMyYjIxZTViM2RiZTMyNjMxN2ViYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0y
NSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29h
IFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjov
LzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVycmlkZSBvZiB0aGUg
bmV3IG1lbWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCiAyMDIx
LTExLTMwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbY3Nz
LXZhbHVlcy00XSBEeW5hbWljIGBkdipgIHZpZXdwb3J0IHVuaXRzIHNob3VsZCBub3QgcmVzcGVj
dCB0aGUgcGFnZSBzY2FsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
CmluZGV4IDg3NmM3NDQ4MDhmNDM2MWUzY2Q1MmY1M2ZmZDZmNjAwM2E4YTBmODcuLmUxOTExZGY2
YzA5M2UzOGM4ZDQyZmExNzllZmQ1ZTc3MmVhNjVkYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQwLDYgKzQwLDIxIEBAIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQorICAgIHsK
KyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0NvbnRl
eHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7
CisgICAgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9Citwcml2YXRlOgorICAgIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgICAgIDog
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQorICAg
IHsKKyAgICB9Cit9OworCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENvY29hVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSAv
LyBOT0xJTlQKQEAgLTU4LDcgKzczLDcgQEAgcHJpdmF0ZToKIAogc3RhdGljIGNvbnN0IGludCBl
eHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CiAKLXN0YXRpYyBSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNv
cmU6OkludFNpemUgY29udGV4dFNpemUpCitzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNv
bnRleHRTaXplKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOwpAQCAtNjcsMTQgKzgy
LDE0IEBAIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3Jl
YXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6CiAgICAgYXR0cmlidXRlcy5zdGVuY2lsID0g
ZmFsc2U7CiAgICAgYXR0cmlidXRlcy5hbHBoYSA9IHRydWU7CiAgICAgYXR0cmlidXRlcy5wcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZTsKLSAgICBhdXRvIGNvbnRleHQgPSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAg
YXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1v
dmUoYXR0cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53aWR0aCgpLCBjb250ZXh0U2l6
ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0YXRpYyA6OnRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKK3N0YXRpYyA6OnRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoVGVzdGVkR3JhcGhpY3NDb250
ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsKICAgICBjb250ZXh0Lm1hcmtD
b250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4cGVjdGVkIHsgaXRlcmF0aW9u
ICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6OkNvbG9yOjp5ZWxsb3cgfTsK
QEAgLTExOSwxNSArMTM0LDE1IEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRHTENvY29hVGVzdCwg
TUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJlbmNlTWV0CiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRl
cy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJl
bmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCk7
Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1
dGVzIH0pOworICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0
cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoZGVmYXVsdENvbnRleHQsIG51bGxwdHIpOwogCiAg
ICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7Ci0gICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGxvd1Bvd2VyQ29u
dGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShs
b3dQb3dlckNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVu
Y2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZv
cm1hbmNlOwotICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9
IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShoaWdoUGVy
Zm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRl
eHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBoaWdo
UGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlJFTkRFUkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445594</attachid>
            <date>2021-12-01 11:20:02 -0800</date>
            <delta_ts>2021-12-02 00:43:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211201211959.patch</filename>
            <type>text/plain</type>
            <size>117759</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li5m
MTI1MmEyZWYyZmYyZWU3NGYwYjJmYjA3OThlMzczYWVjMjZlZjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKG1fbmljb3NpYUxheWVyLT5jb250ZW50TGF5ZXIoKSkpCisjZWxzZQor
ICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5
RGVsZWdhdGU6OmNyZWF0ZShtX3RleG1hcExheWVyLmdldCgpKSkKKyNlbmRpZgogewogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXI6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAg
IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7Cit9CisKIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNv
bnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtMTIzLDE1ICsxNTcsNiBAQCBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25z
dCBHcmFwaGljc0NvbnRleAogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1QbGF0Zm9ybUxheWVy
KiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotI2lmIFVTRShOSUNPU0lBKQotICAgIHJldHVybiAmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRM
YXllcigpOwotI2Vsc2UKLSAgICByZXR1cm4gbV90ZXhtYXBMYXllci5nZXQoKTsKLSNlbmRpZgot
fQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgK
aW5kZXggZDFhYzBlYjdjMGFkYTJmZjg4ZjE3OWRiOWNkNGVjMGEwNWU3NmNhNy4uMWVhYmVjZGIx
YmZlNjdkNWZiYjk1MTY2M2JmMWY4OTk3OGE2NGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpOwogCiAgICAgLy8gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsK
ICNpZiBFTkFCTEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBs
YXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlm
CkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
Jik7CisgICAgUmVmPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNj
Y2UxM2M2MGM0Yi4uZDhmNzA1ZDBhZjU5ZjZiMjM2ODM4YjhlNTA2NWI2YjBkZTAwM2U4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQy
LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+
c2V0Q2xpZW50KHRoaXMpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
IHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlE
ZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAg
ICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30K
Kwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJv
b2wgc2hvdykKIHsKICAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0
YTNmNDFkMWJhMzE3Y2ZmYWExODYxMjk4Li4yZjQ1OThkYzBhOTJiNGMzY2Y2M2ZhNzY5ZGRkNzlh
MDhhYjE4NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAt
MjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdl
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5
RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwg
Q29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250
ZW50c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQy
MzdkOGE0YTM5Zi4uYTNiZjVmM2JhMGYzMmFjNDM4MDA4NmNjYzdjM2Y0YzQ2ZmMxZGVjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVy
ZU1hcHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVN
YXBwZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
CiAjZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkK
K3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8g
ZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKaW5kZXggNjg5NmM1ZTViMDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uYWE2MWEy
YTk4NTJlMTBlY2FlYjBkMDU0OWY5Y2NkNzQwOTlkYWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVy
KiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNG
cm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1h
c2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRS
ZXBsaWNhdGVkQnlMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IGMzOWMzMTI0ZTg1NDJhZjk1MTk3MTc4
NGI4MGYyMDRjODE5NWZjZTguLmQzMGI0ZTQxMGVmYzhhNGMwNDZkNmJmNTJjOWVmMTc5OTcxMGRh
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9y
dCAiQ29sb3IuaCIKICNpbXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAjaW1w
b3J0ICJMZWdhY3lUaWxlR3JpZC5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCmluZGV4IGI0ZDJm
ZDlkZDVjNTJlZmI5N2MzMWRkN2QwNDVkMzk5OWZlNGJmNDEuLjlhOWU2MTk1MTVlZTcwMmNlNzQy
MTkxMTVhMzhjMzUwOTdmYmE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9TY3JvbGxWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
Y3JvbGxWaWV3SU9TLm1tCkBAIC00MSw4ICs0MSw2IEBACiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVW
aWV3LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi11c2luZyBuYW1l
c3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBOU1Njcm9sbFZpZXc8
V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4gKlNjcm9sbFZpZXc6OnNjcm9sbFZpZXcoKSBjb25zdApA
QCAtMjA2LDcgKzIwNCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRDb250ZW50c1Np
emUoKQogI2Vsc2UKICAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVkXG4iLCBkb2N1
bWVudFZpZXcoKSwgTlNTdHJpbmdGcm9tQ2xhc3MoW2RvY3VtZW50VmlldygpIGNsYXNzXSksIHcs
IGgpOwogI2VuZGlmCi0gICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0
PihtYXgoMCwgdykpLCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtYXgoMCwgaCkpIH07IC8vIHdvcmth
cm91bmQgZm9yIDQyMTMzMTQKKyAgICBOU1NpemUgdGVtcFNpemUgPSB7IHN0YXRpY19jYXN0PENH
RmxvYXQ+KHN0ZDo6bWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwg
aCkpIH07IC8vIHdvcmthcm91bmQgZm9yIDQyMTMzMTQKICAgICBbZG9jdW1lbnRWaWV3KCkgc2V0
Qm91bmRzU2l6ZTp0ZW1wU2l6ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpA
QCAtMjIzLDcgKzIyMSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3Np
dGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgTlNQb2ludCBmbG9hdFBvaW50ID0gc2Nyb2xsUG9pbnQ7Ci0gICAg
TlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLngs
IGZsb2F0UG9pbnQueCksIG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0
UG9pbnQueSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEz
MzE0LgorICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQueCksIHN0ZDo6bWF4KC1bc2Nyb2xsVmlldygpIHNj
cm9sbE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQg
dG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6
dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KaW5kZXggMWJiYTRlMmFkYzlmNmExNmZiYzYzYzA5
NjkzZTVjNjYxZjdkZDU0Yi4uNzUyMDUyMzlkNjhjYjVjYWJlMjBlM2U4N2I1MGEyMzA2MmFlMzAy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQpAQCAtMzEsOCArMzEs
NiBAQAogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAppbmRl
eCAxZjBjMDlmMWQ1NDUzMDg3NTU3YzFlMjBiMWE4YTUwZGY5OTEwY2FkLi40MjM0MTE2OWVkZDBl
M2U3NDhlNzcyODkwNTUzNDEyMzg3Y2Y2Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRl
Q2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERh
dGVDYWNoZS5tbQppbmRleCA5Mzg0ZDAyZGM3MGM0OWNjYTFjNjM1ZTVlODg2YzQzZWQ5M2Q5YzJi
Li5lMGRiODI3ZjQwODRlNzc3MmM0ZDA1NGE5YTgzODhlYjI4ZjllZmQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNo
ZS5tbQpAQCAtMzQsOCArMzQsNiBAQAogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogTG9jYWxpemVkRGF0ZUNhY2hlJiBsb2NhbGl6ZWREYXRlQ2Fj
aGUoKQpAQCAtMTY2LDcgKzE2NCw3IEBAIGZsb2F0IExvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3Vs
YXRlTWF4aW11bVdpZHRoKERhdGVDb21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBNCiAgICAgICAg
IFtjb21wb25lbnRzIHNldE1vbnRoOihpICsgMSldOwogICAgICAgICBOU0RhdGUgKmRhdGUgPSBb
Z3JlZ29yaWFuIGRhdGVGcm9tQ29tcG9uZW50czpjb21wb25lbnRzLmdldCgpXTsKICAgICAgICAg
TlNTdHJpbmcgKmZvcm1hdHRlZERhdGUgPSBbZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpk
YXRlXTsKLSAgICAgICAgbWF4aW11bVdpZHRoID0gbWF4KG1heGltdW1XaWR0aCwgbWVhc3VyZXIu
bWVhc3VyZVRleHQoU3RyaW5nKGZvcm1hdHRlZERhdGUpKSk7CisgICAgICAgIG1heGltdW1XaWR0
aCA9IHN0ZDo6bWF4KG1heGltdW1XaWR0aCwgbWVhc3VyZXIubWVhc3VyZVRleHQoU3RyaW5nKGZv
cm1hdHRlZERhdGUpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1heGltdW1XaWR0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTc4
NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0ZDUxZC4uODNlOWJiZTY2NjIyNWMxODc3
ZDZkZGEzOTBlZDE0NjM1MjU0NDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyArMTA4OSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21w
b3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZh
c0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRz
KSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBkb3duY2FzdDxI
VE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAgICBpZiAoYXV0
byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQotICAgICAgICAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihjb250ZXh0LT5wbGF0Zm9y
bUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOwor
ICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdh
dGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVy
OjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0No
YW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUy
MTA4NDdlN2VhZWY4OTc0YTAyNzg3ZmIxMTBkOTIzMi4uOGU2ZmE3YmU3YjM5YWE4NzY1ZGI2ZTFm
MDc5ZTk4MDUzMmRmNzgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTczLDEwICs3Myw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKTsKICNlbmRpZgog
Ci0jaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsgfQotI2Vu
ZGlmCi0KIHByb3RlY3RlZDoKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQg
aW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggMTBhNTM2Mjk5Y2YyM2ViOWY4NmY1
NzI3ZTg1MjM4M2NlOGEwNDAwOC4uYjhhYTlmZDU1MWE4OGE2YzNjMGE2MmE3Mjk0MGZhM2QyYzQ0
MTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNzgsOCArNzgs
OCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOgogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0
cmVhbVRocmVhZCk7CiAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIElP
U3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAg
IE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9
IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAg
ICAgICAgIG1fY29udGV4dC0+bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9T
VVJGQUNFX1NFVF9PV05FUlNISVBfSURFTlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
CmluZGV4IDdkOWU4NjdmOThlYjk1MzE3ZjlmNGEzYmU5OTZhZDQ1MWQwMTA5OWYuLmM2YTc4NGQ2
ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5NTk5MjI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlzcGxh
eShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwog
CisgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNlSGFuZGxl
KTsKICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVySGFuZGxlLmhh
c192YWx1ZSgpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYy
MWRjM2IwYTVkYTNmZmNkLi45MzdhOTVjNTZjZTE3NTM0YjExZmNmYjVhNDhkZTFiOTI1ZDUwZjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlwZSwg
V2ViQ29yZTo6RmxvYXRTaXplIHMKIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xl
YXJCYWNraW5nU3RvcmUoKQogeworICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0Owog
ICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7
CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsKQEAgLTExMiwyNiArMTEzLDcg
QEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lz
T3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlRGlzcGxheUxpc3Q7Ci0KLSAgICBzdGQ6
Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmIChtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAg
ICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tp
bmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
VHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgICAg
IGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJh
Y2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGVuY29kZXIgPDwgaGFuZGxl
OworICAgIGVuY29kZXIgPDwgbV9idWZmZXJIYW5kbGU7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExB
WV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwpAQCAtMjIwLDYgKzIwMiw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAg
ICAgICB9CiAgICAgfQogCisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
c3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKICAgICBpZiAobV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpAQCAtMjU3LDYgKzI0MCwxMyBAQCBib29sIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkKICAgICByZXR1cm4gbV9p
bmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpObzsKIH0KIAordm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYg
Y29udGVudHMpCit7CisgICAgbV9idWZmZXJIYW5kbGUgPSBXVEZNb3ZlKGNvbnRlbnRzKTsKKyAg
ICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7CisgICAgbV9wYWludGluZ1JlY3Rz
LmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQog
ewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUoKSk7CkBAIC0yNjcsNiAr
MjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgIGlm
IChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgpKQog
ICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250ZXh0LT5iYWNraW5nU3RvcmVX
aWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRm
b3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsKKyAgICAgICAgbV9sYXllci0+
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICBt
X2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIE1ha2UgdGhlIHByZXZpb3Vz
IGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5IHRo
ZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZvbGF0
aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApAQCAtMzI3LDYgKzMyMywyMCBAQCBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9mcm9udEJ1
ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIt
PmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5kaWYKIAorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAg
Y2FzZSBUeXBlOjpJT1N1cmZhY2U6CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAg
ICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQor
ICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoKKyAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2Fz
dDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpp
bmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTExMzU2ZTE1
MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAgICAg
ICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJ
RCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAg
ICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGlu
Z0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAgICAg
ICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRl
eHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNjOWMuLjQz
NTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwK
ICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRy
ZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMzEyLDcg
KzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRyZWVI
b3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExh
eWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRpZXMuaG9z
dGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMwNjgwZTYwMTE5YzMuLjBiMWJkMDRl
MGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJl
bW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
ICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcg
YWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGls
ZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVt
b3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBp
ZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9IGFk
b3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvCiAg
ICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRlbnRpZmll
cigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmODgzZDkyZTcy
ZGYyMjUxNWFjZTRiMjE3ZjhmZGExOGU1ODM1MTIuLmRmNGUwMWRhM2FiZTUzZmEyNWExZTk5MGYy
MGY1MTFjYTI3YWFjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDk5MCw2ICs0OTkwLDcgQEAKIAkJN0I0ODNGMUMyNUNEREE5QjAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNEREE5
QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRD
MEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1
NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLmNjNTNlOWYyZjFjZWZlYTcxNjE4NWQ0OGYwMDA4ODcw
YjE1MjNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwyNCArMzIsNjMgQEAKICNpbXBvcnQgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBv
cnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5oPgot
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCi1j
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJHTExheWVyOyB9Ci0gICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQg
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3Bs
YXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9
CisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92
ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lz
T3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUp
OworICAgIH0KKyAgICB2b2lkIGRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXll
cikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAg
ICBsYXllci5zZXRDb250ZW50cyhtX2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICB9CisgICAgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAg
IH0KKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3QgTWFjaFNlbmRSaWdodCYgZGlzcGxh
eUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAg
ICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQo
KSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpOwor
ICAgIH0KK3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlz
T3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFx
dWUpCisgICAgICAgICwgbV9jb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAg
IH0KKyAgICBjb25zdCBib29sIG1faXNPcGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50
c1NjYWxlOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworfTsKIAorY2xhc3Mg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkgeworcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgs
MzAgKzk3LDI0IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZh
dGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dl
YkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNw
bGF5QnVmZmVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5k
KQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2
aWNlUGl4ZWxSYXRpbykpCisgICAgeworICAgIH0KKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxh
eUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdw
dVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0Jh
Y2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERl
dmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0
cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAi
V2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0K
LQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKQogewogICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQ
aXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJp
Z2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRv
IHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJm
YWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxl
KFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRl
b1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKQEAgLTEwMCwyNiArMTMzLDE2IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAg
ICAgfQogICAgIGlmICghZGlzcGxheUJ1ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuOwot
ICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0gICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlz
cGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlCdWZm
ZXItPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsKICAg
ICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5zZXREaXNwbGF5QnVmZmVyKG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkpOwog
fQogCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwot
ICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRl
eCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi5jYzQ4Yzk2YmIwZTNm
NWFkN2JhYzYyNjZiZTgxOTA5MTEwNDMxNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBAIC0zMywzMyArMzMsNTAgQEAKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0Zm9y
bUxheWVyR0NHTC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSB7CiAKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsK
K3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBs
YXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBs
YXRmb3JtTGF5ZXIpKSk7CisgICAgfQorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQo
KTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxh
dGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9y
bUxheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9y
bUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKK307CisKIGNsYXNzIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5IHsKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92
ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1M
YXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJl
dHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAj
ZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLQot
ICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAg
ICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9u
LCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFr
ZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cikpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNz
Q29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLSAgICAsIG1fcGxhdGZv
cm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBl
YThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdi
ODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIo
KSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4
dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkp
KSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVs
ZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
JiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0K
LQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNr
aW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkp
CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2
IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkK
IHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0g
bnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sK
KyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9y
ZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2Uu
Y3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAg
IEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7
CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRs
ZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3By
b3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUw
NGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcg
KzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAg
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsK
KyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZk
YjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2
MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0
OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9v
bCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmlu
ZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2Mzll
YTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4
dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAor
c3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0
Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0g
QCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5
ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9y
bUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOwpA
QCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1M
YXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlv
bnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0
UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBj
dXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZs
b2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0b21MYXllci5hbmNob3JQ
b2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHByb3BlcnRpZXMoKS5ib3Vu
ZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxh
dGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxz
ZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlk
ZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9j
XSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJHTCBjb250
ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVudHMgPSBm
YWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFtt
X3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAg
ICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7
CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXko
KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5
ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRO
ZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApp
bmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0Li5lNmYxOGNhOGIx
ZjE3MTllMzViMDU1OTY1MTg4MGRhM2VlNTA4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2
ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzRnJvbURpc3Bs
YXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYm
IGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1M
YXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNl
c0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTBiZDVh
ZGI0YWVjNDA2OTY2MjJiNGQ0YmQyN2Q4MjA5Mzc0NjExNi4uMzgwZmM5NjI0ZTI5N2RkOTdhMzJi
MjFlNWIzZGJlMzI2MzE3ZWJjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTI1ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1
cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0
aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTEtMzAgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtjc3MtdmFsdWVzLTRdIER5bmFt
aWMgYGR2KmAgdmlld3BvcnQgdW5pdHMgc2hvdWxkIG5vdCByZXNwZWN0IHRoZSBwYWdlIHNjYWxl
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVz
dEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggODc2Yzc0NDgw
OGY0MzYxZTNjZDUyZjUzZmZkNmY2MDAzYThhMGY4Ny4uZTE5MTFkZjZjMDkzZTM4YzhkNDJmYTE3
OWVmZDVlNzcyZWE2NWRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbQpAQCAtNDAsNiArNDAsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1l
c3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hIDogcHVibGljIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92
ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9CisgICAgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ByaXZh
dGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpCisgICAgeworICAgIH0KK307CisK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5PTElOVApAQCAtNTgs
NyArNzMsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3QgaW50IGV4cGVjdGVkRGlzcGxheUJ1
ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50U2l6ZSBjb250
ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3Jl
YXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNpemUpCiB7CiAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAg
YXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02NywxNCArODIsMTQgQEAgc3RhdGljIFJl
ZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENv
bnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxzZTsKICAgICBhdHRy
aWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjb250ZXh0
LT5yZXNoYXBlKGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKICAg
ICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
IGNoYW5nZUNvbnRleHRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hJiBj
b250ZXh0LCBpbnQgaXRlcmF0aW9uKQorc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
IGNoYW5nZUNvbnRleHRDb250ZW50cyhUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hJiBjb250
ZXh0LCBpbnQgaXRlcmF0aW9uKQogewogICAgIGNvbnRleHQubWFya0NvbnRleHRDaGFuZ2VkKCk7
CiAgICAgV2ViQ29yZTo6Q29sb3IgZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8gV2ViQ29yZTo6
Q29sb3I6OmdyZWVuIDogV2ViQ29yZTo6Q29sb3I6OnllbGxvdyB9OwpAQCAtMTE5LDE1ICsxMzQs
MTUgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0LCBNQVlCRV9NdWx0aXBsZUdQ
VXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1
ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0KTsKLSAgICBhdXRvIGRlZmF1
bHRDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0
byBkZWZhdWx0Q29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAg
IEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBv
d2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNl
OjpMb3dQb3dlcjsKLSAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gVGVzdGVkR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2VyQ29udGV4dCwg
bnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7Ci0gICAgYXV0
byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0
ZXMgfSk7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQs
IG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+Z2V0U3RyaW5nKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJmb3JtYW5jZUNvbnRl
eHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445686</attachid>
            <date>2021-12-02 00:43:30 -0800</date>
            <delta_ts>2021-12-02 02:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211202104328.patch</filename>
            <type>text/plain</type>
            <size>118626</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li44
Y2NiNjk1Nzg0NmQzMGE3YjI5ZTk0Y2NjZjk0ZjExOGZiY2E1MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UK
KyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKIHsKIH0KIAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCiBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTEyMywxNSArMTU3LDYgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50
TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5o
CmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjFlYWJlY2Ri
MWJmZTY3ZDVmYmI5NTE2NjNiZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFj
Y2NlMTNjNjBjNGIuLmQ4ZjcwNWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5
YTA4YWIxODYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29u
dGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0
MjM3ZDhhNGEzOWYuLmEzYmY1ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2Up
Cit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFh
MmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRN
YXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3
ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBk
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBv
cnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2lt
cG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQy
ZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0
MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3
PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QK
QEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNT
aXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9j
dW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3
LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3Jr
YXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAs
IGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNl
dEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
QEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAg
IE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54
LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9h
dFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIx
MzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkg
c2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50
IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50
OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2Mw
OTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMx
LDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5k
ZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQw
ZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWRE
YXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMy
Yi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2Fj
aGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNh
Y2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1
bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAg
ICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0g
W2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAg
IE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6
ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVy
Lm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lk
dGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhm
b3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3
ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3
N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52
YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50
cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZv
cm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsK
KyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVn
YXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXll
cjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGFlMzE3YjE1
MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjhlNmZhN2JlN2IzOWFhODc2NWRiNmUx
ZjA3OWU5ODA1MzJkZjc4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC03MywxMCArNzMs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCk7CiAjZW5kaWYK
IAotI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCk7IH0KLSNl
bmRpZgotCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2b2lk
IGluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDEwYTUzNjI5OWNmMjNlYjlmODZm
NTcyN2U4NTIzODNjZThhMDQwMDguLmI4YWE5ZmQ1NTFhODhhNmMzYzBhNjJhNzI5NDBmYTNkMmM0
NDE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTc4LDggKzc4
LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9z
dHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBJ
T1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAg
ICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIg
PSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewog
ICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKICNpZiBIQVZFKElP
U1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aAppbmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRk
NmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsK
IAorICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRs
ZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5o
YXNfdmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThm
MjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUs
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNs
ZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgp
OwogICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9p
c09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3Rk
OjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAg
ICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5k
ID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNr
aW5nU3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFR5cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAg
ICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRs
ZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BM
QVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAg
ICAgICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAg
IHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1f
aW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYm
IGNvbnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7Cisg
ICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0
cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkK
IHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYg
KzI1NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBp
ZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkK
ICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3Jl
V2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAg
bV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91
cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0
aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xh
dGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAg
Ym9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRC
dWZmZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVy
LT5jcmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAg
IGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAg
ICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkK
KyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAg
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nh
c3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
aW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUx
NTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAg
ICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0
SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAg
ICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3Rp
bmdDb250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAg
ICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250
ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40
MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
YXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVM
CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJU
cmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3
ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVl
SG9zdCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRo
UGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhM
YXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhv
c3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bQppbmRleCAzNmQ1NWUzZjRkY2NmYTAzZmQzNmUxZWNkMGRjMDY4MGU2MDExOWMzLi4wYjFiZDA0
ZTBhYjQxYTU1NWUxNDIxMjIyN2IzYWNmMGZiOGVlN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBS
ZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgor
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6
CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3
IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRp
bGVkQmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJl
bW90ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAg
aWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBh
ZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwog
ICAgICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjg4M2Q5MmU3
MmRmMjI1MTVhY2U0YjIxN2Y4ZmRhMThlNTgzNTEyLi5kZjRlMDFkYTNhYmU1M2ZhMjVhMWU5OTBm
MjBmNTExY2EyN2FhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ5OTAsNiArNDk5MCw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0
QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVD
Qzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2
NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li5jYzUzZTlmMmYxY2VmZWE3MTYxODVkNDhmMDAwODg3
MGIxNTIzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMjQgKzMyLDYzIEBACiAjaW1wb3J0ICJSZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4K
LSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAot
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViR0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAg
fQorICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBv
dmVycmlkZXMuCisgICAgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9p
c09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxl
KTsKKyAgICB9CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5
ZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAg
ICAgbGF5ZXIuc2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAg
ICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3Bs
YXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0
KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsK
KyAgICB9Citwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBp
c09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3Bh
cXVlKQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAg
ICB9CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVu
dHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKK2NsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdldCgpOyB9CisgICAgUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4
LDMwICs5NywyNCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2
YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93
ZWJHTExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlz
cGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZl
ckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRl
dmljZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3Bs
YXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29u
bmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJz
ID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0
dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpA
IldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19
Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNW
UGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRS
aWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3Vy
ZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBs
ZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Vmlk
ZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0xMDAsMjYgKzEzMywxNiBAQCB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQog
ICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsK
LSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rp
c3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVm
ZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAg
ICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsK
IH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsK
LSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5k
ZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIzZGZkN2E2MC4uY2M0OGM5NmJiMGUz
ZjVhZDdiYWM2MjY2YmU4MTkwOTExMDQzMTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtMzMsMzMgKzMzLDUwIEBACiAjaW5jbHVk
ZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldDUGxhdGZv
cm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7
CitwdWJsaWM6CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQ
bGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShw
bGF0Zm9ybUxheWVyKSkpOworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0
KCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBs
YXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZv
cm1MYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQorICAgIHsKKyAgICB9CisgICAgUGxhdGZv
cm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCiBjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSB7CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBv
dmVycmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyBy
ZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0K
LSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKKyAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisg
ICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlv
biwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1h
a2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpKSkKKyAgICB7CisgICAgfQorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
PiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgLCBtX3BsYXRm
b3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNWQw
ZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4uNThiNmFlN2ZjOWJhMGM3YWY3
Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDExIEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZUNv
bnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlIHx8IG93bmVy
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmNvbnRl
eHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgp
KSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVyKCkgJiYgKG93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRl
bGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2Vk
KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKICAgICB9
Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgp
KQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApAQCAtNjgzLDggKzY4Mywy
NiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CiAK
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUp
CiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9
IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7
CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3Rv
cmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNl
LmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgp
OworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2VIYW5k
bGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgbV9w
cm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNhMjE1NGRiNDcwNjA0MjY1
MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThlYWNhYTY2M2M4ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTEyNyw3
ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNl
dENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAg
ICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7
CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKaW5kZXggZTYyNDdkYWE2
ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMyNWYxODJlOTI5MjFjMjYz
NjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4
dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwotICAgIGJv
b2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpp
bmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4ZjRlLi42MjkyMzFiNjM5
ZWE1YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTM0LDE1ICszNCwxNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJF
eHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAK
K3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxh
dGZvcm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9
IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0
JiBjb250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZv
cm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQpKTsK
QEAgLTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3Jt
TGF5ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rp
b25zXTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9h
dFBvaW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwg
Y3VzdG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBG
bG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9y
UG9pbnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91
bmRzID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBs
YXRmb3JtQ0FMYXllcgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXll
ciBhbGxvY10gaW5pdF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29weUNvbnRlbnRzID0gZmFs
c2U7Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxv
Y10gaW5pdF0pOwotICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29u
dGVudHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAgY29weUNvbnRlbnRzID0g
ZmFsc2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBb
bV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0g
ICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3Qp
OworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3Qp
OwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5
KCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxh
eWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
TmVlZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAK
aW5kZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFjY2MwNGM2MWQwZDBkMDVmNC4uZTZmMThjYThi
MWYxNzE5ZTM1YjA1NTk2NTE4ODBkYTNlZTUwOGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCkBAIC0yOTAs
NiArMjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1M
YXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRp
Y2F0b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNw
bGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4m
JiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworICAgIFBsYXRmb3Jt
TGF5ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+
cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVyV0M6OnVz
ZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NM
YXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2NmY2YTA5ODVlYmU1Li44
YjQ4ODMzMjVlMWIyODgwODc1MTcyYjk1YjNmNzMwN2Q2MDAxNzBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaApAQCAt
NzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9v
bCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNvcmU6OkltYWdlKikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYTBiZDVhZGI0YWVjNDA2OTY2MjJiNGQ0YmQyN2Q4MjA5Mzc0NjExNi4uMzgwZmM5NjI0
ZTI5N2RkOTdhMzJiMjFlNWIzZGJlMzI2MzE3ZWJjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTI1ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgV2Vi
R0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8vODM0
MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcg
bWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTEt
MzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtjc3MtdmFs
dWVzLTRdIER5bmFtaWMgYGR2KmAgdmlld3BvcnQgdW5pdHMgc2hvdWxkIG5vdCByZXNwZWN0IHRo
ZSBwYWdlIHNjYWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5k
ZXggODc2Yzc0NDgwOGY0MzYxZTNjZDUyZjUzZmZkNmY2MDAzYThhMGY4Ny4uZTE5MTFkZjZjMDkz
ZTM4YzhkNDJmYTE3OWVmZDVlNzcyZWE2NWRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQpAQCAtNDAsNiArNDAsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29h
IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisgICAgeworICAg
ICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAg
ICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxw
dHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpCisgICAgewor
ICAgIH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5P
TElOVApAQCAtNTgsNyArNzMsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3QgaW50IGV4cGVj
dGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6
SW50U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4
dFNpemUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02NywxNCArODIsMTQg
QEAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVE
ZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxz
ZTsKICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZl
RHJhd2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRv
IGNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShh
dHRyaWJ1dGVzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBjb250ZXh0LT5yZXNoYXBlKGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhl
aWdodCgpKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIDo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQorc3RhdGljIDo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQogewogICAgIGNvbnRleHQubWFya0NvbnRl
eHRDaGFuZ2VkKCk7CiAgICAgV2ViQ29yZTo6Q29sb3IgZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAy
ID8gV2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29yZTo6Q29sb3I6OnllbGxvdyB9OwpAQCAt
MTE5LDE1ICsxMzQsMTUgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0LCBNQVlC
RV9NdWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVz
ZU1ldGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2Us
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0KTsKLSAg
ICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMg
fSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1
dGVzIH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBh
dHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gbG93UG93ZXJDb250ZXh0
ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bv
d2VyQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFu
Y2U7Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3Jt
YW5jZUNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+
Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJm
b3JtYW5jZUNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVO
REVSRVIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445695</attachid>
            <date>2021-12-02 02:10:35 -0800</date>
            <delta_ts>2021-12-02 03:56:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211202121033.patch</filename>
            <type>text/plain</type>
            <size>119194</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li44
Y2NiNjk1Nzg0NmQzMGE3YjI5ZTk0Y2NjZjk0ZjExOGZiY2E1MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UK
KyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKIHsKIH0KIAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCiBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTEyMywxNSArMTU3LDYgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50
TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5o
CmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjFlYWJlY2Ri
MWJmZTY3ZDVmYmI5NTE2NjNiZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFj
Y2NlMTNjNjBjNGIuLmQ4ZjcwNWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5
YTA4YWIxODYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29u
dGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0
MjM3ZDhhNGEzOWYuLmEzYmY1ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2Up
Cit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFh
MmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRN
YXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3
ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBk
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBv
cnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2lt
cG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQy
ZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0
MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3
PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QK
QEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNT
aXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9j
dW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3
LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3Jr
YXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAs
IGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNl
dEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
QEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAg
IE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54
LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9h
dFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIx
MzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkg
c2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50
IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50
OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2Mw
OTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMx
LDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5k
ZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQw
ZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWRE
YXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMy
Yi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2Fj
aGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNh
Y2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1
bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAg
ICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0g
W2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAg
IE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6
ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVy
Lm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lk
dGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhm
b3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3
ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3
N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52
YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50
cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZv
cm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsK
KyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVn
YXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXll
cjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGFlMzE3YjE1
MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjE1OWU1MDU2NzcwNDMzMDFmZDE5ODUw
YzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC03NCw3ICs3NCw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBs
YXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxheWVyaW5nIHZpb2xhdGlv
biBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3MjdlODUyMzgzY2U4YTA0MDA4
Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQxNjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBt
X2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVm
ZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNlbmRSaWdodCBzZW5k
UmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5
QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgbV9jb250ZXh0LT5t
YXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJ
UF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCmluZGV4IDIyNGZhMThj
ODE1OTI2MmZlZjNkZThlZTUwN2E1YjdkN2Q3OWRiOTguLjc0OTc3ZTMzMDQyZmYwYTczZWYwZjg2
ODZkODk5ZDBiZTI3NWU4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcApAQCAt
NjUsNiArNjUsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorUGxhdGZvcm1MYXllciog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRmb3Jt
TGF5ZXIoKTsKIH0KKyNlbmRpZgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgK
aW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uYzZhNzg0ZDZk
MTkzZDA4YWU2YzA5YjZmYTdlODkzNjk1OTkyMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAK
KyAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUp
OwogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyOworICAgICAgICByZXR1cm4gbV9idWZmZXJIYW5kbGUuaGFz
X3ZhbHVlKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVkNGU4ZjIx
ZGMzYjBhNWRhM2ZmY2QuLjkzN2E5NWM1NmNlMTc1MzRiMTFmY2ZiNWE0OGRlMWI5MjVkNTBmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBX
ZWJDb3JlOjpGbG9hdFNpemUgcwogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVh
ckJhY2tpbmdTdG9yZSgpCiB7CisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsK
ICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOwpAQCAtMTEyLDI2ICsxMTMsNyBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNP
cGFxdWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKLQotICAgIHN0ZDo6
b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAg
ICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2lu
Z1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBU
eXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICAgICAg
aGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7
CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlckhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7CkBAIC0yMjAsNiArMjAyLDcgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBz
dGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0yNTcsNiArMjQwLDEzIEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2lu
Y2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBj
b250ZW50cykKK3sKKyAgICBtX2J1ZmZlckhhbmRsZSA9IFdURk1vdmUoY29udGVudHMpOworICAg
IG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMu
Y2xlYXIoKTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7
CiAgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKQEAgLTI2Nyw2ICsy
NTcsMTIgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgaWYg
KFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQgPSBtX2xheWVyLT5jb250ZXh0KCkpCiAg
ICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbnRleHQtPmJhY2tpbmdTdG9yZVdp
bGxCZURpc3BsYXllZCgqdGhpcyk7CiAKKyAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgeworICAgICAgICBtX2xheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CisgICAgICAgIG1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMg
ZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhl
IHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRp
bGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogCkBAIC0zMjcsNiArMzIzLDIwIEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICBtX2Zyb250QnVm
ZmVyRmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+
Y3JlYXRlRmx1c2hlcigpKTsKICNlbmRpZgogCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBj
YXNlIFR5cGU6OklPU3VyZmFjZToKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAg
ICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisg
ICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qml0bWFwOgorICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0
PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmlu
ZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUx
MWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmExNDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTEwMzUsOSArMTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAg
ICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElE
IDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAg
ICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5n
Q29udGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAg
ICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4
dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0KaW5kZXggNzk0MDNhMWJhZjYzYmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1
MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFjZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0KQEAgLTI5Niw2ICsyOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5
ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVNb2RlbExheWVyOgogI2VuZGlmCisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJl
ZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyAr
MzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhv
c3QpCiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBs
YWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5
ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0
aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
aW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2ZkMzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUw
YWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBmYjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVt
b3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgog
ICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBh
bGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxl
ZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1v
dGVMCiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlm
ICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRv
cHROUyhbW1dLVUlSZW1vdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAg
ICAgICAgICAgICAgICBwaWQ6bV9kcmF3aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVy
KCkgY29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGY4ODNkOTJlNzJk
ZjIyNTE1YWNlNGIyMTdmOGZkYTE4ZTU4MzUxMi4uZGY0ZTAxZGEzYWJlNTNmYTI1YTFlOTkwZjIw
ZjUxMWNhMjdhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00OTkwLDYgKzQ5OTAsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMw
QjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNiZDlmNjU2
NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uY2M1M2U5ZjJmMWNlZmVhNzE2MTg1ZDQ4ZjAwMDg4NzBi
MTUyM2NjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2MyBAQAogI2ltcG9ydCAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVyLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKLWNs
YXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUmVmPERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBj
b250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOworICAgIH0K
KyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3Zl
cnJpZGVzLgorICAgIHZvaWQgd2lsbERlbGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNP
cGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7
CisgICAgfQorICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVy
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAg
IGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKyAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAg
fQorICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5
QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgp
ID09IG1fZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyID0gZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCk7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNP
cGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1
ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAg
fQorICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRz
U2NhbGU7CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7Cit9OwogCitjbGFzcyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSB7CitwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwz
MCArOTcsMjQgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgogcHJpdmF0
ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Rpc3Bs
YXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5
QnVmZmVyOworICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRy
cy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJX
ZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCiB7CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBp
eGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmln
aHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZh
Y2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUo
V1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVv
Um90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwpAQCAtMTAwLDI2ICsxMzMsMTYgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAg
ICB9CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0g
ICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNw
bGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZl
ci0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAg
IG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUtPnNldERpc3BsYXlCdWZmZXIobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9
CiAKIH0KIAogUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0g
ICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBjb250ZXh0OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4
IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLmNjNDhjOTZiYjBlM2Y1
YWQ3YmFjNjI2NmJlODE5MDkxMTA0MzE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKQEAgLTMzLDMzICszMyw1MCBAQAogI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3Jt
TGF5ZXJHQ0dMLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIHsKIAorY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxh
dGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxh
dGZvcm1MYXllcikpKTsKKyAgICB9CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgp
OworICAgIH0KK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0
Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3Jt
TGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICB7CisgICAgfQorICAgIFBsYXRmb3Jt
TGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgewogcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3Zl
cnJpZGVzLgogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxh
eWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0
dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotCi0g
ICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7CisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtl
VW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSkpCisgICAgeworICAgIH0KKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9y
bUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpKQotewotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qzo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVh
OGJkYjkxYWIxNDE4NzUwMDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4
NmYyMDQ4ZGFmMTM3MzQ1MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250
ZXh0JiBjbwogICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigp
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0
ID09IG1fY29udGV4dCk7CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
JiYgKCFvd25lcigpIHx8ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkp
IHsKKyAgICBib29sIHVzZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KHRoaXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiAhdXNlc0JhY2tpbmdTdG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ID0gbnVsbHB0cjsKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQot
CiAgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZUF0dGFjaGVkICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkK
ICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYg
QEAgQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2
b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQog
eworICAgIGlmICghdmFsdWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBu
dWxscHRyOworfQorCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQorewor
ICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3Jl
KCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5j
cmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAg
QVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsK
KyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxl
LmNvcHlTZW5kUmlnaHQoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJv
cGVydGllcy5jb250ZW50c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0
YmFlMGZhNjhjLi43MWQ0MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyAr
MTI3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
b250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAg
dm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwor
I2VuZGlmCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRi
MDBlMjUwODI0ZjY4YzkxODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYx
ODUwYWJmMmE5YTc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7
CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29s
IG1fcHJvdmlkZXNDb250ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5k
ZXggMjdiMGZjMDA1MTg1ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVh
NWMxNmQ2YjU0NzU4MGJmNmMyMjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0
cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRm
b3JtQ0FMYXllciI7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBA
IldLUGxhdGZvcm1DQUxheWVyIjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXll
ciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3Jt
TGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBA
IC04Miw4ICs4Myw2IEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tKExheWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxh
eWVyID0gY3VzdG9tTGF5ZXI7CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9u
c107CiAKLSAgICBtX3Byb3ZpZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29u
dGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQ
b2ludDNEKGN1c3RvbUxheWVyLnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1
c3RvbUxheWVyLnpQb3NpdGlvbik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxv
YXRQb2ludDNEKGN1c3RvbUxheWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBv
aW50LnksIGN1c3RvbUxheWVyLmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5k
cyA9IGN1c3RvbUxheWVyLmJvdW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0
Zm9ybUNBTGF5ZXIKICAgICAgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNl
OwotICAgIH0gZWxzZSBpZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyKSB7Ci0gICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRl
bnRzIGJyZWFrcyB0aGUgb3JpZ2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZh
bHNlOwogICAgIH0KIApAQCAtMTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b206OnNldENvbnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21f
cGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAg
ICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
KyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
IH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgp
CiB7Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXll
ciBzZXROZWVkc0Rpc3BsYXldOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5l
ZWRzRGlzcGxheSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmlu
ZGV4IDBmN2ZjMWI1OTBlZmEwM2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLmU2ZjE4Y2E4YjFm
MTcxOWUzNWIwNTU5NjUxODgwZGEzZWU1MDhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYg
KzI5MCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNh
dG9ycygpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYg
ZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBs
YXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
cGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2Vz
Q29udGVudHNMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5
ZXJXQy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXll
cldDLmgKaW5kZXggOTYyNzQxZmRkMDE1YTIzOGQ0OGQ0NTcwNGM1NjZmNmEwOTg1ZWJlNS4uOGI0
ODgzMzI1ZTFiMjg4MDg3NTE3MmI5NWIzZjczMDdkNjAwMTcwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKQEAgLTc2
LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXll
cigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGEwYmQ1YWRiNGFlYzQwNjk2NjIyYjRkNGJkMjdkODIwOTM3NDYxMTYuLjM4MGZjOTYyNGUy
OTdkZDk3YTMyYjIxZTViM2RiZTMyNjMxN2ViYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVycmlkZSBvZiB0aGUgbmV3IG1l
bWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCiAyMDIxLTExLTMw
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbY3NzLXZhbHVl
cy00XSBEeW5hbWljIGBkdipgIHZpZXdwb3J0IHVuaXRzIHNob3VsZCBub3QgcmVzcGVjdCB0aGUg
cGFnZSBzY2FsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4
IDg3NmM3NDQ4MDhmNDM2MWUzY2Q1MmY1M2ZmZDZmNjAwM2E4YTBmODcuLmUxOTExZGY2YzA5M2Uz
OGM4ZDQyZmExNzllZmQ1ZTc3MmVhNjVkYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EubW0KQEAgLTQwLDYgKzQwLDIxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZShXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENv
Y29hKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAg
fQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9Citwcml2YXRlOgorICAgIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgICAgIDogV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQorICAgIHsKKyAg
ICB9Cit9OworCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENvY29hVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZSAvLyBOT0xJ
TlQKQEAgLTU4LDcgKzczLDcgQEAgcHJpdmF0ZToKIAogc3RhdGljIGNvbnN0IGludCBleHBlY3Rl
ZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CiAKLXN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6Oklu
dFNpemUgY29udGV4dFNpemUpCitzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRT
aXplKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOwpAQCAtNjcsMTQgKzgyLDE0IEBA
IHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVm
YXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6CiAgICAgYXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7
CiAgICAgYXR0cmlidXRlcy5hbHBoYSA9IHRydWU7CiAgICAgYXR0cmlidXRlcy5wcmVzZXJ2ZURy
YXdpbmdCdWZmZXIgPSBmYWxzZTsKLSAgICBhdXRvIGNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAgYXV0byBj
b250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0
cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWln
aHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0YXRpYyA6OnRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKK3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsKICAgICBjb250ZXh0Lm1hcmtDb250ZXh0
Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4cGVjdGVkIHsgaXRlcmF0aW9uICUgMiA/
IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6OkNvbG9yOjp5ZWxsb3cgfTsKQEAgLTEx
OSwxNSArMTM0LDE1IEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRHTENvY29hVGVzdCwgTUFZQkVf
TXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJlbmNlTWV0CiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VN
ZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCk7Ci0gICAg
YXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNy
ZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0p
OworICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29h
OjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRl
cyB9KTsKICAgICBBU1NFUlRfTkUoZGVmYXVsdENvbnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0
cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6TG93UG93ZXI7Ci0gICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9
IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShsb3dQb3dl
ckNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNl
OwotICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
eyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9IFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFu
Y2VDb250ZXh0LCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdl
dFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9y
bWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRF
UkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445702</attachid>
            <date>2021-12-02 03:56:28 -0800</date>
            <delta_ts>2021-12-02 05:09:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211202135626.patch</filename>
            <type>text/plain</type>
            <size>119193</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li44
Y2NiNjk1Nzg0NmQzMGE3YjI5ZTk0Y2NjZjk0ZjExOGZiY2E1MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UK
KyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKIHsKIH0KIAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCiBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTEyMywxNSArMTU3LDYgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50
TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5o
CmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjFlYWJlY2Ri
MWJmZTY3ZDVmYmI5NTE2NjNiZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFj
Y2NlMTNjNjBjNGIuLmQ4ZjcwNWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5
YTA4YWIxODYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29u
dGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0
MjM3ZDhhNGEzOWYuLmEzYmY1ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2Up
Cit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFh
MmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRN
YXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3
ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBk
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBv
cnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2lt
cG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQy
ZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0
MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3
PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QK
QEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNT
aXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9j
dW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3
LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3Jr
YXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAs
IGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNl
dEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
QEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAg
IE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54
LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9h
dFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIx
MzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkg
c2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50
IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50
OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2Mw
OTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMx
LDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5k
ZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQw
ZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWRE
YXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMy
Yi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2Fj
aGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNh
Y2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1
bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAg
ICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0g
W2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAg
IE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6
ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVy
Lm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lk
dGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhm
b3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3
ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3
N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52
YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50
cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZv
cm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsK
KyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVn
YXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXll
cjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGFlMzE3YjE1
MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjE1OWU1MDU2NzcwNDMzMDFmZDE5ODUw
YzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC03NCw3ICs3NCw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBs
YXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxheWVyaW5nIHZpb2xhdGlv
biBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3MjdlODUyMzgzY2U4YTA0MDA4
Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQxNjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBt
X2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVm
ZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNlbmRSaWdodCBzZW5k
UmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5
QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgbV9jb250ZXh0LT5t
YXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJ
UF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCmluZGV4IDIyNGZhMThj
ODE1OTI2MmZlZjNkZThlZTUwN2E1YjdkN2Q3OWRiOTguLmYyNzlkZjBmZjBjMzIxNWE4OGZlNjZk
MmNhZWFmYzllNjZlZWE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcApAQCAt
NjUsNiArNjUsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorUGxhdGZvcm1MYXllciog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKS0+cGxhdGZvcm1M
YXllcigpOwogfQorI2VuZGlmCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRkNmQx
OTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7
CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5oYXNf
dmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRo
cmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThmMjFk
YzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdl
YkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFy
QmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgpOwog
ICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3IEBA
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09w
YXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3RkOjpv
cHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAg
ICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0g
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5n
U3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5
cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAgICBo
YW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNr
ZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
KyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlf
TElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAg
ICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIHN0
ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1faW5j
bHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNv
bnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7CisgICAg
bV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0cy5j
bGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsK
ICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYgKzI1
NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBpZiAo
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKICAg
ICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3JlV2ls
bEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXItPm93
bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgbV9s
YXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBm
cm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUg
d2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xhdGls
aXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAgYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRCdWZm
ZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyLT5j
cmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNh
c2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAgICAg
IGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1f
YnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAgICAg
IGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFj
a2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5k
ZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUxNTEx
YTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAg
ICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQg
PDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAg
ICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdD
b250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAg
ICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0
SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40MzUw
ZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXll
clRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAj
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVl
Tm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3ICsz
MTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9z
dCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXll
cihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3Rp
bmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpp
bmRleCAzNmQ1NWUzZjRkY2NmYTAzZmQzNmUxZWNkMGRjMDY4MGU2MDExOWMzLi4wYjFiZDA0ZTBh
YjQxYTU1NWUxNDIxMjIyN2IzYWNmMGZiOGVlN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1v
dGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAg
ICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFs
bG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90
ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYg
KCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBhZG9w
dE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwogICAg
ICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZpZXIo
KSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjg4M2Q5MmU3MmRm
MjI1MTVhY2U0YjIxN2Y4ZmRhMThlNTgzNTEyLi5kZjRlMDFkYTNhYmU1M2ZhMjVhMWU5OTBmMjBm
NTExY2EyN2FhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQ5OTAsNiArNDk5MCw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBC
NjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1
MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2NTY2
OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li5jYzUzZTlmMmYxY2VmZWE3MTYxODVkNDhmMDAwODg3MGIx
NTIzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMjQgKzMyLDYzIEBACiAjaW1wb3J0ICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4KLSNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAotY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2ViR0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8RGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNv
bnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAgfQor
ICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVy
cmlkZXMuCisgICAgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9pc09w
YXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsK
KyAgICB9CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9
CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlC
dWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAg
IG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkg
PT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAg
ICB9Citwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBpc09w
YXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVl
KQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICB9
CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNT
Y2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKK2NsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMw
ICs5NywyNCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2YXRl
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJH
TExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlzcGxh
eUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlC
dWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQ
cm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVj
dGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZp
Y2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJz
LmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldl
YkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0K
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4
ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdo
dCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFj
ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShX
VEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9S
b3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0xMDAsMjYgKzEzMywxNiBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAg
IH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAgICAg
ICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3Bs
YXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVy
LT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAg
bWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0K
IAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAg
ICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXgg
ZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIzZGZkN2E2MC4uY2M0OGM5NmJiMGUzZjVh
ZDdiYWM2MjY2YmU4MTkwOTExMDQzMTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtMzMsMzMgKzMzLDUwIEBACiAjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldDUGxhdGZvcm1M
YXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7Citw
dWJsaWM6CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQbGF0
Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShwbGF0
Zm9ybUxheWVyKSkpOworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBsYXRm
b3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1M
YXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQorICAgIHsKKyAgICB9CisgICAgUGxhdGZvcm1M
YXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCiBjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5V0MgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSB7CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVy
cmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtTGF5
ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1
cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2Vu
ZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0KLSAg
ICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAg
ICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwg
YXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1ha2VV
bmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5n
QmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgLCBtX3BsYXRmb3Jt
TGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
OjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNWQwZWE4
YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4uNThiNmFlN2ZjOWJhMGM3YWY3Yjg2
ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDExIEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlIHx8IG93bmVyKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmNvbnRleHQg
PT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSkg
eworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVyKCkgJiYgKG93bmVyKCktPnBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYm
ICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
PSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKICAgICB9Ci0K
ICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgpKQog
ICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApAQCAtNjgzLDggKzY4MywyNiBA
QCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CiAKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiB7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51
bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7Cisg
ICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUo
KTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlLmNy
ZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBB
U1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwor
ICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2VIYW5kbGUu
Y29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgbV9wcm9w
ZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNhMjE1NGRiNDcwNjA0MjY1MDRi
YWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThlYWNhYTY2M2M4ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTEyNyw3ICsx
MjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENv
bnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2
b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7Cisj
ZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKaW5kZXggZTYyNDdkYWE2ZGIw
MGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMyNWYxODJlOTI5MjFjMjYzNjE4
NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsK
ICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwotICAgIGJvb2wg
bV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRl
eCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4ZjRlLi42MjkyMzFiNjM5ZWE1
YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTM0LDE1ICszNCwxNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRy
YXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKK3N0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZv
cm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAi
V0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVy
LCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBj
b250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1M
YXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQpKTsKQEAg
LTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5
ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25z
XTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250
ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBv
aW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3Vz
dG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9h
dFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9p
bnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRz
ID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRm
b3JtQ0FMYXllcgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7
Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10g
aW5pdF0pOwotICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVu
dHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFs
c2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9w
bGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwor
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwog
fQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkK
IHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE5lZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVl
ZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5k
ZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFjY2MwNGM2MWQwZDBkMDVmNC4uZTZmMThjYThiMWYx
NzE5ZTM1YjA1NTk2NTE4ODBkYTNlZTUwOGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCkBAIC0yOTAsNiAr
MjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0
b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5
RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBk
aXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5
ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxh
dGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihw
bGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVyV0M6OnVzZXND
b250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXll
cldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVy
V0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2NmY2YTA5ODVlYmU1Li44YjQ4
ODMzMjVlMWIyODgwODc1MTcyYjk1YjNmNzMwN2Q2MDAxNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaApAQCAtNzYs
NiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
UGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNvcmU6OkltYWdlKikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHVzZXNDb250ZW50c0xheWVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggYTBiZDVhZGI0YWVjNDA2OTY2MjJiNGQ0YmQyN2Q4MjA5Mzc0NjExNi4uMzgwZmM5NjI0ZTI5
N2RkOTdhMzJiMjFlNWIzZGJlMzI2MzE3ZWJjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTI1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wg
c2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8vODM0Mzcw
NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVt
YmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTEtMzAg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtjc3MtdmFsdWVz
LTRdIER5bmFtaWMgYGR2KmAgdmlld3BvcnQgdW5pdHMgc2hvdWxkIG5vdCByZXNwZWN0IHRoZSBw
YWdlIHNjYWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
ODc2Yzc0NDgwOGY0MzYxZTNjZDUyZjUzZmZkNmY2MDAzYThhMGY4Ny4uZTE5MTFkZjZjMDkzZTM4
YzhkNDJmYTE3OWVmZDVlNzcyZWE2NWRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbQpAQCAtNDAsNiArNDAsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisgICAgeworICAgICAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9
CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpCisgICAgeworICAg
IH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5PTElO
VApAQCAtNTgsNyArNzMsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3QgaW50IGV4cGVjdGVk
RGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50
U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNp
emUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02NywxNCArODIsMTQgQEAg
c3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxzZTsK
ICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRy
aWJ1dGVzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBjb250ZXh0LT5yZXNoYXBlKGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdo
dCgpKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQorc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENv
Y29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQogewogICAgIGNvbnRleHQubWFya0NvbnRleHRD
aGFuZ2VkKCk7CiAgICAgV2ViQ29yZTo6Q29sb3IgZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8g
V2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29yZTo6Q29sb3I6OnllbGxvdyB9OwpAQCAtMTE5
LDE1ICsxMzQsMTUgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0LCBNQVlCRV9N
dWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1l
dGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0KTsKLSAgICBh
dXRvIGRlZmF1bHRDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7
CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVz
IH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRy
aWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0g
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2Vy
Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7
Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7
IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5j
ZUNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+Z2V0
U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJmb3Jt
YW5jZUNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVS
RVIpKTsK
</data>
<flag name="commit-queue"
          id="470935"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445713</attachid>
            <date>2021-12-02 05:07:24 -0800</date>
            <delta_ts>2021-12-02 06:41:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211202150722.patch</filename>
            <type>text/plain</type>
            <size>119387</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li44
Y2NiNjk1Nzg0NmQzMGE3YjI5ZTk0Y2NjZjk0ZjExOGZiY2E1MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UK
KyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKIHsKIH0KIAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCiBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTEyMywxNSArMTU3LDYgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50
TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5o
CmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjFlYWJlY2Ri
MWJmZTY3ZDVmYmI5NTE2NjNiZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFj
Y2NlMTNjNjBjNGIuLmQ4ZjcwNWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5
YTA4YWIxODYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29u
dGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0
MjM3ZDhhNGEzOWYuLmEzYmY1ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2Up
Cit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFh
MmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRN
YXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3
ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBk
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBv
cnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2lt
cG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQy
ZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0
MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3
PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QK
QEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNT
aXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9j
dW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3
LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3Jr
YXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAs
IGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNl
dEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
QEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAg
IE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54
LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9h
dFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIx
MzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkg
c2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50
IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50
OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2Mw
OTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMx
LDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5k
ZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQw
ZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWRE
YXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMy
Yi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2Fj
aGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNh
Y2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1
bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAg
ICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0g
W2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAg
IE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6
ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVy
Lm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lk
dGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhm
b3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3
ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3
N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52
YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50
cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZv
cm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsK
KyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVn
YXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXll
cjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGFlMzE3YjE1
MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjE1OWU1MDU2NzcwNDMzMDFmZDE5ODUw
YzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC03NCw3ICs3NCw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBs
YXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxheWVyaW5nIHZpb2xhdGlv
biBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3MjdlODUyMzgzY2U4YTA0MDA4
Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQxNjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBt
X2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVm
ZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNlbmRSaWdodCBzZW5k
UmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5
QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgbV9jb250ZXh0LT5t
YXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJ
UF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCmluZGV4IDIyNGZhMThj
ODE1OTI2MmZlZjNkZThlZTUwN2E1YjdkN2Q3OWRiOTguLmYyNzlkZjBmZjBjMzIxNWE4OGZlNjZk
MmNhZWFmYzllNjZlZWE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcApAQCAt
NjUsNiArNjUsMTEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorUGxhdGZvcm1MYXllciog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKS0+cGxhdGZvcm1M
YXllcigpOwogfQorI2VuZGlmCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRkNmQx
OTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7
CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5oYXNf
dmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRo
cmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThmMjFk
YzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdl
YkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFy
QmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgpOwog
ICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3IEBA
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09w
YXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3RkOjpv
cHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAg
ICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0g
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5n
U3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5
cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAgICBo
YW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNr
ZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsK
KyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlf
TElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAg
ICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIHN0
ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1faW5j
bHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNv
bnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7CisgICAg
bV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0cy5j
bGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsK
ICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYgKzI1
NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBpZiAo
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKICAg
ICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3JlV2ls
bEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXItPm93
bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgbV9s
YXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBm
cm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUg
d2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xhdGls
aXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAgYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRCdWZm
ZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyLT5j
cmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNh
c2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAgICAg
IGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAg
ICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1f
YnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAgICAg
IGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFj
a2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5k
ZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUxNTEx
YTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAg
ICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQg
PDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAg
ICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdD
b250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAg
ICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0
SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40MzUw
ZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXll
clRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAj
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVl
Tm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3ICsz
MTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9z
dCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXll
cihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3Rp
bmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpp
bmRleCAzNmQ1NWUzZjRkY2NmYTAzZmQzNmUxZWNkMGRjMDY4MGU2MDExOWMzLi4wYjFiZDA0ZTBh
YjQxYTU1NWUxNDIxMjIyN2IzYWNmMGZiOGVlN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1v
dGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAg
ICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFs
bG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90
ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYg
KCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBhZG9w
dE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwogICAg
ICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZpZXIo
KSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjg4M2Q5MmU3MmRm
MjI1MTVhY2U0YjIxN2Y4ZmRhMThlNTgzNTEyLi5kZjRlMDFkYTNhYmU1M2ZhMjVhMWU5OTBmMjBm
NTExY2EyN2FhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQ5OTAsNiArNDk5MCw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBC
NjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1
MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2NTY2
OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li5jYzUzZTlmMmYxY2VmZWE3MTYxODVkNDhmMDAwODg3MGIx
NTIzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMjQgKzMyLDYzIEBACiAjaW1wb3J0ICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4KLSNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAotY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2ViR0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8RGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNv
bnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAgfQor
ICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVy
cmlkZXMuCisgICAgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9pc09w
YXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsK
KyAgICB9CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9
CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlC
dWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAg
IG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkg
PT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAg
ICB9Citwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBpc09w
YXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVl
KQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICB9
CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNT
Y2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKK2NsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNp
ZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMw
ICs5NywyNCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2YXRl
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJH
TExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlzcGxh
eUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlC
dWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQ
cm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVj
dGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZp
Y2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJz
LmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldl
YkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0K
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4
ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdo
dCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFj
ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShX
VEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9S
b3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0xMDAsMjYgKzEzMywxNiBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAg
IH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAgICAg
ICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3Bs
YXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVy
LT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAg
bWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0K
IAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAg
ICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXgg
ZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIzZGZkN2E2MC4uY2M0OGM5NmJiMGUzZjVh
ZDdiYWM2MjY2YmU4MTkwOTExMDQzMTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtMzMsMzMgKzMzLDUwIEBACiAjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldDUGxhdGZvcm1M
YXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7Citw
dWJsaWM6CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQbGF0
Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShwbGF0
Zm9ybUxheWVyKSkpOworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7
CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBsYXRm
b3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1M
YXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQorICAgIHsKKyAgICB9CisgICAgUGxhdGZvcm1M
YXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCiBjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5V0MgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSB7CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVy
cmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtTGF5
ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1
cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2Vu
ZGlmCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1MYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0KLSAg
ICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAg
ICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwg
YXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1ha2VV
bmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
KSkKKyAgICB7CisgICAgfQorICAgIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYg
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5n
QmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgLCBtX3BsYXRmb3Jt
TGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
OjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNWQwZWE4
YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4uNThiNmFlN2ZjOWJhMGM3YWY3Yjg2
ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDExIEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlIHx8IG93bmVyKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmNvbnRleHQg
PT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSkg
eworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVyKCkgJiYgKG93bmVyKCktPnBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYm
ICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
PSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKICAgICB9Ci0K
ICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgpKQog
ICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApAQCAtNjgzLDggKzY4MywyNiBA
QCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CiAKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiB7
CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51
bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7Cisg
ICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUo
KTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlLmNy
ZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENv
bnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBB
U1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwor
ICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2VIYW5kbGUu
Y29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgbV9wcm9w
ZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNhMjE1NGRiNDcwNjA0MjY1MDRi
YWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThlYWNhYTY2M2M4ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTEyNyw3ICsx
MjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENv
bnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2
b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7Cisj
ZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKaW5kZXggZTYyNDdkYWE2ZGIw
MGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMyNWYxODJlOTI5MjFjMjYzNjE4
NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsK
ICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9ybUxheWVyOwotICAgIGJvb2wg
bV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRl
eCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4ZjRlLi42MjkyMzFiNjM5ZWE1
YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTM0LDE1ICszNCwxNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRy
YXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKK3N0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZv
cm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAi
V0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVy
LCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBj
b250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIgPSBhZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1M
YXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1MYXllciwgb3duZXIsIGNvbnRleHQpKTsKQEAg
LTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5
ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25z
XTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250
ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBv
aW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3Vz
dG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9h
dFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9p
bnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRz
ID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRm
b3JtQ0FMYXllcgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7
Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10g
aW5pdF0pOwotICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVu
dHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFs
c2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9w
bGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwor
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwog
fQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkK
IHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVy
IHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE5lZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVl
ZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5k
ZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFjY2MwNGM2MWQwZDBkMDVmNC4uZjc1YThlZjUwNTlj
YmMwN2VkZjFhYmZjOGYzYTNhNDQ3MDM5MWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCkBAIC0yOTAsNiAr
MjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0
b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5
RGVsZWdhdGUoUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworICAgIFBs
YXRmb3JtTGF5ZXIgcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxl
Z2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVy
V0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxh
eWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3Jh
cGhpY3NMYXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFw
aGljc0xheWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2NmY2YTA5ODVl
YmU1Li5mN2ViYzYxZTVlMzZjZGExZTJmNDVlYjM5ZTg0YjI1NDk0NWIzNDFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0Mu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXQ1VwYXRlSW5m
by5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tmYWNlVmlz
aWJpbGl0eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5
ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNo
b3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMGJkNWFkYjRhZWM0MDY5NjYyMmI0ZDRiZDI3ZDgy
MDkzNzQ2MTE2Li4zODBmYzk2MjRlMjk3ZGQ5N2EzMmIyMWU1YjNkYmUzMjYzMTdlYmM0IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9U
ZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgQWRkIGEgZHVtbXkg
b3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS4KKwogMjAyMS0xMS0zMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2Nzcy12YWx1ZXMtNF0gRHluYW1pYyBgZHYqYCB2aWV3cG9ydCB1bml0cyBz
aG91bGQgbm90IHJlc3BlY3QgdGhlIHBhZ2Ugc2NhbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQppbmRleCA4NzZjNzQ0ODA4ZjQzNjFlM2NkNTJmNTNmZmQ2ZjYwMDNh
OGEwZjg3Li5lMTkxMWRmNmMwOTNlMzhjOGQ0MmZhMTc5ZWZkNWU3NzJlYTY1ZGM0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00MCw2ICs0MCwyMSBAQCBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFRlc3RlZEdy
YXBoaWNzQ29udGV4dEdMQ29jb2EgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xD
b2NvYSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcykKKyAgICB7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0OworICAgIH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQorICAgICAgICA6IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShh
dHRyaWJ1dGVzKSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xD
b2NvYVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OCw3ICs3Myw3IEBAIHByaXZhdGU6CiAKIHN0
YXRpYyBjb25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0
aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRU
ZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQorc3RhdGljIFJlZlB0cjxU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2Vi
Q29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1
ZTsKQEAgLTY3LDE0ICs4MiwxNCBAQCBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOgogICAgIGF0dHJp
YnV0ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOwogICAg
IGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7Ci0gICAgYXV0byBjb250
ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0
cmlidXRlcykpOworICAgIGF1dG8gY29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUud2lk
dGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1z
dGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCitz
dGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCiB7CiAg
ICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICBXZWJDb3JlOjpDb2xvciBleHBl
Y3RlZCB7IGl0ZXJhdGlvbiAlIDIgPyBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4gOiBXZWJDb3JlOjpD
b2xvcjo6eWVsbG93IH07CkBAIC0xMTksMTUgKzEzNCwxNSBAQCBURVNUX0YoR3JhcGhpY3NDb250
ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5j
ZU1ldAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOwogICAgIEVYUEVDVF9FUShhdHRyaWJ1
dGVzLnBvd2VyUHJlZmVyZW5jZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2U6OkRlZmF1bHQpOwotICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGRlZmF1bHRDb250ZXh0
LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOwotICAgIGF1dG8gbG93
UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAg
YXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVh
dGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsK
ICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0
ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQg
PSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJm
b3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBB
U1NFUlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBFWFBFQ1Rf
TkUobG93UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlJFTkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445716</attachid>
            <date>2021-12-02 06:41:40 -0800</date>
            <delta_ts>2021-12-02 06:44:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211202164138.patch</filename>
            <type>text/plain</type>
            <size>119392</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uYjI5OGJiODU2N2RmN2EyOWFiZGQzZjUxMzk3NWI0
NDM0MmJhNTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp3aWxsRGVsZWdhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVs
ZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdp
dGhEZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xM
YXllciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBk
aXNwbGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3Np
YTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBQYXNzIHRoZSB0aW1lc3RhbXAgZm9yIHNjcm9sbGluZyB0aHJlYWQgYW5p
bWF0aW9ucyB0aHJvdWdoIGFsbCB0aGUgc2VydmljZVNjcm9sbEFuaW1hdGlvbigpIGNhbGxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGEyODM2MDgyNWZiNzRlOTA2OGQ3ZDdkZjNiNjNkYTM2MWM0MjJhMmUuLjg1NGZl
MzM3OGMyNjEyZTI4NzMyNzI4ZTBiODg3MjI5M2Y2NzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTkgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElP
U3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisg
ICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRk
ZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAg
ICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNl
cmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6
ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1f
YnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBk
aXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRp
bmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0
aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250
ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUp
OgorCiAyMDIxLTExLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFBhc3MgdGhlIHRpbWVzdGFtcCBmb3Igc2Nyb2xsaW5nIHRocmVhZCBhbmltYXRp
b25zIHRocm91Z2ggYWxsIHRoZSBzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9uKCkgY2FsbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IGJmODk1NjE4MmJmYzIyMTNlNTRiYWMzMzA0OTQ1ZTNiNmIyMjRlYzQu
LjQ2ODc2NmZkNDVmZWEyNmQzZDY1MzVlOWVkNDQ4MjY0YTIyODliZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMxNSw2ICsxMzE1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5z
Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDE1ZDI3MTdiNzIzNTgyYzdhN2Zl
OTkyZjA1NWZiZTNlNzdkZGZjZTYuLjI3M2Y5ZDYzMzAxNDY0YTY5YjJjZTQwMTNlNjE5ZWRmMjdj
YTY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdhZjVlYjQ3Nzc0
NjFiM2U0YzcyYzVlNzMxZWNkYTAxNGY5NzM4NTkuLjVlOWY1ZThjNDRkYjU0ODNjNTE5NjUyMzA2
ZDliMWQ5ODk3OTgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI1LDYgKzIwMjUsNyBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNmNWI2MmYzNzYzZmNmNGIy
Yjg0MDY2MmVkZmIzNTFmYmExMzdhZjYuLjNlYTk2YzM1N2MzYmFkZWFiODY4NDQ4MTYyYWQ4NzYx
N2E3ZDE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1
ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZk
Mjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIw
NDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNj
cmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9X
ZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYg
QEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2Fy
bmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJn
ZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9u
CiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1f
T0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVy
Lm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFS
XyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBlNDI4ODM5
NzU2OGQ0NTBkMTJmMTg1YjhmNmZlYTYwNjY0ZTE3OC4uNmExMGZjMjYwMzY5NjEwZjY1ZDViZjEx
NGIzZTFmZmZkNjAzMTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw3ICsxNDMzLDYgQEAKIAkJNDlFQ0VCNzAxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAq
LzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVF
RDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsK
LQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVF
N0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4
MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTIzNjUsNiArMjM2NCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4
QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3
MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcw
IC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhB
QkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUw
MTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTMzNyw4ICs5MzM3LDYg
QEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
TExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEz
NTgsNiArMTEzNTYsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VH
UFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4
RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNjksNiArMTEzNjgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3
NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBo
aWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgw
QjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxp
dGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjAxLDYgKzI4NjAxLDggQEAKIAkJCQkwRjU4MEIw
OTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEw
RjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyog
R3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEz
RjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5MTIsOCArMjg5MTQsNiBA
QAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5t
bSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJN
QXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMg
LyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMjk2Niw2ICsz
Mjk2Niw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0
QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQyODUsNiArMzQyODYsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8q
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRG
OTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTM3NTE0LDcgKzM3NTE2LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTgg
LyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlD
RjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURy
YXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJH
TE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFm
OWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUy
OGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiAr
ODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52
YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQy
YTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21w
b3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRo
UGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBi
b29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNm
MzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
NTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxl
bWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29u
dGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3
OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0
YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBi
b29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGZlZDFmMjI4N2E3MzM2MjBlODZkYTRmOTExZmZhYWVh
NmIyM2E5MmUuLjFjOTU4YzA0ZDc2YzdjOGFjYTVkMWNmNjJjNGJlOTk4MzUxYjY1NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgpAQCAtNjQ0Niw5ICs2NDQ3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4
dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxh
dGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5n
UG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVj
dCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEz
OWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0Nv
bnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVl
Y2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFll
cwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjFiYjc3
ZjQ3NzFmOGJlZGMyMGNjODBhNzA3NDYzMzkxMWZlNzcyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CmluZGV4IGJmOTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjE2MWUzYjk3
YjU4OWRkYTAwNzg0OWNkODA4N2VhOTU2Yjk1MjA5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGls
ZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGlu
dmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjMwNmY4MDQxYjQwOGEyY2ZjMjU3OTljMWEyMmNmYTYyNjFmN2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0Owor
CisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OndpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBH
cmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzViZThhODVjNjczOTdjMjE3M2UxNWQ2NWY5OTQ4MmFkNDU1ZTJlOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShD
QSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxh
dGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhp
Y3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNl
cyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3Bl
Y2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJm
M2ZhY2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2
N2U3ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAK
LS8vIFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFu
YWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBi
eSBhIFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRl
bnRzIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VC
dWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1
ZmZlclBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENh
Y2hlLmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3
MGQwMWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b21tb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkw
YTM4NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li43NWFhMjE5OGRmYmEwNDQ1MzEx
MjJjNDdjMTVjMzZlYTM0YjI4MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIK
QEAgLTEzNDgsNiArMTM0OSwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKIH0KIAor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIHByb3ZpZGVyLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
cHJvdmlkZXIgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAocHJvdmlkZXIpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUocHJvdmlkZXIpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT53aWxsRGVsZWdhdGVEaXNw
bGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNo
YW5nZWQpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFBsYXRmb3JtTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QKIHsKQEAgLTE4Nzgs
NiArMTkwNCwxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmls
bGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0Zp
bGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAm
JiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAg
ICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09
IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxh
eSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJU
eXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xh
eWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3ICsyODMwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRh
dGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVn
YXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0
dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0
MTIsMTkgKzQ0NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50
KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVu
dHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVu
dHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAg
ICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgw
Yzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLjUwY2I5ZmI5MzQ1YzZlNTA3ZTBlODdhYzMz
MDRhMWMyYmRhMzFjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3Vi
bGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAg
ICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZh
dWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0
ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZv
aWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAg
LTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAg
IFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAg
ICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5p
bWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5
MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
VEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgor
fQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0
LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElP
U1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1D
QUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIw
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYg
SEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmlu
ZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3
YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhj
MTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBl
UmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5
cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAg
dm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2
ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAK
ICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FM
YXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9y
dCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+Cisj
aW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBl
Rm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5
ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVy
TGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAg
IHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBs
ZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNh
c2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0g
W1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUo
KSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFw
cGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJU
eXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAg
LTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9u
IHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5
ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQ
bGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxl
Z2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3
LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5
cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFW
RShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFj
ZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
c3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLmgKaW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMw
Y2I3ODZjMi4uZjc4ZDUxYjBiZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
MDI5Y2MzZmFlNDdmODcwMjNjNWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFl
ODIxN2FmZTg1ZDc4OTAyZDkxMjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC00NjIsMTEgKzQ2Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciog
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRl
eHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEg
QEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2
MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNo
b3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXll
ciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5k
Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4
YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkK
LSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQot
QGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJh
dGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRz
T3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9
IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVu
dHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIg
Y29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlz
IG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0
aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNj
YWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRo
ZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBb
c3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQot
Ci0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5j
aG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNw
bGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkg
bm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdl
IHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQo
KSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5Yjll
OWU1MTdjZDI2YmU3YjUzNTc5OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0
MDY5MzBiNTE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQpAQCAtMjksNTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRy
PFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsK
LSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAg
Ly8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVm
ZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0
cik7CisgICAgfQorICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21V
cDsKKyAgICB9CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAg
bV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkg
PT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAg
fQorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFx
dWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkK
KyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsK
IAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBy
dW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29h
IHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2Vi
R0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAg
ICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAg
ICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkK
KyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQogICAgIHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRp
c3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5
ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3Bs
YXlCdWZmZXIoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAx
M2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNh
MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAK
ICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNv
bnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZm
ZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1
ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYw
M2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04
MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVy
ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19i
cmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1Jl
Y3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVy
KCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRl
bnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRm
b3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2
ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAg
fQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAj
ZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsK
ICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVy
LT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93
bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgp
KSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQor
ICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgp
KTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRh
MTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5
NzFlYjc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwx
NiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZv
aWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToK
KyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4K
ICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxD
b250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmlj
b3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xh
c3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0
OwotCisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAg
ICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAg
fQorICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJl
ZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1Ymxp
YzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9w
dFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFn
ZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
U291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1Niwx
MCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1h
Z2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0K
LQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUlt
YWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19
Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkw
ZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5
MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAg
LTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZl
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2lu
dHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li44
Y2NiNjk1Nzg0NmQzMGE3YjI5ZTk0Y2NjZjk0ZjExOGZiY2E1MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgw
LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3Jt
TGF5ZXI7CisgICAgfQorcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRl
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRm
b3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAg
LTg4LDkgKzExMiwxOSBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisg
ICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UK
KyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxh
eURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKIHsKIH0KIAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCiBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChj
b25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKQEAgLTEyMywxNSArMTU3LDYgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50
TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5o
CmluZGV4IGQxYWMwZWI3YzBhZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjFlYWJlY2Ri
MWJmZTY3ZDVmYmI5NTE2NjNiZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFj
Y2NlMTNjNjBjNGIuLmQ4ZjcwNWQwYWY1OWY2YjIzNjgzOGI4ZTUwNjViNmIwZGUwMDNlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMmY0NTk4ZGMwYTkyYjRjM2NmNjNmYTc2OWRkZDc5
YTA4YWIxODYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNGcm9tRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29u
dGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0
MjM3ZDhhNGEzOWYuLmEzYmY1ZjNiYTBmMzJhYzQzODAwODZjY2M3YzNmNGM0NmZjMWRlY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2Up
Cit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLmFhNjFh
MmE5ODUyZTEwZWNhZWIwZDA1NDlmOWNjZDc0MDk5ZGFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
RnJvbURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRN
YXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3
ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBk
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBv
cnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2lt
cG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQy
ZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0
MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3
PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QK
QEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNT
aXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9j
dW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3
LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3Jr
YXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxD
R0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAs
IGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNl
dEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
QEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAg
IE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54
LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9h
dFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIx
MzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkg
c2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50
IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50
OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2Mw
OTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMx
LDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5k
ZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQw
ZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWRE
YXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMy
Yi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2Fj
aGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNh
Y2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1
bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAg
ICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0g
W2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAg
IE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6
ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVy
Lm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lk
dGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhm
b3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3
ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjgzZTliYmU2NjYyMjVjMTg3
N2Q2ZGRhMzkwZWQxNDYzNTI1NDQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29t
cG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52
YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50
cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZv
cm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsK
KyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNGcm9tRGlzcGxheURlbGVn
YXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXll
cjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGFlMzE3YjE1
MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjE1OWU1MDU2NzcwNDMzMDFmZDE5ODUw
YzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC03NCw3ICs3NCw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBs
YXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxheWVyaW5nIHZpb2xhdGlv
biBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3MjdlODUyMzgzY2U4YTA0MDA4
Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQxNjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBt
X2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVm
ZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNlbmRSaWdodCBzZW5k
UmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5
QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgbV9jb250ZXh0LT5t
YXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJ
UF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCmluZGV4IDIyNGZhMThj
ODE1OTI2MmZlZjNkZThlZTUwN2E1YjdkN2Q3OWRiOTguLjlkZjgzZjQ2MDdjYzk4YzBkOGZiN2Vk
ZjY3ZWQ2ZjdiODk3ODFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcApAQCAt
NjUsNiArNjUsMTMgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorUGxhdGZvcm1MYXllciog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKS0+cGxhdGZvcm1M
YXllcigpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3ZjlmNGEzYmU5OTZhZDQ1MWQwMTA5OWYuLmM2YTc4
NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5NTk5MjI0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgp
OwogCisgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNlSGFu
ZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICEh
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVySGFuZGxl
Lmhhc192YWx1ZSgpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRl
OGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVjNTZjZTE3NTM0YjExZmNmYjVhNDhkZTFiOTI1ZDUw
ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMDAsNiArMTAwLDcgQEAg
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFR5cGUgdHlw
ZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0
OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJk
KCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsKQEAgLTExMiwyNiArMTEz
LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBt
X2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlRGlzcGxheUxpc3Q7Ci0KLSAgICBz
dGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmICht
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0g
ICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tl
bmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJh
Y2tpbmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxB
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAg
ICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGVuY29kZXIgPDwgaGFu
ZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZmZXJIYW5kbGU7CiAKICNpZiBFTkFCTEUoQ0dfRElT
UExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwpAQCAtMjIwLDYgKzIwMiw3IEBA
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQog
ICAgICAgICB9CiAgICAgfQogCisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKICAgICBpZiAobV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpAQCAtMjU3LDYgKzI0MCwxMyBAQCBib29sIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkKICAgICByZXR1cm4g
bV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpObzsKIH0KIAordm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYgY29udGVudHMpCit7CisgICAgbV9idWZmZXJIYW5kbGUgPSBXVEZNb3ZlKGNvbnRlbnRzKTsK
KyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7CisgICAgbV9wYWludGluZ1Jl
Y3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXko
KQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUoKSk7CkBAIC0yNjcs
NiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAg
IGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9sYXllci0+Y29udGV4dCgp
KQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250ZXh0LT5iYWNraW5nU3Rv
cmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsKKyAgICAgICAgbV9sYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAg
ICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXll
cik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIE1ha2UgdGhlIHByZXZp
b3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5
IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZv
bGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApAQCAtMzI3LDYgKzMyMywyMCBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9mcm9u
dEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5kaWYKIAorICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAg
ICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgp
KQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0
ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hh
cmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoKKyAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNf
Y2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQp
LmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTExMzU2
ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAgICAg
ICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRl
eHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgot
ICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9z
dGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgICAg
ICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0Nv
bnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNjOWMu
LjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90
ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVMYXll
clRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogCiAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMzEy
LDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXllclRy
ZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdp
dGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtlV2l0
aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRpZXMu
aG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMwNjgwZTYwMTE5YzMuLjBiMWJk
MDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyOgog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1Zp
ZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
VGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3Qg
UmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAg
ICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9
IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJv
CiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRlbnRp
ZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmODgzZDky
ZTcyZGYyMjUxNWFjZTRiMjE3ZjhmZGExOGU1ODM1MTIuLmRmNGUwMWRhM2FiZTUzZmEyNWExZTk5
MGYyMGY1MTFjYTI3YWFjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDk5MCw2ICs0OTkwLDcgQEAKIAkJN0I0ODNGMUMyNUNEREE5
QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzIy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5
ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLmNjNTNlOWYyZjFjZWZlYTcxNjE4NWQ0OGYwMDA4
ODcwYjE1MjNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwyNCArMzIsNjMgQEAKICNpbXBvcnQgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNp
bXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5o
PgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ugewog
Ci1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxh
eURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJl
ZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxv
YXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAg
ICB9CisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZSht
X2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2Nh
bGUpOworICAgIH0KKyAgICB2b2lkIGRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBs
YXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAg
ICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICB9CisgICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOwor
ICAgIH0KKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3QgTWFjaFNlbmRSaWdodCYgZGlz
cGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAg
ICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxheUJ1ZmZlci5zZW5kUmln
aHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgp
OworICAgIH0KK3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29s
IGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNP
cGFxdWUpCisgICAgICAgICwgbV9jb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgewor
ICAgIH0KKyAgICBjb25zdCBib29sIG1faXNPcGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250
ZW50c1NjYWxlOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworfTsKIAorY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFs
OwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAt
NTgsMzAgKzk3LDI0IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+
IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHBy
aXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3ND
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBt
X3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9k
aXNwbGF5QnVmZmVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNr
ZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVm
ZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMu
ZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgeworICAgIH0KKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlz
cGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0
cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0
aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZToh
YXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1l
OkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1w
bGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQogewogICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRl
Q1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2Vu
ZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5z
dXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2Ft
cGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKQEAgLTEwMCwyNiArMTMzLDE2IEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgp
CiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJu
OwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0g
ICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1f
ZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlC
dWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsK
ICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkp
OwogfQogCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkp
OwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApp
bmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi5jYzQ4Yzk2YmIw
ZTNmNWFkN2JhYzYyNjZiZTgxOTA5MTEwNDMxNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBAIC0zMywzMyArMzMsNTAgQEAKICNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0
Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRl
KFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3Zl
KHBsYXRmb3JtTGF5ZXIpKSk7CisgICAgfQorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5n
ZXQoKTsKKyAgICB9Citwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUo
UGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0
Zm9ybUxheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCisgICAgeworICAgIH0KKyAgICBQbGF0
Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKK307CisKIGNsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5IHsKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IG92ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZv
cm1MYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7
IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
LQotICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
bWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikpKQorICAgIHsKKyAgICB9CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdh
dGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0
aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9j
ZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLSAgICAsIG1fcGxh
dGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1
ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdh
ZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgb3du
ZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmY29u
dGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0
b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3duZXIoKSAmJiAob3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5n
ZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogICAg
IH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmIG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5
KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogCkBAIC02ODMsOCArNjgz
LDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QK
IAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1
ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkK
K3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdT
dG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZh
Y2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQorewor
ICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3Jl
KCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZUhh
bmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBt
X3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQy
NjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3
LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lmIEhBVkUoSU9TVVJGQUNFKQor
ICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlk
ZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBlNjI0N2Rh
YTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMy
NjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2IEBAIHByaXZhdGU6CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250
ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAg
Ym9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1t
CmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2
MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXll
ckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
IAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQ
bGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVy
ID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3Jt
TGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0
Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkp
OwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZv
cm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFj
dGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZs
b2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXllci5wb3NpdGlvbi55
LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5hbmNob3JQb2ludCA9
IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0b21MYXllci5hbmNo
b3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHByb3BlcnRpZXMoKS5i
b3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUo
UGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxh
eWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5Q29udGVudHMgPSBm
YWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFs
bG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJHTCBj
b250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVudHMg
PSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiAKIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwotICAgIGVsc2UK
LSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVj
dCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVj
dCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3Bs
YXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3Jt
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNw
cAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0Li5mNzVhOGVm
NTA1OWNiYzA3ZWRmMWFiZmM4ZjNhM2E0NDcwMzkxZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5
MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzVG9QbGF0Zm9y
bUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzRnJvbURp
c3BsYXlEZWxlZ2F0ZShSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cisg
ICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxh
eURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIEdyYXBoaWNz
TGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRm
b3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
Yy9HcmFwaGljc0xheWVyV0MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dj
L0dyYXBoaWNzTGF5ZXJXQy5oCmluZGV4IDk2Mjc0MWZkZDAxNWEyMzhkNDhkNDU3MDRjNTY2ZjZh
MDk4NWViZTUuLmY3ZWJjNjFlNWUzNmNkYTFlMmY0NWViMzllODRiMjU0OTQ1YjM0MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJX
Qy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5
ZXJXQy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldDVXBh
dGVJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaD4KICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTc2LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2Zh
Y2VWaXNpYmlsaXR5KGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlk
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Zyb21EaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3Np
dGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwYmQ1YWRiNGFlYzQwNjk2NjIyYjRkNGJk
MjdkODIwOTM3NDYxMTYuLjM4MGZjOTYyNGUyOTdkZDk3YTMyYjIxZTViM2RiZTMyNjMxN2ViYzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0xMS0yNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9z
aXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBk
dW1teSBvdmVycmlkZSBvZiB0aGUgbmV3IG1lbWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLgorCiAyMDIxLTExLTMwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBbY3NzLXZhbHVlcy00XSBEeW5hbWljIGBkdipgIHZpZXdwb3J0IHVu
aXRzIHNob3VsZCBub3QgcmVzcGVjdCB0aGUgcGFnZSBzY2FsZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDg3NmM3NDQ4MDhmNDM2MWUzY2Q1MmY1M2ZmZDZm
NjAwM2E4YTBmODcuLmUxOTExZGY2YzA5M2UzOGM4ZDQyZmExNzllZmQ1ZTc3MmVhNjVkYzQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQwLDYgKzQwLDIx
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Citwcml2YXRlOgorICAgIFRlc3RlZEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCisgICAgICAgIDogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZN
b3ZlKGF0dHJpYnV0ZXMpKQorICAgIHsKKyAgICB9Cit9OworCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTENvY29hVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZSAvLyBOT0xJTlQKQEAgLTU4LDcgKzczLDcgQEAgcHJpdmF0ZToK
IAogc3RhdGljIGNvbnN0IGludCBleHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CiAK
LXN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVm
YXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNpemUpCitzdGF0aWMgUmVm
UHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4
dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwg
PSB0cnVlOwpAQCAtNjcsMTQgKzgyLDE0IEBAIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6CiAgICAg
YXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0cmlidXRlcy5hbHBoYSA9IHRydWU7
CiAgICAgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZTsKLSAgICBhdXRv
IGNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92
ZShhdHRyaWJ1dGVzKSk7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6
ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAKLXN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVu
dHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlv
bikKK3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVu
dHMoVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikK
IHsKICAgICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9y
IGV4cGVjdGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNv
cmU6OkNvbG9yOjp5ZWxsb3cgfTsKQEAgLTExOSwxNSArMTM0LDE1IEBAIFRFU1RfRihHcmFwaGlj
c0NvbnRleHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVm
ZXJlbmNlTWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0
dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoZGVmYXVsdENv
bnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7Ci0gICAgYXV0
byBsb3dQb3dlckNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVh
dGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsK
KyAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVz
IH0pOwogICAgIEFTU0VSVF9ORShsb3dQb3dlckNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0
cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwotICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29u
dGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gaGln
aFBlcmZvcm1hbmNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwog
ICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsKIAogICAgIEVY
UEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445717</attachid>
            <date>2021-12-02 06:45:04 -0800</date>
            <delta_ts>2021-12-03 05:29:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211202164502.patch</filename>
            <type>text/plain</type>
            <size>119360</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJiNmQyZjJmYmNkN2I3
ODU1MzIxY2U1YjgwMWQ1YzJmYWNiMzhmNC4uNTM4ZjA4ZjUzNjViNmUzM2VhZjc3OGY0OTk2ZTNm
ZGY0YWQ1YWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9EaXNwbGF5RGVsZWdhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTo6d2lsbERlbGVnYXRlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0Rpc3BsYXlEZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmxheWVyRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1M
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheWVy
RGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNv
Y29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGlzcGxheUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1M
YXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0V2l0aERl
dmljZVBpeGVsUmF0aW86Y29udGVudHNPcGFxdWU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dl
YkdMTGF5ZXIgc2V0VHJhbnNmb3JtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJHTExheWVy
IHNldEFuY2hvclBvaW50Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGRpc3Bs
YXldKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW06CisgICAgICAgICgtW1dlYlNpbXBsZUxheWVyIGRpc3BsYXldKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUu
Y3BwOgorICAgICAgICAoTmljb3NpYTo6V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpX
ZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKToKKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6
Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6fk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3Vy
Y2UpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZTo6aGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1
ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
Tmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29z
aWFJbWFnZUJ1ZmZlclBpcGU6OnNvdXJjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChOaWNv
c2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9EaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisK
IDIwMjEtMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUGFzcyB0aGUgdGltZXN0YW1wIGZvciBzY3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMg
dGhyb3VnaCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxBbmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBhMjgzNjA4MjVmYjc0ZTkwNjhkN2Q3ZGYzYjYzZGEzNjFjNDIyYTJlLi4xZTRhZTAwMGIwNWJl
MTllZDg4OWFkOTk2MmVlZGQ4OGY1ZDJkNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisy
MDIxLTExLTI1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAg
IDxyZGFyOi8vODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5IHRvIGFzc2lnbiBJT1N1cmZhY2Vz
CisgICAgICAgIHRvIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjb250ZW50cy4KKworICAgICAgICBN
YWtlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSB1c2UgdGhlIGFkZGVkCisgICAg
ICAgIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZv
ckRpc3BsYXkpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
Omhhc0Zyb250QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgIENoYW5n
ZSB0aGUgY29udHJhY3Qgb2Ygd2hhdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSBzZXJpYWxpemVz
IHRvCisgICAgICAgIHRoZSB0cmFuc2FjdGlvbi4gQmVmb3JlLCBpdCBzZXJpYWxpemVkIHRoZSBm
cm9udCBidWZmZXIuCisgICAgICAgIEFmdGVyLCBpdCBzZXJpYWxpemVzIHRoZSBtX2J1ZmZlckhh
bmRsZS4KKyAgICAgICAgVGhlIGJ1ZmZlciBoYW5kbGUgaXMgcHJvZHVjZWQgYnkgZGlzcGxheSgp
IHBoYXNlIGVpdGhlciBieQorICAgICAgICBkZWxlZ2F0ZWQgZGlzcGxheSBzZXR0aW5nIHRoZSBj
b250ZW50cyBvciBkcmF3aW5nIHRvCisgICAgICAgIGZyb250IGJ1ZmZlciBhbmQgdGhlbiBhc3Np
Z25pbmcgdGhlIGZyb250IGJ1ZmZlciBoYW5kbGUuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eVdDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b206OmNsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb0Rpc3BsYXlEZWxlZ2F0ZSk6CisKIDIwMjEt
MTEtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UGFzcyB0aGUgdGltZXN0YW1wIGZvciBzY3JvbGxpbmcgdGhyZWFkIGFuaW1hdGlvbnMgdGhyb3Vn
aCBhbGwgdGhlIHNlcnZpY2VTY3JvbGxBbmltYXRpb24oKSBjYWxscwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYmY4OTU2MTgyYmZjMjIxM2U1NGJhYzMzMDQ5NDVlM2I2YjIyNGVjNC4uNDY4NzY2ZmQ0
NWZlYTI2ZDNkNjUzNWU5ZWQ0NDgyNjRhMjI4OWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MzE1LDYgKzEzMTUsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTFN0YXRlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0
b3J5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMTVkMjcxN2I3MjM1ODJjN2E3ZmU5OTJmMDU1ZmJl
M2U3N2RkZmNlNi4uMjczZjlkNjMzMDE0NjRhNjliMmNlNDAxM2U2MTllZGYyN2NhNjY0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3ICszMjcsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNh
YmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJD
b3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVE
ZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdM
TGF5ZXIubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXND
b2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggN2FmNWViNDc3NzQ2MWIzZTRjNzJj
NWU3MzFlY2RhMDE0Zjk3Mzg1OS4uNWU5ZjVlOGM0NGRiNTQ4M2M1MTk2NTIzMDZkOWIxZDk4OTc5
ODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMjUsNiArMjAyNSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rv
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllclVwZGF0ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2Y1YjYyZjM3NjNmY2Y0YjJiODQwNjYyZWRm
YjM1MWZiYTEzN2FmNi4uM2VhOTZjMzU3YzNiYWRlYWI4Njg0NDgxNjJhZDg3NjE3YTdkMTRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zOTEsNyArMzkxLDYgQEAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLXBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1Ry
YWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlmODVlNDk4NmM1M2Ex
Y2M4ZDYzYjMzOTRkM2Y3Mjk1ODMyYWYzODcuLjMzYWMzNWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRj
MWNhZjc1YjA3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjA0NzIsOCArMjA0NzIsNiBAQCBf
T0JKQ19DTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFT
U18kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93
Ci1fT0JKQ19DTEFTU18kX1dlYkdMTGF5ZXIKLV9PQkpDX01FVEFDTEFTU18kX1dlYkdMTGF5ZXIK
IF9PQkpDX0NMQVNTXyRfV2ViTGF5ZXIKIF9PQkpDX01FVEFDTEFTU18kX1dlYkxheWVyCiBfT0JK
Q19DTEFTU18kX1dlYlNjcmlwdE9iamVjdApAQCAtMzA2NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19J
VkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2V4aXRXYXJuaW5nCiBfT0JK
Q19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX3RhcmdldAogX09CSkNf
SVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lW
QVJfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJf
JF9XZWJHTExheWVyLm1fY29udGV4dAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9sYXllck93
bmVyCiBfT0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJf
JF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLnJvb3RPYmplY3QKIF9PQkpDX0lWQVJfJF9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLm9yaWdpblJvb3RPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MGU0Mjg4Mzk3NTY4ZDQ1MGQx
MmYxODViOGY2ZmVhNjA2NjRlMTc4Li42YTEwZmMyNjAzNjk2MTBmNjVkNWJmMTE0YjNlMWZmZmQ2
MDMxNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDMzLDcgKzE0MzMsNiBAQAogCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQz
QTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDlFQ0VCNjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
OUVFRDE0NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1
MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0
OUVFRDE0NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2
OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk0OUZGQkYz
RjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdM
TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIy
NDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNC
IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEEwRkZBQTAxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjM2NSw2ICsyMzY0LDcgQEAKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdy
YXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNC
MjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8q
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29w
ZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAyNkYwQzEzRDAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MzM3LDggKzkzMzcsNiBAQAogCQk0OUVF
RDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVF
RDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZDN0E0RjE0
NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGQzEyOUIy
NDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybUFz
c29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMEZGQTlC
MUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM1OCw2ICsxMTM1
Niw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgx
NTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3
MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3
MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBD
MTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1
RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMTM2OSw2ICsxMTM2OCw3IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NN
YWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVj
a3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0
MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJE
ODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNE
NDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjg2MDEsNiArMjg2MDEsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkw
MDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1
MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQw
Qjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJ
N0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xh
eWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGlj
c0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdy
YXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBAIC0yODkxMiw4ICsyODkxNCw2IEBACiAJCQkJMkQz
RUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJ
CUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
aCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExh
eWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0g
Ki8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tICovLAogCQkJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLywKQEAgLTMyOTY2LDYgKzMyOTY2LDcgQEAK
IAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAo
bnVsbCkgaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJv
cnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0
Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQw
MEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDI4NSw2
ICszNDI4Niw3IEBACiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3
NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NM
YXllckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRD
MCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIw
QUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc1
MTQsNyArMzc1MTYsNiBAQAogCQkJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERy
YXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkg
LyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYw
MDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYz
RjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
MUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjVi
NmJhZWEyMjNmNTY3Yi4uNzJiMmNjZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgog
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIK
ICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNh
bnZhc0Jhc2UoKTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3Jt
YXQ6OkJHUkE4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5Nzhl
ODAyM2UuLjVhZTc5YmYwYjllMzkwYjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgK
QEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1
cnBvc2VzLgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQot
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0
aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZl
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcihib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIpIHsgbV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4Njhi
MGEyM2IyMjNiZGRlOTFjMDc4ZGJmZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0
ZWYwZjlkMjg5MWFkNTYxMzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEs
MTAgQEAgSFRNTENhbnZhc0VsZW1lbnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2Fu
dmFzKCkgY29uc3QKICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNl
KTsKIH0KIAotUGxhdGZvcm1MYXllciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlclBpcGUtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1h
Z2VCdWZmZXJQaXBlLT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1Bs
YWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3
NjBhNmM2NmEzODM0ZGY5OTE5OS4uMGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0
ZDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBib29sIGlzUGxhY2Vob2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVC
YXNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggZmVkMWYyMjg3YTczMzYyMGU4NmRhNGY5MTFmZmFhZWE2YjIzYTkyZS4u
MWM5NThjMDRkNzZjN2M4YWNhNWQxY2Y2MmM0YmU5OTgzNTFiNjU1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02
NDQ2LDkgKzY0NDcsMTEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRl
eHRVbnJlY292ZXJhYmx5TG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYg
IW1fcmVzdG9yZUFsbG93ZWQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYm
ICFtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVy
KCkgOiAwOworICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNv
bHV0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cmVtb3ZlU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKaW5kZXggNjUyNGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYw
OC4uYjU0NTdlNzEzN2Y4NDI2ZGMwMzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aApAQCAtMzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBn
cmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAg
IFdlYkdMQ29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHRHcm91cC5nZXQoKTsgfQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXgg
NzFhMzhhZjA2YjM1OTEyNjNjNzQ0MmJkYjY4NTBlNmY2MzQ1NTlmOS4uYjVmNWVjZDM4MWNhOTBh
MjdkOGQyYWI1MmQzZWZiMjUyYmVkMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIK
ICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNzg2LDcgKzc4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsK
IAotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBib29sIGhhc0FscGhhKERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
Yzc1ZGE1NmE4MzYxNTZjYzBkNWU1YTdkZjFiZmIwYzRiMmIyNjJjNy4uYWZhY2RjZjQ4MWRmODUw
MjhhOTgwOTYwOTdhMTJkM2I0YTQ5ZjNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEz
LDEwIEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9z
ZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3Im
IGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJmOTUw
OWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLjFiMTRmMTU3OTdjYjFhMTMxNTRm
NzM2YjYzMTM3ZDE0OGViZWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3Jh
cGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5nOwpA
QCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29sb3Ig
dG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0Rpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVy
UHVycG9zZSk7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIHsgfQogICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllcklEIGNvbnRlbnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTIzMDZmODA0MWI0MDhhMmNmYzI1Nzk5YzFhMjJjZmE2MjYxZjdhYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKKworI2lmIFVTRShD
QSkKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0EuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6fkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gZGVmYXVsdDsKKworI2lmIFVTRShDQSkK
K3ZvaWQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp3aWxsRGVsZWdhdGVE
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NMYXllckNB
OjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1YmU4YTg1YzY3
Mzk3YzIxNzNlMTVkNjVmOTk0ODJhZDQ1NWUyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5jbHVkZSAi
UGxhdGZvcm1MYXllci5oIgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgVVNFKENB
KQorY2xhc3MgUGxhdGZvcm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNwZWNpZmlj
IGludGVyZmFjZSBmb3IgYXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIuCisvLyBS
ZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hvdyB0aGUg
cGFydGljdWxhciBjb250ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdyYXBoaWNz
TGF5ZXIuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
bGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNl
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOwor
I2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclBpcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyUGlwZS5oCmluZGV4IDZlNmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2Fl
MTA5OTUwZTguLjNiZWQxZDBhZTZlMzkwMDM4MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1M
YXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHBy
b3ZpZGUgYSBQbGF0Zm9ybUxheWVyIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZm
ZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhy
ZWFkCisvLyBVc2VkIHRvIHByb3ZpZGUgR3JhcGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0
ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQg
YW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXJQaXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291
cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCBSZWZQdHI8U291cmNlPiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0wOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCmluZGV4IDRl
NjIyMzkzYzJhZGQxZmU4ZDM5ZmZiZjQwNGY1N2QzODkzYmU2ODAuLjY2NzBkMDFiZjM3YWI5MDUw
NmNkMDU2ZjU3MzJjMzFhOGY2ZjhiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNTE5MGEzODY1NDMwMDcyMDA1
MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uZDAyMmRmNTI5MzVmZmJkZmU1Y2MwMWFiYmYyYjRjMWQ1
M2NmMDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCkBAIC0xMzQ4LDYgKzEz
NDksMzEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgcHJvdmlkZXIsIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
IHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXllciAmJiBwcm92aWRlciA9PSBtX2Nv
bnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jb250
ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE93bmVyKG51bGxwdHIpOwor
ICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5
ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChwcm92aWRlcikgeworICAgICAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURl
bGVnYXRlID0gV1RGTW92ZShwcm92aWRlcik7CisgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkgZGVsZWdhdGVkIGRpc3BsYXkgaXMg
b25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0Q29udGVudHMsIHNvIHNldCB0aGUK
KyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBhY2NvcmRpbmdseS4KKyAgICAgICAg
bV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRhY2hlZCh0cnVlKTsKKyAgICAgICAg
bV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcodHJ1ZSk7CisgICAgICAgIG1f
Y29udGVudHNEaXNwbGF5RGVsZWdhdGUtPndpbGxEZWxlZ2F0ZURpc3BsYXkoKm1fY29udGVudHNM
YXllcik7CisgICAgfQorCisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7Cit9CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllckNBOjpj
b250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdAogewpAQCAtMTg3OCw2ICsxOTA0LDE4IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMb2dGaWxsZWRWaXNpYmxlRnJlc2hU
aWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCkubG9nRmlsbGVkVmlzaWJsZUZyZXNo
VGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZv
cm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBjb25zdAor
eworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlICYmIG1fY29udGVudHNMYXll
ciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckxh
eWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVChtX2NvbnRl
bnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5ZXIgPT0gbV9jb250ZW50c0xheWVy
KTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5kaXNwbGF5KCpsYXllcik7Cit9CisK
IHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGVGb3JDdXN0b21CYWNr
ZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBhcHBlYXJhbmNl
KQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lz
dGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJh
Y2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzAsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
UGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBw
YXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAgICBzZXR1cENvbnRlbnRzTGF5ZXIo
bV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9yaWVudGF0aW9uID0gbV9jb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPm9yaWVudGF0aW9u
KCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAgICBzZXR1cENvbnRlbnRzTGF5ZXIo
bV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAobV9jb250ZW50
c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKQogICAgICAgICBt
X2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpAQCAtNDQxMiwxOSArNDQ1MSwxMyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJUeXBlVG8oUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBjbGllbnQoKS50aWxlZEJhY2tpbmdV
c2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0KIAotR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENv
bnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKQordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRl
bnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBpbm5lciBsYXll
ci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250ZW50c0xheWVyLT5zZXRNYXNr
c1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAoZGVmYXVsdENvbnRlbnRzT3JpZW50
YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7
CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlv
bjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmxpcHBlcigKICAg
ICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAgICAgICAgICAgICAwLjBmLCAtMS4w
ZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2YWIzODBjODg2NjYzNGYzYmY3NDA5
ZWVjN2YzOWI0OGQ4Ny4uOTRjNzRlNTk0MzI4OTFiMGE3NWY1NjhiMDk1MDVlZTAzNzgxOTAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvRGlzcGxheURlbGVnYXRlKFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1Nv
bGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9k
ZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2NlbGVyYXRlZEFu
aW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAgICBjb25zdGV4cHIgc3RhdGlj
IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRh
dGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKKwogcHJp
dmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxh
dGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250
ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRm
b3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlk
ZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7
CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0
b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAg
ICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0K
LSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3Jp
ZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3Jt
Q0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllcios
IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdT
dHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVN
YXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDcsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9j
b250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJv
cGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgK
aW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5MmQxNTgzNC4uOGEyMWExZDVj
ZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTM5LDYgKzM5
LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4
dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworI2lmIEhBVkUoSU9T
VVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgorfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0LDEwIEBAIGNsYXNzIFBsYXRm
b3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIElP
U3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUNBTGF5ZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyLCBXVEY6OkRlc3Ry
dWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNs
YXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYgSEFWRShJT1NVUkZBQ0UpCisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0
JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3RvcmVBdHRh
Y2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmluZGV4IDY3NzhkZTcxOWM1MGUx
YTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3YWZlYWI2NGQ2NmRhOTA2YzBm
MTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFx
dWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29u
dGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXll
ciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
UGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVy
U2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhjMTExZWZmN2UwNmZkMy4uODE5
OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwor
I2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6
SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1h
Y2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRDb250ZW50c1Jl
Y3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2ODJmYzc1NmFjNjY5MDNhYS4u
MmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgIlRpbGVkQmFj
a2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAj
aW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgog
I2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTU0LDYg
KzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNl
bmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQ
bGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVyIHBsYXllckxh
eWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAKLSAgICBpZiAo
W2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHJldHVybiBMYXllclR5cGVD
dXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxh
dGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2Ug
TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVu
dHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW1dlYlNpbXBsZUxheWVyIGNs
YXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoK
QEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXll
ckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgaWYg
KFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgICAgIGxh
eWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2Ug
ZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExh
eWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogI2lm
IEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxMYXllcjoKICAg
ICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAgLTMxMCw3ICszMDQsNyBAQCB2
b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICB9CiAgICAgCiAgICAg
Ly8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCi0gICAg
aWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUg
PT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVy
VHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3Rv
bSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xh
eWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9
PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9u
c107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlz
YWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3LDYgKzc5MSwxOSBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lk
IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZh
Y2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVyQ29udGVudHMo
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdU
Rjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoc3VyZmFjZUhhbmRsZS5jb3B5
U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAg
ICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgK
aW5kZXggZTQwOTVhMmIxOWUyNGQxZGI4MDljMTgyZjY0MzJiZGMwY2I3ODZjMi4uZjc4ZDUxYjBi
ZjI2NTU0ZjJhZTdiOTI0N2NiOWRmM2ZiMzE0MjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMDI5Y2MzZmFlNDdmODcwMjNj
NWMzMDIyNWUwMjU5YTA0MWYwZDY2OS4uYTk5YTY3MGQ5Yzk1ZTFlODIxN2FmZTg1ZDc4OTAyZDkx
MjE4NmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00NjIsMTEgKzQ2
Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5NCw2ICs3ODksMTEgQEAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUNvbmZpZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFj
ZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAo
aWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRl
bnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5
ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXll
ckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdl
YkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQ
aXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVu
dGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2Vs
Zi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0K
LQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQg
dG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3Vy
ZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGlu
Y29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMg
bGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQg
bWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQp
c2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3Jt
OkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hv
clBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1h
a2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hv
dyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5n
IGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAg
IGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAzZWZiMjM4YTk5YjllOWU1MTdjZDI2YmU3YjUzNTc5
OGM4OWY0NzI1Li5lOWY1NjEzODE4NzQ1NWZjMTM1MDYxZjQyNjk0MDY5MzBiNTE3YTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMjks
NTMgKzI5LDc5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0
ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBp
bml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRl
bnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtsYXll
ciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxh
eURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUo
aXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHdpbGxEZWxlZ2F0ZURp
c3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVy
LnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZSht
X2NvbnRlbnRzU2NhbGUpOworICAgIH0KKyAgICB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAg
ICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorICAgIEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisgICAgdm9p
ZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyLnJl
c2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlz
cGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVy
LT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZl
ciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRz
U2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRl
bnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorICAgIGNvbnN0IGJvb2wgbV9p
c09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250
ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBX
ZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hIHsKIHB1YmxpYzoKICAgICB+
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgp
ICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBvdmVy
cmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0K
KyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFs
OwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAgICAgICA6IEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAgICAgLCBtX3dlYkdMTGF5ZXIo
Y3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkKKyAgICAgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQogICAg
IHsKICAgICB9Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKKyAgICBS
ZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlOwogCiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ29yZTo6
Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsK
IH07CiAKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JE
aXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJm
YWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6c3Vy
ZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmVlZHNEaXNw
bGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3BsYXlCdWZmZXIoKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdl
QXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZiZDlkMTU0ZTYwYzQ5
Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNhMzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFu
c2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBA
IC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBvcnQgIkZFQ29tcG9u
ZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQg
PENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQwYWI4NmU3NzBkNDYx
M2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGls
aXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGls
aXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJjLi4zZTFhNGZkMjY3
OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4MSwxMSBAQAogLSAo
dm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7
Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxh
eV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSAm
JiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIu
Z2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07CiB9
CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGlydHlSZWN0CkBAIC05
NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNs
aWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsKLSAgICAgICAgaWYg
KGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7CisgICAgICAgIGlm
IChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBsYXllck93bmVy
LT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7
CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRpcnR5UmVjdF07CiAK
ICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENv
dW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTEwMyw2ICsxMDYsNyBAQAogICAgICAg
ICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6aW5kaWNhdG9yUmVjdF07CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCiAgICAgfQogfQogCkBAIC0xMTMsMTAg
KzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNwbGF5XTsKICAgICBhdXRvIGxheWVyID0g
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlk
Z2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQotICAgICAg
ICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdl
dCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyID0gbGF5ZXIg
PyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAgaWYgKG93bmVyICYmIG93bmVyLT5wbGF0
Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgb3duZXIt
PnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXllci5nZXQoKSk7CisgICAgZWxzZQorICAg
ICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93bmVyKQorICAgICAgICBvd25lci0+cGxh
dGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKIH0KIAogLSAodm9pZClk
cmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdl
QnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlk
ZTM0ZC4uZjQwZDYxZTEzNzY0NmEyNjI0MGNiNWUwMTQ4NGZhNTI5NzFlYjc0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwxNiArNDQsMTggQEAgbmFtZXNw
YWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIHsK
IGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmluYWwgOiBwdWJsaWMgSW1hZ2VC
dWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAg
ICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpOwogCisgICAgLy8gSW1h
Z2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZvaWQgaGFuZGxlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKKyAgICAvLyBDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4KICAgICB2b2lkIHN3YXBCdWZm
ZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmlj
b3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM1IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEltYWdl
QnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xhc3MgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworY2xhc3MgUGlwZVNvdXJjZURpc3Bs
YXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKTsKLSAgICB2aXJ0
dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0OwotCisgICAgc3RhdGljIFJl
ZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4m
JiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0KKyAg
ICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX25p
Y29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBl
OjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFJl
ZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgICAgICA6IG1fbmljb3NpYUxh
eWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7CisgICAgfQorICAgIFJlZlB0cjxDb250
ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKIAotICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUg
ZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBsYXRm
b3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJp
ZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9Citw
cml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsK
KyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1NiwxMCBAQCB2b2lkIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVy
KQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5
ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9zb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJl
ZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291
cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIq
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlm
IChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2
MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsK
ICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzZl
M2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li44Y2NiNjk1Nzg0NmQzMGE3YjI5
ZTk0Y2NjZjk0ZjExOGZiY2E1MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDI5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0
ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKHBsYXRmb3Jt
TGF5ZXIpKTsKKyAgICB9CisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CisgICAgfQorcHJp
dmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpCisg
ICAgeworICAgIH0KKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCit9
CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg4LDkgKzExMiwxOSBAQCBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6R3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYm
IGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlKFdU
Rk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX2xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCZt
X25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
bV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKIHsKIH0KIAorUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKQEAgLTEyMywxNSArMTU3LDYgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgK
ICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSNpZiBVU0UoTklDT1NJ
QSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50TGF5ZXIoKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGQxYWMwZWI3YzBh
ZGEyZmY4OGYxNzlkYjljZDRlYzBhMDVlNzZjYTcuLjFlYWJlY2RiMWJmZTY3ZDVmYmI5NTE2NjNi
ZjFmODk5NzhhNjRhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdM
T2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpAQCAtNTcsNiArNTcsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOworICAgIFJlZjxHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFjY2NlMTNjNjBjNGIuLjE4OThm
MWYxMGI2YjE4YjRmN2QzNWM3M2MwOGJkMWY0ZjBhMzdlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENsaWVudCh0aGlzKTsK
IH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0Rpc3Bs
YXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYm
IGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURl
bGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogewogICAgIGlm
IChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEzMTdjZmZhYTE4
NjEyOTguLjgwYzFiZDg4NDYxMjE3MTQwMWQ0YzUwMGFmZDU5OWQ1YTJkZGYyZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyTGF5ZXIuaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1Rv
U29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzVG9EaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uOTQ3MDY4MTNj
YzM0YTUzMTExNTc1OTg0NjI5NTc3YzJjYjc1NDEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNpbmNs
dWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00OTks
NiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9EaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdh
dGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZv
cm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0
Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykg
Y29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4
M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLjFiMjlkMjk1MTE2ZmVmNmI2ZmM0YzE4OWIxZjQy
OWVkOTY4ZjQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0
bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzVG9EaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xh
eWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKFJlZlB0cjxH
cmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0KaW5kZXggYzM5YzMxMjRlODU0MmFmOTUxOTcxNzg0YjgwZjIwNGM4MTk1ZmNlOC4uZDMwYjRl
NDEwZWZjOGE0YzA0NmQ2YmY1MmM5ZWYxNzk5NzEwZGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiRm9u
dEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkLmgiCiAj
aW1wb3J0ICJMZWdhY3lUaWxlR3JpZFRpbGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Njcm9sbFZpZXdJT1MubW0KaW5kZXggYjRkMmZkOWRkNWM1MmVmYjk3YzMxZGQ3ZDA0NWQz
OTk5ZmU0YmY0MS4uOWE5ZTYxOTUxNWVlNzAyY2U3NDIxOTExNWEzOGMzNTA5N2ZiYTk4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KQEAgLTQxLDgg
KzQxLDYgQEAKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogaW5saW5lIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3PiAq
U2Nyb2xsVmlldzo6c2Nyb2xsVmlldygpIGNvbnN0CkBAIC0yMDYsNyArMjA0LDcgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAjZWxzZQogICAgIExPRyhGcmFt
ZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBOU1N0cmluZ0Zyb21D
bGFzcyhbZG9jdW1lbnRWaWV3KCkgY2xhc3NdKSwgdywgaCk7CiAjZW5kaWYKLSAgICBOU1NpemUg
dGVtcFNpemUgPSB7IHN0YXRpY19jYXN0PENHRmxvYXQ+KG1heCgwLCB3KSksIHN0YXRpY19jYXN0
PENHRmxvYXQ+KG1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAorICAgIE5T
U2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwgdykpLCBz
dGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6Om1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3Ig
NDIxMzMxNAogICAgIFtkb2N1bWVudFZpZXcoKSBzZXRCb3VuZHNTaXplOnRlbXBTaXplXTsKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CkBAIC0yMjMsNyArMjIxLDcgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb2ludCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBOU1BvaW50
IGZsb2F0UG9pbnQgPSBzY3JvbGxQb2ludDsKLSAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgbWF4
KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2ludC54KSwgbWF4KC1bc2Ny
b2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9OyAgLy8gRG9uJ3QgdXNl
IE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCB0ZW1wUG9p
bnQgPSB7IHN0ZDo6bWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2lu
dC54KSwgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50
LnkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0Lgog
ICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5t
bQppbmRleCAxYmJhNGUyYWRjOWY2YTE2ZmJjNjNjMDk2OTNlNWM2NjFmN2RkNTRiLi43NTIwNTIz
OWQ2OGNiNWNhYmUyMGUzZTg3YjUwYTIzMDYyYWUzMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1RoZW1lSU9TLm1tCkBAIC0zMSw4ICszMSw2IEBACiAjaW1wb3J0IDxwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRoZW1lJiBUaGVtZTo6c2lu
Z2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCmluZGV4IDFmMGMwOWYxZDU0NTMwODc1NTdjMWUy
MGIxYThhNTBkZjk5MTBjYWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3NzI4OTA1NTM0MTIzODdjZjZj
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRT
eXN0ZW1BcHBlYXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IDkzODRkMDJk
YzcwYzQ5Y2NhMWM2MzVlNWU4ODZjNDNlZDkzZDljMmIuLmUwZGI4MjdmNDA4NGU3NzcyYzRkMDU0
YTlhODM4OGViMjhmOWVmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0zNCw4ICszNCw2IEBACiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2Nh
bGl6ZWREYXRlQ2FjaGUmIGxvY2FsaXplZERhdGVDYWNoZSgpCkBAIC0xNjYsNyArMTY0LDcgQEAg
ZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBv
bmVudHNUeXBlIHR5cGUsIGNvbnN0IE0KICAgICAgICAgW2NvbXBvbmVudHMgc2V0TW9udGg6KGkg
KyAxKV07CiAgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtncmVnb3JpYW4gZGF0ZUZyb21Db21wb25l
bnRzOmNvbXBvbmVudHMuZ2V0KCldOwogICAgICAgICBOU1N0cmluZyAqZm9ybWF0dGVkRGF0ZSA9
IFtkYXRlRm9ybWF0dGVyIHN0cmluZ0Zyb21EYXRlOmRhdGVdOwotICAgICAgICBtYXhpbXVtV2lk
dGggPSBtYXgobWF4aW11bVdpZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9ybWF0
dGVkRGF0ZSkpKTsKKyAgICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjptYXgobWF4aW11bVdpZHRo
LCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gbWF4aW11bVdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2Yjcw
YmM5MjcyMzRkNTFkLi4wM2M5YjdhMmNmYWZkZjhjMGEyYjA4ZjBiZGE1MjZkOTA5MGIwZDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMTA4OSw3ICsxMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZp
Z3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICBlbHNlIGlm
IChyZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5k
ZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJl
cigpLmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5k
ZXJpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSwgR3JhcGhpY3NMYXllcjo6
Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9EaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2Fu
dmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0YTAyNzg3ZmIxMTBk
OTIzMi4uMTU5ZTUwNTY3NzA0MzMwMWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBV
U0UoR1JBUEhJQ1NfTEFZRVJfV0MpCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOyB9CisgICAgLy8gRklY
TUU6IFRoaXMgaXMgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDEwYTUzNjI5OWNm
MjNlYjlmODZmNTcyN2U4NTIzODNjZThhMDQwMDguLmI4YWE5ZmQ1NTFhODhhNmMzYzBhNjJhNzI5
NDBmYTNkMmM0NDE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAg
LTc4LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3NlcnRJc0N1
cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXko
KTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZm
ZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2UqIGRpc3Bs
YXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1
ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKICNp
ZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFdpbi5jcHAKaW5kZXggMjI0ZmExOGM4MTU5MjYyZmVmM2RlOGVlNTA3YTViN2Q3ZDc5
ZGI5OC4uOWRmODNmNDYwN2NjOThjMGQ4ZmI3ZWRmNjdlZDZmN2I4OTc4MWE0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCkBAIC02NSw2ICs2NSwxMyBAQCB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKKyNpZiBVU0UoR1JBUEhJ
Q1NfTEFZRVJfV0MpCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGxh
dGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+bGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisjZW5kaWYKKwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdm
OWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uYzZhNzg0ZDZkMTkzZDA4YWU2YzA5YjZmYTdlODkzNjk1
OTkyMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qp
OwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAKKyAgICB2b2lkIHNldENvbnRlbnRzKFdU
Rjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUpOwogICAgIGJvb2wgZGlzcGxheSgpOwog
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
QEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyOwor
ICAgICAgICByZXR1cm4gbV9idWZmZXJIYW5kbGUuaGFzX3ZhbHVlKCk7CiAgICAgfQogCiAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVz
aGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjkzN2E5NWM1
NmNlMTc1MzRiMTFmY2ZiNWE0OGRlMWI5MjVkNTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbnN1cmVCYWNraW5nU3RvcmUoVHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogCiB2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiB7CisgICAg
bV9idWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJk
KCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX3NlY29uZGFyeUJhY2tCdWZm
ZXIuZGlzY2FyZCgpOwpAQCAtMTEyLDI2ICsxMTMsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7CiAgICAgZW5jb2RlciA8PCBt
X2luY2x1ZGVEaXNwbGF5TGlzdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsK
LSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6
Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0g
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFj
a2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5h
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZl
ckhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZF
UikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlzcGxheUxp
c3RIYW5kbGU7CkBAIC0yMjAsNiArMjAyLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX2J1
ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwg
bV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBA
IC0yNTcsNiArMjQwLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRz
UGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNs
dWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpz
ZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBjb250ZW50cykKK3sKKyAgICBtX2J1ZmZl
ckhhbmRsZSA9IFdURk1vdmUoY29udGVudHMpOworICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3Jl
OjpSZWdpb24oKTsKKyAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsKK30KKwogYm9vbCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7CiAgICAgQVNTRVJUKCFtX2Zyb250QnVm
ZmVyRmx1c2hlcnMuc2l6ZSgpKTsKQEAgLTI2Nyw2ICsyNTcsMTIgQEAgYm9vbCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgaWYgKFJlbW90ZUxheWVyVHJlZUNvbnRleHQq
IGNvbnRleHQgPSBtX2xheWVyLT5jb250ZXh0KCkpCiAgICAgICAgIG5lZWRUb0VuY29kZUJhY2tp
bmdTdG9yZSA9IGNvbnRleHQtPmJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CiAK
KyAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShtX2xheWVyKSkgeworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJM
YXllckRpc3BsYXkobV9sYXllcik7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3Jt
Q0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGls
ZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVz
IGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwg
ZmFsc2UpOwogCkBAIC0zMjcsNiArMzIzLDIwIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogICAgICAgICBtX2Zyb250QnVmZmVyRmx1c2hlcnMuYXBwZW5kKG1fZnJv
bnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+Y3JlYXRlRmx1c2hlcigpKTsKICNlbmRp
ZgogCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKKyAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCisgICAgICAgICAgICAgICAgbV9idWZmZXJI
YW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
QmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19j
YXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVHlwZTo6Qml0bWFwOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCisgICAgICAg
ICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0
NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmEx
NDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSAr
MTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24o
KSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAi
IDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29u
dGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1p
ZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYz
YmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFj
ZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsy
OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlm
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxh
eWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0
b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0g
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
ICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4g
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXll
cklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJM
YXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2Zk
MzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUwYWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBm
YjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhW
aWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03
NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9z
dCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3
aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMu
aG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZGY4ODNkOTJlNzJkZjIyNTE1YWNlNGIyMTdmOGZkYTE4ZTU4
MzUxMi4uZGY0ZTAxZGEzYWJlNTNmYTI1YTFlOTkwZjIwZjUxMWNhMjdhYWM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTkwLDYg
KzQ5OTAsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3
QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNiZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4u
Y2M1M2U5ZjJmMWNlZmVhNzE2MTg1ZDQ4ZjAwMDg4NzBiMTUyM2NjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMy
LDI0ICszMiw2MyBAQAogI2ltcG9ydCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5o
PgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgot
I2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVyLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJD
b3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlC
dWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdh
dGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShp
c09wYXF1ZSwgY29udGVudHNTY2FsZSkpOworICAgIH0KKyAgICAvLyBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgd2lsbERl
bGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAg
IHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5z
ZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAgfQorICAgIHZvaWQgZGlzcGxh
eShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG1fZGlz
cGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRz
KG51bGxwdHIpOworICAgIH0KKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorICAgIHZvaWQgc2V0RGlzcGxheUJ1
ZmZlcihjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSB7IH07
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1
ZmZlciAmJiBkaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpID09IG1fZGlzcGxheUJ1ZmZlci5zZW5k
UmlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
ZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRz
U2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorICAgIGNvbnN0IGJvb2wgbV9pc09w
YXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgTWFjaFNlbmRSaWdo
dCBtX2Rpc3BsYXlCdWZmZXI7Cit9OwogCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7Citw
dWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0g
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
d2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5h
bCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwzMCArOTcsMjQgQEAgcHVibGljOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVk
aWFTYW1wbGUoKSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNz
Q29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQor
ICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgh
YXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICB7Cisg
ICAgfQorICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworICAgIFJlZjxEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAg
ICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRl
cmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV93ZWJHTExheWVyID0gYWRvcHRO
UyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZp
Y2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRlZiBOREVC
VUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2VuZGlmCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CiAgICAg
aWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZl
ci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNhbXBs
ZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpj
cmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlh
U2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRy
dWUpOwpAQCAtMTAwLDI2ICsxMzMsMTYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICB9CiAgICAgaWYgKCFkaXNwbGF5QnVm
ZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVyID0g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1
ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
LSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNw
bGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJH
TExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZlci0+YXNMYXllckNvbnRlbnRzKCldOwot
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZN
b3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
KyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIobV9k
aXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9CiAKIH0KIAogUmVmUHRyPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0
byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBh
dHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjb250ZXh0OworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0
ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZhNDZm
MjhhZDlmM2RiM2RmZDdhNjAuLmNjNDhjOTZiYjBlM2Y1YWQ3YmFjNjI2NmJlODE5MDkxMTA0MzE2
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5j
cHAKQEAgLTMzLDMzICszMyw1MCBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3JtTGF5ZXJHQ0dMLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBs
YXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9Cisg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOworICAgIH0KK3ByaXZhdGU6CisgICAg
UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxh
dGZvcm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3JtTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxh
eWVyKSkKKyAgICB7CisgICAgfQorICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9y
bUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDIGZpbmFs
IDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGljOgogICAgIC8v
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAgUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0K
IHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3ND
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotCi0gICAgUGxhdGZvcm1MYXllckNvbnRhaW5l
ciBtX3BsYXRmb3JtTGF5ZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0Jh
Y2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdD
R0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0KKyAgICBS
ZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Owog
fTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0
Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQotewotfQotCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJlcGFyZUZvckRpc3BsYXkoKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkxYWIxNDE4NzUwMDQxYjc5ZWQ1
ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4NmYyMDQ4ZGFmMTM3MzQ1MjY4MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0x
NzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVp
bGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgIEFTU0VSVCghbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1fY29udGV4dCk7CiAgICAgCi0g
ICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFvd25lcigpIHx8ICFvd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAgICBib29sIHVzZXNCYWNraW5n
U3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHRoaXMpKTsKKyAg
ICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAhdXNlc0JhY2tpbmdTdG9yZSkgewog
ICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICAgICAgbV9w
cm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQotCiAgICAgaWYgKG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkICYmIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5v
dGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0
b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYgQEAgQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogeworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOworfQorCisjaWYgSEFWRShJ
T1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVz
RHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJh
Y2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3
aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzUmVjdChjb25z
dCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJvcGVydGllcy5jb250ZW50c1JlY3QgPSB2
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0YmFlMGZhNjhjLi43MWQ0MGNlMzEzYTA2
YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyArMTI3LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJy
aWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBX
ZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdm9pZCBzZXRDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5
cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRiMDBlMjUwODI0ZjY4YzkxODU2NTcxMDYw
MzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYxODUwYWJmMmE5YTc5MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAg
LTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29sIG1fcHJvdmlkZXNDb250ZW50czsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMjdiMGZjMDA1MTg1ZGFkNDViNmNh
M2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVhNWMxNmQ2YjU0NzU4MGJmNmMyMjI2ZDMw
MzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhp
Y3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBw
bGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKLQog
UmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpj
cmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhdXRvIGxh
eWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1D
QUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBs
YXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBAIC04Miw4ICs4Myw2IEBAIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKExheWVyVHlw
ZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxheWVyID0gY3VzdG9tTGF5ZXI7CiAgICAg
W2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBtX3Byb3ZpZGVzQ29u
dGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOwotCiAg
ICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQb2ludDNEKGN1c3RvbUxheWVyLnBvc2l0
aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1c3RvbUxheWVyLnpQb3NpdGlvbik7CiAg
ICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxvYXRQb2ludDNEKGN1c3RvbUxheWVyLmFu
Y2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBvaW50LnksIGN1c3RvbUxheWVyLmFuY2hv
clBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5kcyA9IGN1c3RvbUxheWVyLmJvdW5kczsK
QEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXIKICAgICAgICAgICAg
IGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
fQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwotICAgIH0gZWxzZSBpZiAobGF5ZXJU
eXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyKSB7Ci0gICAgICAgIGNsb25l
ZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgLy8gRklY
TUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRlbnRzIGJyZWFrcyB0aGUgb3JpZ2luYWwg
bGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwogICAgIH0KIApAQCAtMTU1LDE4
ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldENvbnRlbnRz
KENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206
OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBzZXROZWVkc0Rp
c3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKG1fcHJvdmlkZXND
b250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3BsYXldOwotICAg
IGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsK
KyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmluZGV4IDBmN2ZjMWI1OTBlZmEwM2ViNGY2
MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLjRmMWFmYTRkODE2ODUyZGJiZDVkNDU5ZTIzNTgzNmRmNDdj
MzBmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dy
YXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYgKzI5MCwxMiBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCit2b2lkIEdyYXBo
aWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwg
Q29udGVudHNMYXllclB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciBwbGF0Zm9ybUxheWVy
ID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBu
dWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1
cnBvc2UpOworfQorCiBib29sIEdyYXBoaWNzTGF5ZXJXQzo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBj
b25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5oCmluZGV4IDk2Mjc0
MWZkZDAxNWEyMzhkNDhkNDU3MDRjNTY2ZjZhMDk4NWViZTUuLjYxOTk0OGM1YTg3ZmE0ZWM1MGYy
YzU1YTNlMzgwMjgzYzg4ZWVlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIldDVXBhdGVJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbmNsdWRlIDx3dGYvRG91
Ymx5TGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc2LDYgKzc3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50
c1RvRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBh
MGJkNWFkYjRhZWM0MDY5NjYyMmI0ZDRiZDI3ZDgyMDkzNzQ2MTE2Li4zODBmYzk2MjRlMjk3ZGQ5
N2EzMmIyMWU1YjNkYmUzMjYzMTdlYmM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMjUgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91
bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbToKKyAgICAgICAgQWRkIGEgZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIg
ZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMS0zMCAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy12YWx1ZXMtNF0g
RHluYW1pYyBgZHYqYCB2aWV3cG9ydCB1bml0cyBzaG91bGQgbm90IHJlc3BlY3QgdGhlIHBhZ2Ug
c2NhbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA4NzZj
NzQ0ODA4ZjQzNjFlM2NkNTJmNTNmZmQ2ZjYwMDNhOGEwZjg3Li5lMTkxMWRmNmMwOTNlMzhjOGQ0
MmZhMTc5ZWZkNWU3NzJlYTY1ZGM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCkBAIC00MCw2ICs0MCwyMSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IG5hbWVzcGFjZSB7CiAKK2NsYXNzIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EgOiBwdWJs
aWMgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIGF1
dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShX
VEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQor
cHJpdmF0ZToKKyAgICBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQorICAgICAgICA6IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKKyAgICB7CisgICAgfQor
fTsKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBA
IC01OCw3ICs3Myw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBjb25zdCBpbnQgZXhwZWN0ZWREaXNw
bGF5QnVmZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXpl
IGNvbnRleHRTaXplKQorc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29h
PiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkK
IHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsK
ICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKQEAgLTY3LDE0ICs4MiwxNCBAQCBzdGF0
aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRU
ZXN0Q29udGV4dChXZWJDb3JlOgogICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAg
IGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOwogICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5n
QnVmZmVyID0gZmFsc2U7Ci0gICAgYXV0byBjb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIGF1dG8gY29udGV4
dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0
ZXMpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNv
bnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkp
OwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1zdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29j
b2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCitzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2Em
IGNvbnRleHQsIGludCBpdGVyYXRpb24pCiB7CiAgICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5n
ZWQoKTsKICAgICBXZWJDb3JlOjpDb2xvciBleHBlY3RlZCB7IGl0ZXJhdGlvbiAlIDIgPyBXZWJD
b3JlOjpDb2xvcjo6Z3JlZW4gOiBXZWJDb3JlOjpDb2xvcjo6eWVsbG93IH07CkBAIC0xMTksMTUg
KzEzNCwxNSBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRp
cGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldAogICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwg
PSB0cnVlOwogICAgIEVYUEVDVF9FUShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQpOwotICAgIGF1dG8g
ZGVmYXVsdENvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAg
ICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7
CiAgICAgQVNTRVJUX05FKGRlZmF1bHRDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0
ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2U6Okxvd1Bvd2VyOwotICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0
ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250
ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAg
ICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0
cmlidXRlcyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFw
aGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29u
dGV4dCwgbnVsbHB0cik7CiAKICAgICBFWFBFQ1RfTkUobG93UG93ZXJDb250ZXh0LT5nZXRTdHJp
bmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNl
Q29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445846</attachid>
            <date>2021-12-03 05:30:07 -0800</date>
            <delta_ts>2021-12-03 10:46:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211203153005.patch</filename>
            <type>text/plain</type>
            <size>122692</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uNzIzNGFlZDk2ODAwNDNiYzZmMzZhMmNmOGYzMmZj
ZTc4YmFhNDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5V
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXll
ciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNw
bGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3NpYTo6
V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6
Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6
Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoTmlj
b3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKIDIw
MjEtMTItMDMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtNU0VdIEZpeCBlcmFzZSByYW5nZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgZGVsZXRpb24g
aW4gZmlsZXMgd2l0aCBjaGFuZ2luZyBkdXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZGI5ZDU2Njlk
OTEyZmJmMjc5Y2I0ZGNlMTJmYTNhNjA2NDdmMi4uMDQzNzhjZTE0NmI2NGQxZWNhNjU5NjFlNzEx
ZDgyZjJjZWUyMGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgY2FwYWJpbGl0eSB0byBhc3NpZ24gSU9TdXJmYWNlcworICAgICAgICB0byBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY29udGVudHMuCisKKyAgICAgICAgTWFrZSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EgdXNlIHRoZSBhZGRlZAorICAgICAgICBHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAg
ICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmNsZWFyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICBDaGFuZ2UgdGhlIGNvbnRyYWN0
IG9mIHdoYXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgc2VyaWFsaXplcyB0bworICAgICAgICB0
aGUgdHJhbnNhY3Rpb24uIEJlZm9yZSwgaXQgc2VyaWFsaXplZCB0aGUgZnJvbnQgYnVmZmVyLgor
ICAgICAgICBBZnRlciwgaXQgc2VyaWFsaXplcyB0aGUgbV9idWZmZXJIYW5kbGUuCisgICAgICAg
IFRoZSBidWZmZXIgaGFuZGxlIGlzIHByb2R1Y2VkIGJ5IGRpc3BsYXkoKSBwaGFzZSBlaXRoZXIg
YnkKKyAgICAgICAgZGVsZWdhdGVkIGRpc3BsYXkgc2V0dGluZyB0aGUgY29udGVudHMgb3IgZHJh
d2luZyB0bworICAgICAgICBmcm9udCBidWZmZXIgYW5kIHRoZW4gYXNzaWduaW5nIHRoZSBmcm9u
dCBidWZmZXIgaGFuZGxlLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
V0M6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0wMyAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBk
b2VzIG5vdCBzZWVtIHRvIGluaXRpYWxpemUgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NDE1YjRmYzZhMmM4NWZhMmNmZWEyNGZlMWMwNTBlY2FiMWZhZmI4OS4uYmRiMjJjNDMxMDU5YjNk
MDQwNjVjYmFjY2Q5OTZlY2NlOWViMWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDUwLDYg
KzE0NTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTFN0YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYWZjOTZhMGI2MTIwN2E0ZGE3MzYxYzUxMzI0ZGY1Mjc2MzFl
MGM5Mi4uNzgxN2Q3ZmIwNWU3MzU3MzkyODhiY2NiZTg1ZDBlNDgyNTFjODRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3ICszMjcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FM
YXllckV4dHJhcy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZWIzNjhiZDBhMzQzMGEwYmE2NGFmNzc0Yzc3
NTg1MjA3M2YzZTJlNS4uNmZiYTlmMjQwZTE2YzRhYjM1NjE5MTU4ZDUyYzBmMWY2OGViNGQ0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIwMjYsNiArMjAyNiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllclVwZGF0ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYzc5ZmM0ZDc4YzYyMTA1MTg5NjFlZjFjNjQxMzIzN2E1
YWM3NDQwZC4uNWNjYTBhYzI2Zjk4M2YzMWY4YWIyY2M5ZjcxNjg5ZGU1ZTNhZjNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zOTEsNyArMzkxLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlmODVlNDk4NmM1M2ExY2M4ZDYz
YjMzOTRkM2Y3Mjk1ODMyYWYzODcuLjMzYWMzNWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRjMWNhZjc1
YjA3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjA0NzIsOCArMjA0NzIsNiBAQCBfT0JKQ19D
TEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFTU18kX1dl
YkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci1fT0JK
Q19DTEFTU18kX1dlYkdMTGF5ZXIKLV9PQkpDX01FVEFDTEFTU18kX1dlYkdMTGF5ZXIKIF9PQkpD
X0NMQVNTXyRfV2ViTGF5ZXIKIF9PQkpDX01FVEFDTEFTU18kX1dlYkxheWVyCiBfT0JKQ19DTEFT
U18kX1dlYlNjcmlwdE9iamVjdApAQCAtMzA2NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19JVkFSXyRf
V2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2V4aXRXYXJuaW5nCiBfT0JKQ19JVkFS
XyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX3RhcmdldAogX09CSkNfSVZBUl8k
X1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lWQVJfJF9X
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJfJF9XZWJH
TExheWVyLm1fY29udGV4dAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9sYXllck93bmVyCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJfJF9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLnJvb3RPYmplY3QKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLm9yaWdpblJvb3RPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NWEwOTBiNjI5Y2Y0N2MxNzMwM2FmMmQ0
MGY5NzlmYjAxNzAxMzFiLi5kNjk2MTVjYTc4ODY3NjU1ZDAxMTI0NWUxYzFhODE0ZDY3YmRiMGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDM4LDcgKzE0MzgsNiBAQAogCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDlFQ0VCNjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0
NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1MTk2OTQw
MDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0OUVFRDE0
NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2OTQwMDA5
OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk0OUZGQkYzRjExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBE
QTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEEwRkZBQTAxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjM3MSw2ICsyMzcwLDcgQEAKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZD
b2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5
RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3Bl
ZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAyNkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVF
RDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MzU4LDggKzkzNTgsNiBAQAogCQk0OUVFRDE0QjEw
NTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVFRDE0QzEw
NTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdM
TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHTExh
eWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybUFzc29jaWF0
ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMEZGQTlCMUFBRjVF
NkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM4MCw2ICsxMTM3OCw3IEBA
CiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgx
NzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEy
NzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEy
NUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4
QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1ZVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYw
QzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ1ZVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTM5MSw2ICsxMTM5MCw3IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3
MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
RkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5
OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5H
TEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3
MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyREMyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjg2NTgsNiArMjg2NTgsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkg
LyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggKi8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovLAogCQkJCTFBQzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFj
dG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNz
TGF5ZXJVcGRhdGVyLmggKi8sCkBAIC0yODk2OSw4ICsyODk3MSw2IEBACiAJCQkJMkQzRUY0NDcx
OTE3OTE1QzAwMDM0MTg0IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQy
Nzc2MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywK
IAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uLm1tICovLAotCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmgg
Ki8sCi0JCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJ
CQkJMDdGNUNGRjQyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgg
Ki8sCiAJCQkJMDdGNUNGRjIyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tICovLAogCQkJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLywKQEAgLTMzMDIzLDYgKzMzMDIzLDcgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyog
QWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0NCw2ICszNDM0
NSw3IEBACiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3
MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBH
cmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1
MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc1NzYsNyAr
Mzc1NzgsNiBAQAogCQkJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZm
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0
NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIx
MkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEy
MjNmNTY3Yi4uNzJiMmNjZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jh
c2UoKTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJH
UkE4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2Uu
LjVhZTc5YmYwYjllMzkwYjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2Vz
LgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcihib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsg
bV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2Iy
MjNiZGRlOTFjMDc4ZGJmZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlk
Mjg5MWFkNTYxMzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxh
Y2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAg
SFRNTENhbnZhc0VsZW1lbnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkg
Y29uc3QKICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0K
IAotUGxhdGZvcm1MYXllciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSgpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclBpcGUtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJQaXBlLT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2
NmEzODM0ZGY5OTE5OS4uMGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBib29sIGlzUGxhY2Vob2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggYWM4MWQ4YzkzMjQ0NDdjZWI3ZmEzOGUzM2E5NjlhZmMxYTAzODRhMC4uY2UwMGU2
M2E4ZmI3NGZhOGM1ZmRlMzNiOTIzYzlkNWY3MTZjNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDUyLDkg
KzY0NTMsMTEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJl
Y292ZXJhYmx5TG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVz
dG9yZUFsbG93ZWQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lz
UGVuZGluZ1BvbGljeVJlc29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAw
OworICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9u
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVtb3ZlU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKaW5kZXggNjUyNGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0
NTdlNzEzN2Y4NDI2ZGMwMzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
Mzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGlj
c0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdM
Q29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91
cC5nZXQoKTsgfQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggNzFhMzhh
ZjA2YjM1OTEyNjNjNzQ0MmJkYjY4NTBlNmY2MzQ1NTlmOS4uYjVmNWVjZDM4MWNhOTBhMjdkOGQy
YWI1MmQzZWZiMjUyYmVkMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzg2LDcgKzc4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAg
IHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGhhc0FscGhhKERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1
NmE4MzYxNTZjYzBkNWU1YTdkZjFiZmIwYzRiMmIyNjJjNy4uNDkyZTQyNmI2MzA1MmY0NDhmNzU3
OTA3ODMxOWVkMGJhNmYyZTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBA
IHZvaWQgR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwg
ZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIHdpZHRoID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjk1MDlmMThjY2I5
NTk5MjNkZDlmNWQ1ZmIyNTJiZTE4Yjk4OTljLi5lYjYzNTlmZTNmMjM1YzFkMzhiZTYwYmEwNjUw
MGY2NzhjZjEzMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEFuaW1hdGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5
ZXJGYWN0b3J5OworY2xhc3MgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwog
Y2xhc3MgSW1hZ2U7CiBjbGFzcyBNb2RlbDsKIGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTUyMiw2
ICs1MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92
ZSB0aGUgY29udGVudHMgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xp
ZENvbG9yKGNvbnN0IENvbG9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsK
ICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
b01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQg
Y29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTk4ODk4
NmEyZjdmOGRkZjZiMGQ4YzJkMzk0NmMzZmMxM2EzNzZmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgorCisjaWYgVVNFKENBKQorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp+R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0OworCisjaWYgVVNFKENBKQordm9pZCBHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTE2Y2M2OGNmOTU3YTY3
YTUyMWY3MzYyZjJmNzc3NWQ0YzBhNzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2Ns
YXNzIFBsYXRmb3JtQ0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRl
cmZhY2UgZm9yIGF0dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9u
c2libGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRp
Y3VsYXIgY29udGVudHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVy
LgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCk7CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb0Rl
bGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNl
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOwor
I2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclBpcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyUGlwZS5oCmluZGV4IDZlNmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2Fl
MTA5OTUwZTguLjNiZWQxZDBhZTZlMzkwMDM4MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1M
YXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHBy
b3ZpZGUgYSBQbGF0Zm9ybUxheWVyIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZm
ZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhy
ZWFkCisvLyBVc2VkIHRvIHByb3ZpZGUgR3JhcGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0
ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQg
YW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXJQaXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291
cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCBSZWZQdHI8U291cmNlPiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0wOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCmluZGV4IDRl
NjIyMzkzYzJhZGQxZmU4ZDM5ZmZiZjQwNGY1N2QzODkzYmU2ODAuLjY2NzBkMDFiZjM3YWI5MDUw
NmNkMDU2ZjU3MzJjMzFhOGY2ZjhiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNTE5MGEzODY1NDMwMDcyMDA1
MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uYTE4MmM1MjU0ZTgwMmNhNzlhMDRhNjc2YWFkZjFhNTFi
ZDYwOGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCkBAIC0xMjQ2LDYgKzEy
NDcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVu
dHNMYXllclB1cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CiAgICAgfQorICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAg
aWYgKGNvbnRlbnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OwpAQCAtMTI3Nyw2ICsxMjc5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAg
ICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIH0KKyAgICBtX2NvbnRlbnRzRGlz
cGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChD
b250ZW50c0ltYWdlQ2hhbmdlZCk7CiB9CkBAIC0xMzA3LDYgKzEzMTAsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJiBtb2RlbCkKICAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25l
OwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogICAgIH0KKyAgICBtX2NvbnRl
bnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIGlmIChjb250ZW50c0xheWVyQ2hh
bmdlZCkKICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTEzNDMsNiArMTM0Nywz
MSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBu
dWxscHRyOwogCiAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBw
dXJwb3NlIDogQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CisgICAgbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRlbGVnYXRlLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
ZGVsZWdhdGUgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAoZGVsZWdhdGUpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUoZGVsZWdhdGUpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5wcmVwYXJlVG9EZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQogCiAgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7CkBAIC0xODc4LDYgKzE5MDcsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllckxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUodW5zaWduZWQgYmxhbmtQ
aXgKICAgICBjbGllbnQoKS5sb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKGJsYW5rUGl4ZWxDb3Vu
dCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNE
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgJiYgbV9jb250ZW50c0xheWVyID09IGxheWVyOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCit7CisgICAgQVNTRVJUKG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUp
OworICAgIEFTU0VSVChsYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpOworICAgIG1fY29udGVudHNE
aXNwbGF5RGVsZWdhdGUtPmRpc3BsYXkoKmxheWVyKTsKK30KKwogc3RhdGljIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZUZvckN1c3RvbUJhY2tkcm9wQXBwZWFyYW5jZShHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGFwcGVhcmFuY2UpCiB7CiAgICAgcmV0dXJuIGFw
cGVhcmFuY2UgPT0gR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJv
cCA/IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDog
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKQEAgLTI3
OTIsNyArMjgzMyw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBQbGF0Zm9ybSBsYXllciB3YXMg
c2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1
YmxheWVyTGlzdCgpLgotICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCkpOworICAgIGF1dG8gb3JpZW50YXRpb24gPSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID8g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+b3JpZW50YXRpb24oKSA6IGRlZmF1bHRDb250ZW50
c09yaWVudGF0aW9uOworICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCksIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENv
bnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CkBAIC00NDEyLDE5ICs0NDU0LDEzIEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBuZXdMYXll
clR5cGUpCiAgICAgICAgIGNsaWVudCgpLnRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZCh0aGlzLCBp
c1RpbGVkTGF5ZXIpOwogfQogCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6
VG9wRG93bjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllciwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFR1cm4gb2Zm
IGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGNvbnRlbnRzTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAj
ZW5kaWYKLQotICAgIGlmIChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKKyAgICBpZiAob3JpZW50YXRp
b24gPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgewogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbGlwcGVyKAogICAgICAgICAgICAgMS4wZiwgMC4w
ZiwgMC4wZiwgMC4wZiwKICAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaAppbmRleCA5ZDQ0ZjZhYjM4MGM4ODY2NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3Li5mNmIy
Yzk0Y2IzZDZmZmFkMDM1ZWI3NDkyYTI1NTgyMjU5MmEwMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUw
LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBj
b250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllcios
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3Im
KSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAt
MTkzLDYgKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkg
Y29uc3QgZmluYWw7CiAKKyAgICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3Jh
cGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIs
NiArMjE2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNP
cGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBkcmF3c0NvbnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxh
eWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9y
bUNBTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlz
cGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERp
c3BsYXkobGF5ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJT
ZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTMwMCwxMCArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExh
eWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5
cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQot
ICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIu
Z2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5
ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlm
CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
PiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFz
ZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3
ZWQ2M2M4YWIxODg4ZTlkZGE5MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBm
OTYyMDYxMWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQ
bGF5ZXJMYXllcjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2Vu
ZGlmCiAKK25hbWVzcGFjZSBXVEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNl
bmRSaWdodDsKKyNlbmRpZgorfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVy
UG9vbDsKQEAgLTQ4LDYgKzU0LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAog
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxp
c3Q7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNv
Y29hOwpAQCAtMTkwLDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYg
Y29udGVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlw
ZVJlZikgPSAwOwogCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllckNsaWVudC5oCmluZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJh
ZDEzMDYuLjFlNzJjNDU2NmU3YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllckNsaWVudC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVU
aWxlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIw
MTM0Y2Q4NTVlYzVjZDExNDhjMTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2Fm
YWU4NGFjZjdlMDQ5YjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0x
MjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQor
ICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlk
ZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5
MGY1NzcyOTZiMjIzOWJmMjg2ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAx
YTU3ZWRmYjJiOWFiOTUzMDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0K
QEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXll
ckV4dHJhcy5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250
YWluZXJMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAg
LTIxMSw5ICsyMTEsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdl
YlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJu
IExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6
W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcjsKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2
ICsyMzEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5n
VGlsZUxheWVyOgorICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAg
ICAgICBsYXllckNsYXNzID0gW1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAg
UGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25G
cmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFW
UGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3Jt
Q0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtD
QUxheWVyIGNsYXNzXTsKQEAgLTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpjb21tb25Jbml0KCkKICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBs
aWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQ
cm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVT
Y3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAg
ICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAg
ICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRl
IHNoYXJlZF1dOwpAQCAtNzk3LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQogCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAg
c2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3Vy
ZmFjZUhhbmRsZSkKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFj
ZSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5kZXggYTY0OGZjZDJlYzRmMGI5
YjUxZTMwMjM2OWUwMTI0OWI1MmQ5YjRlNC4uOTEzYzBmNGE1MmQwZDFhZTAzOWJkOGUzMjY2ODc4
ZmE1MTJmYWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3Zl
cnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggYTRhZWUzZGZhYjBmNzdhMmZlYzViNWNkZmRjZmI4MmU0MGU0MTFl
Ni4uYWY1ZGFmYjYyMjMyOWU0YWJlMDRmMjQ5YWZkZDRmMjljMjNlNWUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00NjcsMTEgKzQ2Nyw2IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0K
IAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikK
QEAgLTc5OSw2ICs3OTQsMTEgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29uZmlnT2JqOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0
NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0v
LyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRl
bnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1
ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3Jh
cGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0
Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRl
bnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2
aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJ
T1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVy
IHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50
Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5s
aWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9p
bnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zv
cm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5z
Zm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0
LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsK
LSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsK
LX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBh
cyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0g
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpp
bmRleCAyNTQyNjIzMGRmZWRhZDJjNWViOTEwNDI0YTA4YTcyZTM3MTdiMmQ3Li4zMTM4NThiOGY1
N2RhYjhkMTBhNmFiNjI4MTdlODc1NDBlZjM4MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMjksOCArMjksNyBAQAogI2lmIEVOQUJM
RShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCIgLy8gTk9MSU5UCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNpbXBvcnQgIldlYkdM
TGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXIuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIkRpc3BsYXlD
b25maWd1cmF0aW9uTW9uaXRvci5oIgpAQCAtMzksNDYgKzM4LDgzIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0
ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBp
bml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRl
bnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtsYXll
ciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxh
eURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUo
aXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZVRvRGVs
ZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAg
ICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRz
U2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BsYXkoUGxhdGZv
cm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZm
ZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAg
fQorCisgICAgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBHcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAg
IH0KKworICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIp
CisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlz
cGxheUJ1ZmZlci5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpID09IG1f
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2Rpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKGRpc3BsYXlCdWZm
ZXItPnN1cmZhY2UoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAg
ICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2Fs
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7Cit9Owog
CiAvLyBHcmFwaGljc0NvbnRleHRHTCB0eXBlIHRoYXQgaXMgdXNlZCB3aGVuIFdlYkdMIGlzIHJ1
biBpbi1wcm9jZXNzIGluIFdlYkNvbnRlbnQgcHJvY2Vzcy4KIGNsYXNzIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBwcml2YXRlIERpc3BsYXlDb25maWd1cmF0aW9uTW9u
aXRvcjo6Q2xpZW50CiAjZW5kaWYKLQogewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYSgpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KKwogICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMQ29jb2Egb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENB
TGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIC8vIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvcjo6Q2xpZW50IG92ZXJyaWRl
cy4KICAgICB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKSBmaW5hbDsKICNlbmRpZgotCiAg
ICAgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAKKyAg
ICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogICAgIGZyaWVuZCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNvcmU6
OmNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmKTsKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7
CiB9OwogCiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6V2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRl
cykKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAg
ICAsIG1fd2ViR0xMYXllcihjcmVhdGVXZWJHTExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQor
ICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5
RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhl
bFJhdGlvKSkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25N
b25pdG9yOjpzaW5nbGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwpAQCAtOTUsMTMgKzEzMSw3IEBA
IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKQogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJl
cGFyZUZvckRpc3BsYXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVG
b3JEaXNwbGF5KCk7Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZl
cigpLnN1cmZhY2UuZ2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250
ZW50czpzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXRO
ZWVkc0Rpc3BsYXldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigp
KTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBw
bGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNv
bXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3
YmZmZTAxM2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJh
ZGQzOTNhMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNm
ZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1B
R0UpCiAKICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFn
ZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8
Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXgg
YWNmOTZmZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIx
OTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lt
cG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZk
YTgwZDYwM2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1t
CkBAIC04MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRv
IGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXll
cigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigp
ICYmIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAg
ICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93
bmVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OihDR1JlY3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXIt
Pm93bmVyKCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdz
Q29udGVudCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5
KHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNw
bGF5SW5SZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0
Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAg
LTEwMyw2ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJ
blJlY3Q6aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAg
CiAgICAgfQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2Nr
KCk7CiAjZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNw
bGF5XTsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYm
IGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
TGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAg
aWYgKG93bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVy
LmdldCgpKSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXll
ci5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93
bmVyKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVy
LmdldCgpKTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5
Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uMmY3NGQwZWJhZGI3ZDgyZTkyMGQ0MjhjZDll
MTljZjZkZGUzNjA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBA
IC00NCwxNiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgog
ICAgIHZvaWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJp
dmF0ZToKKyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJy
aWRlcy4KICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xh
c3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUg
eworY2xhc3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBk
ZWZhdWx0OworICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRl
KFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29z
aWFMYXllcikpKTsKKyAgICB9CiAKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVy
KQorICAgICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7
CisgICAgfQorCisgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Cit9Owor
CitjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVy
UGlwZSB7CitwdWJsaWM6CisgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCisgICAgICAgIDog
bV9zb3VyY2UoYWRvcHRSZWYoKm5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGlwZVNvdXJjZURpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpKQorICAgIHsKKyAgICB9
CiAKLSAgICBSZWZQdHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7Cisg
ICAgLy8gSW1hZ2VCdWZmZXJQaXBlIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQ
aXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlLnB0cigp
OyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQorcHJpdmF0ZToKKyAgICBSZWY8Tmljb3NpYUltYWdl
QnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVs
ZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2U6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKQpAQCAtMTM1
LDMwICsxNTksMTAgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
UmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIu
Z2V0KCk7Ci19Ci0KIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCgpCiB7CiB9CiAKLU5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUoKQotewotICAgIG1fc291cmNlID0gYWRvcHRSZWYobmV3IE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2UpOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnNvdXJjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c291cmNlOwotfQotCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBt
X3NvdXJjZS0+cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4
IGJhOWQ1YWY5MGQ3NDg1YTc2NDM1NjkyZGI1NjBhYmJlOWQ4MTUwNWIuLmYyYTc5MjhkNWVlNTJi
NjAzMzY2MWM1OTE3ZTdlMjdiMmMyMjY4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdGV4SW1hZ2UyRFJl
c291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgYWxpZ25tZW50ID0g
NCk7CiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgYm9vbCBpc0dM
RVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8g
RW50cnkgcG9pbnRzIGZvciBXZWJHTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTc2ZTNhYmU1YmIzYWM0MGFmOGYyMGM5ZWU0ZWU4YTI1
NTNiMGE0Ny4uNzUwYTg0YWY2MzgyYzU0MTMwY2YzNmU4NmQ5YmM4Yzc2MDRjZmJjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBA
IC03OSw2ICs4MCwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSB7CisK
K2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZShwbGF0Zm9ybUxheWVyKSk7CisgICAgfQorCisgICAgLy8gR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3BsYXRmb3JtTGF5ZXI7CisgICAgfQorCitwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJE
aXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBt
X3BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgfQorCisgICAgUGxhdGZv
cm1MYXllciogbV9wbGF0Zm9ybUxheWVyOworfTsKKworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0
ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXVEZNb3ZlKGF0
dHJpYnV0ZXMpKSk7CkBAIC04OCw3ICsxMTUsMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwogCiBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAgIDogR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQorI2lm
IFVTRShOSUNPU0lBKQorICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRM
YXllcigpKSkKKyNlbHNlCisgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1fdGV4bWFwTGF5ZXIuZ2V0KCkpKQor
I2VuZGlmCit7Cit9CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSgpCiB7CisgICAgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5w
dHIoKTsKIH0KIAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzKQpAQCAtMTIzLDE1ICsxNjAsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIHJl
dHVybiBjb250ZXh0OwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotI2lmIFVTRShOSUNPU0lBKQotICAg
IHJldHVybiAmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXllcigpOwotI2Vsc2UKLSAgICByZXR1
cm4gbV90ZXhtYXBMYXllci5nZXQoKTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKaW5kZXggYjQwZTc5ODMzZTgxMTBmNWQw
OTdlYWQzYjUzMWYxZTYyZDZkOGQxYi4uMmRiMmU4ZDdkOWNkN2I5Y2FiYjRjOWNhNDE3MjQzZjBl
N2EwYjUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcigpOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSBv
dmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
OworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
Ym9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCkBAIC02MCw2ICs2MCw3IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgUmVmPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZTk5NDI1NDRiZmU5
MDk0NGMzNTBkMTM5Yzg1M2M5N2ZkNjQwMzBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVNYXBwZXJQ
bGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlE
ZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogewogICAgIGlmIChpc1Nob3dp
bmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEzMTdjZmZhYTE4NjEyOTguLjBj
ODliYTNhNTk0OGM0MThjMTI3OWVmYWQ3YTk1YTk1OGU4MGVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
TGF5ZXIuaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudHNU
b0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xv
cihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsK
ICAgICBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9j
b250ZW50c0xheWVyOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkw
N2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0MjM3ZDhhNGEzOWYuLjA1NDE2YTUwMDE1YjZmYzFjZDU1
MDMxMDkyMTJkMzY1ZWJmNzlkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
Tmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3Np
YUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNM
YXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
ID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBu
dWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1
cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewogICAg
IGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTViMDI0MzgzZDc1OTU3ODkxYzk1
YjBjN2NmZDc1YjRjZC4uOTdkZWM1OWJmMTc5MThhMmNjODIwZDQ2NWZlMDViMGUzZmUyNzZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93UmVwYWludENv
dW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUlt
YWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggYzM5YzMx
MjRlODU0MmFmOTUxOTcxNzg0YjgwZjIwNGM4MTk1ZmNlOC4uZDMwYjRlNDEwZWZjOGE0YzA0NmQ2
YmY1MmM5ZWYxNzk5NzEwZGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCisjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiRm9udEFudGlhbGlhc2luZ1N0
YXRlU2F2ZXIuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkLmgiCiAjaW1wb3J0ICJMZWdhY3lU
aWxlR3JpZFRpbGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
Y3JvbGxWaWV3SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJ
T1MubW0KaW5kZXggYjRkMmZkOWRkNWM1MmVmYjk3YzMxZGQ3ZDA0NWQzOTk5ZmU0YmY0MS4uOWE5
ZTYxOTUxNWVlNzAyY2U3NDIxOTExNWEzOGMzNTA5N2ZiYTk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KQEAgLTQxLDggKzQxLDYgQEAKICNpbXBv
cnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5s
aW5lIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3PiAqU2Nyb2xsVmlldzo6c2Ny
b2xsVmlldygpIGNvbnN0CkBAIC0yMDYsNyArMjA0LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0
Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAjZWxzZQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3
ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBOU1N0cmluZ0Zyb21DbGFzcyhbZG9jdW1lbnRW
aWV3KCkgY2xhc3NdKSwgdywgaCk7CiAjZW5kaWYKLSAgICBOU1NpemUgdGVtcFNpemUgPSB7IHN0
YXRpY19jYXN0PENHRmxvYXQ+KG1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KG1heCgw
LCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAorICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9
IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwgdykpLCBzdGF0aWNfY2FzdDxDR0Zs
b2F0PihzdGQ6Om1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAogICAgIFtk
b2N1bWVudFZpZXcoKSBzZXRCb3VuZHNTaXplOnRlbXBTaXplXTsKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiB9CkBAIC0yMjMsNyArMjIxLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0
Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBOU1BvaW50IGZsb2F0UG9pbnQgPSBz
Y3JvbGxQb2ludDsKLSAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygp
IHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2ludC54KSwgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9s
bE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9OyAgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRv
IHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IHN0ZDo6bWF4
KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2ludC54KSwgc3RkOjptYXgo
LVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07IC8vIERvbid0
IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZp
ZXcoKSBzY3JvbGxQb2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQppbmRleCAxYmJhNGUy
YWRjOWY2YTE2ZmJjNjNjMDk2OTNlNWM2NjFmN2RkNTRiLi43NTIwNTIzOWQ2OGNiNWNhYmUyMGUz
ZTg3YjUwYTIzMDYyYWUzMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
Lm1tCkBAIC0zMSw4ICszMSw2IEBACiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5oCmluZGV4IDFmMGMwOWYxZDU0NTMwODc1NTdjMWUyMGIxYThhNTBkZjk5MTBj
YWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3NzI4OTA1NTM0MTIzODdjZjZjYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Nv
Y29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IDkzODRkMDJkYzcwYzQ5Y2NhMWM2MzVl
NWU4ODZjNDNlZDkzZDljMmIuLmUwZGI4MjdmNDA4NGU3NzcyYzRkMDU0YTlhODM4OGViMjhmOWVm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxp
emVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2Ev
TG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0zNCw4ICszNCw2IEBACiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2NhbGl6ZWREYXRlQ2FjaGUm
IGxvY2FsaXplZERhdGVDYWNoZSgpCkBAIC0xNjYsNyArMTY0LDcgQEAgZmxvYXQgTG9jYWxpemVk
RGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUs
IGNvbnN0IE0KICAgICAgICAgW2NvbXBvbmVudHMgc2V0TW9udGg6KGkgKyAxKV07CiAgICAgICAg
IE5TRGF0ZSAqZGF0ZSA9IFtncmVnb3JpYW4gZGF0ZUZyb21Db21wb25lbnRzOmNvbXBvbmVudHMu
Z2V0KCldOwogICAgICAgICBOU1N0cmluZyAqZm9ybWF0dGVkRGF0ZSA9IFtkYXRlRm9ybWF0dGVy
IHN0cmluZ0Zyb21EYXRlOmRhdGVdOwotICAgICAgICBtYXhpbXVtV2lkdGggPSBtYXgobWF4aW11
bVdpZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKKyAg
ICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjptYXgobWF4aW11bVdpZHRoLCBtZWFzdXJlci5tZWFz
dXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbWF4
aW11bVdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2YjcwYmM5MjcyMzRkNTFkLi42
OTUwYTFlMGU1MzIwMTgxMDdkNWZkZjhhNWE3YmJjNTE3MDU0MDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA4OSw3ICsxMDg5
LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3Qg
UmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlz
Q2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52
YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7
CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkp
Ci0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1
cnBvc2U6OkNhbnZhcyk7CisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwg
R3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAg
bGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmlu
ZGV4IGFlMzE3YjE1MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjE1OWU1MDU2Nzcw
NDMzMDFmZDE5ODUwYzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBA
IC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVS
X1dDKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxheWVy
aW5nIHZpb2xhdGlvbiBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3MjdlODUy
MzgzY2U4YTA0MDA4Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQxNjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhy
ZWFkKTsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNl
KiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNl
bmRSaWdodCBzZW5kUmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250
ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAg
bV9jb250ZXh0LT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0Vf
U0VUX09XTkVSU0hJUF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCmlu
ZGV4IDIyNGZhMThjODE1OTI2MmZlZjNkZThlZTUwN2E1YjdkN2Q3OWRiOTguLjlkZjgzZjQ2MDdj
Yzk4YzBkOGZiN2VkZjY3ZWQ2ZjdiODk3ODFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
V2luLmNwcApAQCAtNjUsNiArNjUsMTMgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorUGxh
dGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KS0+cGxhdGZvcm1MYXllcigpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3ZjlmNGEzYmU5OTZhZDQ1MWQw
MTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5NTk5MjI0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lkIHNldE5l
ZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQm
JiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04Myw3ICs4NCw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIG1f
YnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5kaW5n
Rmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0NjZiNjZkNzgz
NmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVjNTZjZTE3NTM0YjExZmNmYjVh
NDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMDAs
NiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0
b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAogdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAgIG1fYnVmZmVySGFuZGxlID0g
c3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFja0J1
ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsKQEAg
LTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7CiAgICAg
ZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlRGlzcGxheUxp
c3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxl
OwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRjaCAo
bV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAgaWYg
KGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5k
Q3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+
KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tl
bmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQot
ICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGVu
Y29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZmZXJIYW5kbGU7CiAKICNpZiBF
TkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3RkOjpvcHRp
b25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwpAQCAtMjIw
LDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJv
bnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAK
ICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpAQCAtMjU3LDYgKzI0MCwxMyBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkK
ICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpO
bzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMoV1RGOjpN
YWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9idWZmZXJIYW5kbGUgPSBXVEZNb3Zl
KGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7CisgICAg
bV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUo
KSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRp
c3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9sYXll
ci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250ZXh0
LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsKKyAg
ICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1fbGF5
ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERp
c3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIE1h
a2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRoYXQg
d2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5LgogICAg
IHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApAQCAtMzI3
LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAg
ICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3BsYXlM
aXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5kaWYKIAorICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CisgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQo
KSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJh
Y2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2Vu
ZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6
OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgbV9idWZmZXJIYW5k
bGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
Jj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIzOGU4
OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJpbmcg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVy
OgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIu
aG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVh
dGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3Vz
dG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5
ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZmYzcz
NmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVy
biBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxh
eWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxh
eWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVO
b2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5kaWYK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmIChtX2lz
RGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5v
ZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAgIHJl
dHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElE
OnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMwNjgwZTYw
MTE5YzMuLjBiMWJkMDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1h
a2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
U2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRC
YWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRz
UHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tD
b21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFr
ZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXll
cjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAg
IGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5w
cm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDY1OWVjODg3Y2U5YTNlODUyYTk1YWM1YTc1ODNjOWQ2Y2NjMDgwZjIuLmE3ZDNkYjVjMTFi
OWMxNzQxMmRmODdmZWE1ZGM1ZWI4ODA5ZTE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTAwMCw2ICs1MDAwLDcgQEAKIAkJN0I0
ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IDE0
MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLjRhNGUwMzkzYmE1ZDcxNDgy
MzViNjIzYjE1NDQzYmY5NjA5ZTE4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwyNCArMzIsNjkgQEAKICNp
bXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
V2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmlu
YWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CitjbGFzcyBEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBk
aXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLmdldCgpOyB9Cisg
ICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBp
c09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRz
U2NhbGUpKTsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZVRvRGVsZWdhdGVEaXNw
bGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAg
ICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRz
U2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BsYXkoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rpc3BsYXlCdWZm
ZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRy
KTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorCisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVy
KGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAo
IWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVy
ICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdo
dCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNw
bGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAgICB9CiAKK3ByaXZhdGU6CisgICAgRGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxl
KQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50c1Nj
YWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGJvb2wgbV9pc09w
YXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgTWFjaFNlbmRSaWdo
dCBtX2Rpc3BsYXlCdWZmZXI7Cit9OworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7Citw
dWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0g
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
d2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5h
bCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwzMCArMTAzLDI1IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
IWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgewor
ICAgIH0KKworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworICAgIFJlZjxEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7
CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJl
bmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV93ZWJHTExheWVyID0gYWRv
cHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5k
ZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRlZiBO
REVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2VuZGlm
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CiAg
ICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxheUJ1
ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNh
bXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3Jl
OjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIp
LCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24s
IHRydWUpOwpAQCAtMTAwLDI2ICsxNDAsMTYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICB9CiAgICAgaWYgKCFkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVy
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShk
aXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93
ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZlci0+YXNMYXllckNvbnRlbnRzKCld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBX
VEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIo
bV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9CiAKIH0KIAogUmVmUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0gICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjb250ZXh0OworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJp
YnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZh
NDZmMjhhZDlmM2RiM2RmZDdhNjAuLmJiYWI0ZDYzN2UwMDIzN2I0NjlmZDUxMmUzMWRhOTUwZjcw
NzFhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
d2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHAKQEAgLTMzLDMzICszMyw1NCBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3JtTGF5ZXJHQ0dMLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3Mg
UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9
CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5l
ciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxh
dGZvcm1MYXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIg
bV9wbGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGlj
OgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIu
Z2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAg
OiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRy
aWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1
ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQor
ICAgIHsKKyAgICB9CiAKLSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXll
cjsKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAg
OiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRy
aWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlx
dWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQot
ewotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJlcGFyZUZvckRp
c3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkxYWIxNDE4NzUw
MDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4NmYyMDQ4ZGFmMTM3MzQ1
MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVj
dXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgIEFT
U0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1fY29udGV4dCk7
CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFvd25lcigpIHx8
ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAgICBib29sIHVz
ZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHRo
aXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAhdXNlc0JhY2tpbmdT
dG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAg
ICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQotCiAgICAgaWYgKG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVk
ICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkKICAgICAgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYgQEAgQ0ZUeXBlUmVmIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogeworICAgIGlmICghdmFs
dWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOworfQorCisj
aWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIEFTU0VSVChtX2Fj
Y2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5jcmVhdGVTZW5kUmlnaHQo
KSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgQVNTRVJUKG1fYWNjZWxl
cmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQo
KSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRz
UmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJvcGVydGllcy5jb250ZW50
c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0YmFlMGZhNjhjLi43MWQ0
MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyArMTI3LDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVm
IGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVS
ZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50
cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRl
bnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdm9p
ZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRiMDBlMjUwODI0ZjY4Yzkx
ODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYxODUwYWJmMmE5YTc5MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxM
YXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29sIG1fcHJvdmlkZXNDb250
ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMjdiMGZjMDA1MTg1
ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVhNWMxNmQ2YjU0NzU4MGJm
NmMyMjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBv
cnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxh
eWVyIjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20o
UGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1M
YXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBAIC04Miw4ICs4Myw2IEBA
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
KExheWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxheWVyID0gY3VzdG9tTGF5
ZXI7CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBtX3By
b3ZpZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQb2ludDNEKGN1c3RvbUxh
eWVyLnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1c3RvbUxheWVyLnpQb3Np
dGlvbik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxvYXRQb2ludDNEKGN1c3Rv
bUxheWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBvaW50LnksIGN1c3RvbUxh
eWVyLmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5kcyA9IGN1c3RvbUxheWVy
LmJvdW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXIKICAg
ICAgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwotICAgIH0gZWxzZSBp
ZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyKSB7Ci0gICAg
ICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgLy8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRlbnRzIGJyZWFrcyB0aGUg
b3JpZ2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwogICAgIH0KIApA
QCAtMTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNl
dENvbnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBz
ZXROZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKIH0KIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKG1f
cHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3Bs
YXldOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmluZGV4IDBmN2ZjMWI1OTBl
ZmEwM2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLjQ2MDJkOWY4MmNmZGIwOTNhZGMzMzI3ZTk1
OTU3Y2ExZDRhNTA1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYgKzI5MCwxMiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVs
ZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIgcGxhdGZv
cm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXll
cigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxh
eWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRl
eCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2
OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXQ1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8
d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXll
cigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ4NjhkMmUyMzY1ZmVlNzUxMDQxZjQ0ZmYzZTY0MGZjMGRiYWRiYWQuLmFiOTNhNTc2MWNi
YzZkOGMxMDhlNmM1NjdhYjI4YmU4ZGFhYmU4M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVycmlkZSBvZiB0aGUgbmV3IG1l
bWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCiAyMDIxLTEyLTAy
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsYXRp
b24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNo
RGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
ODc2Yzc0NDgwOGY0MzYxZTNjZDUyZjUzZmZkNmY2MDAzYThhMGY4Ny4uZTE5MTFkZjZjMDkzZTM4
YzhkNDJmYTE3OWVmZDVlNzcyZWE2NWRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbQpAQCAtNDAsNiArNDAsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisgICAgeworICAgICAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9
CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpCisgICAgeworICAg
IH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5PTElO
VApAQCAtNTgsNyArNzMsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3QgaW50IGV4cGVjdGVk
RGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50
U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNp
emUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02NywxNCArODIsMTQgQEAg
c3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxzZTsK
ICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRy
aWJ1dGVzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBjb250ZXh0LT5yZXNoYXBlKGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdo
dCgpKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQorc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENv
Y29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQogewogICAgIGNvbnRleHQubWFya0NvbnRleHRD
aGFuZ2VkKCk7CiAgICAgV2ViQ29yZTo6Q29sb3IgZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8g
V2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29yZTo6Q29sb3I6OnllbGxvdyB9OwpAQCAtMTE5
LDE1ICsxMzQsMTUgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0LCBNQVlCRV9N
dWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1l
dGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0KTsKLSAgICBh
dXRvIGRlZmF1bHRDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7
CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVz
IH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRy
aWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0g
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2Vy
Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7
Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7
IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5j
ZUNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+Z2V0
U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJmb3Jt
YW5jZUNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVS
RVIpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA4NjZiNzQ4MzRhNWI0MmZkZjIwZmVmZTQzOTdhZDA3ZmJiZTU0YmEwLi4y
NDQ5ZDg5NjBlNzEzYTNjYTU5YTc4Y2E0YTMwMmUwNWQxMmQyNDcwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjEtMTItMDMgIEFyY2FkeSBHb2xkbWludHMtT3Jsb3YgIDxhZ29sZG1pbnRzQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gdGVzdCBodHRwL3Rlc3RzL3NlY3VyaXR5
L3dlYmF1ZGlvLXJlbmRlci1yZW1vdGUtYXVkaW8tYWxsb3dlZC1jcm9zc29yaWdpbi5odG1sIGZh
aWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM3
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBQaGlsaXBwZSBOb3JtYW5kLgorCisgICAgICAgIEdp
dmUgc29tZSBtb3JlIHRpbWUgdG8gdGhlIGZyZXF1ZW5jeSBhbmFseXplciB0byBkZXRlY3QgYWN0
aXZpdHkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmF1ZGlvLXJlbmRlci1y
ZW1vdGUtYXVkaW8tYWxsb3dlZC1jcm9zc29yaWdpbi5odG1sOgorCiAyMDIxLTEyLTAzICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXSBGaXgg
ZXJhc2UgcmFuZ2UgdG8gcHJldmVudCBhY2NpZGVudGFsIGRlbGV0aW9uIGluIGZpbGVzIHdpdGgg
Y2hhbmdpbmcgZHVyYXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3dlYmF1ZGlvLXJlbmRlci1yZW1vdGUtYXVkaW8tYWxsb3dlZC1jcm9zc29yaWdpbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJhdWRpby1yZW5kZXItcmVt
b3RlLWF1ZGlvLWFsbG93ZWQtY3Jvc3NvcmlnaW4uaHRtbAppbmRleCA0NjcyODBjMmI1YjBiOTUz
NDEzNTBiZjY2NjFiN2NmNTNmZDgzNGQxLi5lOGIyYjkzZTg5ZGE1MTAxMmQ2MTFhODA2MDRhOGNk
ZGZlYjc3NDg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3dl
YmF1ZGlvLXJlbmRlci1yZW1vdGUtYXVkaW8tYWxsb3dlZC1jcm9zc29yaWdpbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvd2ViYXVkaW8tcmVuZGVyLXJlbW90ZS1h
dWRpby1hbGxvd2VkLWNyb3Nzb3JpZ2luLmh0bWwKQEAgLTM3LDExICszNywxMyBAQAogICAgICAg
ICB9LCAzMCk7CiAKICAgICAgICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigiZW5kZWQiLCBldmVu
dCA9PiB7Ci0gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsVG9rZW4pOwotICAgICAg
ICAgICAgY29udGV4dC5zdXNwZW5kKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkTm90QmUoIm91dHB1dEFycmF5IiwgInNpbGVudEFycmF5Iik7Ci0gICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbFRva2Vu
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnN1c3BlbmQoKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoIm91dHB1dEFycmF5IiwgInNpbGVudEFycmF5Iik7
CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0p
CisgICAgICAgICAgICB9LCAxMDApOwogICAgICAgICB9KTsKICAgICB9CiAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBnbyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445872</attachid>
            <date>2021-12-03 10:46:39 -0800</date>
            <delta_ts>2021-12-05 13:23:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211203204636.patch</filename>
            <type>text/plain</type>
            <size>120789</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAw
YjAyODFhMDU5M2VhOGE0YzEzYWE1MDc0Mi4uNzIzNGFlZDk2ODAwNDNiYzZmMzZhMmNmOGYzMmZj
ZTc4YmFhNDkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5V
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXll
ciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNw
bGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3NpYTo6
V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6
Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6
Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoTmlj
b3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKIDIw
MjEtMTItMDMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtNU0VdIEZpeCBlcmFzZSByYW5nZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgZGVsZXRpb24g
aW4gZmlsZXMgd2l0aCBjaGFuZ2luZyBkdXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlZGI5ZDU2Njlk
OTEyZmJmMjc5Y2I0ZGNlMTJmYTNhNjA2NDdmMi4uMDQzNzhjZTE0NmI2NGQxZWNhNjU5NjFlNzEx
ZDgyZjJjZWUyMGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgY2FwYWJpbGl0eSB0byBhc3NpZ24gSU9TdXJmYWNlcworICAgICAgICB0byBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY29udGVudHMuCisKKyAgICAgICAgTWFrZSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EgdXNlIHRoZSBhZGRlZAorICAgICAgICBHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAg
ICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmNsZWFyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICBDaGFuZ2UgdGhlIGNvbnRyYWN0
IG9mIHdoYXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgc2VyaWFsaXplcyB0bworICAgICAgICB0
aGUgdHJhbnNhY3Rpb24uIEJlZm9yZSwgaXQgc2VyaWFsaXplZCB0aGUgZnJvbnQgYnVmZmVyLgor
ICAgICAgICBBZnRlciwgaXQgc2VyaWFsaXplcyB0aGUgbV9idWZmZXJIYW5kbGUuCisgICAgICAg
IFRoZSBidWZmZXIgaGFuZGxlIGlzIHByb2R1Y2VkIGJ5IGRpc3BsYXkoKSBwaGFzZSBlaXRoZXIg
YnkKKyAgICAgICAgZGVsZWdhdGVkIGRpc3BsYXkgc2V0dGluZyB0aGUgY29udGVudHMgb3IgZHJh
d2luZyB0bworICAgICAgICBmcm9udCBidWZmZXIgYW5kIHRoZW4gYXNzaWduaW5nIHRoZSBmcm9u
dCBidWZmZXIgaGFuZGxlLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVy
V0M6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0wMyAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmsgcHJvY2VzcyBk
b2VzIG5vdCBzZWVtIHRvIGluaXRpYWxpemUgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
NDE1YjRmYzZhMmM4NWZhMmNmZWEyNGZlMWMwNTBlY2FiMWZhZmI4OS4uYmRiMjJjNDMxMDU5YjNk
MDQwNjVjYmFjY2Q5OTZlY2NlOWViMWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDUwLDYg
KzE0NTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTFN0YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYWZjOTZhMGI2MTIwN2E0ZGE3MzYxYzUxMzI0ZGY1Mjc2MzFl
MGM5Mi4uNzgxN2Q3ZmIwNWU3MzU3MzkyODhiY2NiZTg1ZDBlNDgyNTFjODRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3ICszMjcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FM
YXllckV4dHJhcy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZWIzNjhiZDBhMzQzMGEwYmE2NGFmNzc0Yzc3
NTg1MjA3M2YzZTJlNS4uNmZiYTlmMjQwZTE2YzRhYjM1NjE5MTU4ZDUyYzBmMWY2OGViNGQ0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIwMjYsNiArMjAyNiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllclVwZGF0ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYzc5ZmM0ZDc4YzYyMTA1MTg5NjFlZjFjNjQxMzIzN2E1
YWM3NDQwZC4uNWNjYTBhYzI2Zjk4M2YzMWY4YWIyY2M5ZjcxNjg5ZGU1ZTNhZjNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zOTEsNyArMzkxLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlmODVlNDk4NmM1M2ExY2M4ZDYz
YjMzOTRkM2Y3Mjk1ODMyYWYzODcuLjMzYWMzNWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRjMWNhZjc1
YjA3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjA0NzIsOCArMjA0NzIsNiBAQCBfT0JKQ19D
TEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFTU18kX1dl
YkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci1fT0JK
Q19DTEFTU18kX1dlYkdMTGF5ZXIKLV9PQkpDX01FVEFDTEFTU18kX1dlYkdMTGF5ZXIKIF9PQkpD
X0NMQVNTXyRfV2ViTGF5ZXIKIF9PQkpDX01FVEFDTEFTU18kX1dlYkxheWVyCiBfT0JKQ19DTEFT
U18kX1dlYlNjcmlwdE9iamVjdApAQCAtMzA2NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19JVkFSXyRf
V2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2V4aXRXYXJuaW5nCiBfT0JKQ19JVkFS
XyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX3RhcmdldAogX09CSkNfSVZBUl8k
X1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lWQVJfJF9X
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJfJF9XZWJH
TExheWVyLm1fY29udGV4dAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9sYXllck93bmVyCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJfJF9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLnJvb3RPYmplY3QKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLm9yaWdpblJvb3RPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NWEwOTBiNjI5Y2Y0N2MxNzMwM2FmMmQ0
MGY5NzlmYjAxNzAxMzFiLi5kNjk2MTVjYTc4ODY3NjU1ZDAxMTI0NWUxYzFhODE0ZDY3YmRiMGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDM4LDcgKzE0MzgsNiBAQAogCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDlFQ0VCNjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0
NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1MTk2OTQw
MDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0OUVFRDE0
NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2OTQwMDA5
OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk0OUZGQkYzRjExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBE
QTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEEwRkZBQTAxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjM3MSw2ICsyMzcwLDcgQEAKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZD
b2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5
RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3Bl
ZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAyNkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVF
RDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MzU4LDggKzkzNTgsNiBAQAogCQk0OUVFRDE0QjEw
NTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVFRDE0QzEw
NTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdM
TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHTExh
eWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybUFzc29jaWF0
ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMEZGQTlCMUFBRjVF
NkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM4MCw2ICsxMTM3OCw3IEBA
CiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgx
NzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEy
NzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEy
NUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4
QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1ZVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYw
QzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ1ZVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTM5MSw2ICsxMTM5MCw3IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3
MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
RkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5
OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5H
TEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3
MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyREMyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjg2NTgsNiArMjg2NTgsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkg
LyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggKi8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovLAogCQkJCTFBQzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFj
dG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNz
TGF5ZXJVcGRhdGVyLmggKi8sCkBAIC0yODk2OSw4ICsyODk3MSw2IEBACiAJCQkJMkQzRUY0NDcx
OTE3OTE1QzAwMDM0MTg0IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQy
Nzc2MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywK
IAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uLm1tICovLAotCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmgg
Ki8sCi0JCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJ
CQkJMDdGNUNGRjQyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgg
Ki8sCiAJCQkJMDdGNUNGRjIyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tICovLAogCQkJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLywKQEAgLTMzMDIzLDYgKzMzMDIzLDcgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyog
QWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0NCw2ICszNDM0
NSw3IEBACiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3
MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBH
cmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1
MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc1NzYsNyAr
Mzc1NzgsNiBAQAogCQkJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZm
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0
NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIx
MkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEy
MjNmNTY3Yi4uNzJiMmNjZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jh
c2UoKTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJH
UkE4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2Uu
LjVhZTc5YmYwYjllMzkwYjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2Vz
LgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcihib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsg
bV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2Iy
MjNiZGRlOTFjMDc4ZGJmZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlk
Mjg5MWFkNTYxMzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxh
Y2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAg
SFRNTENhbnZhc0VsZW1lbnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkg
Y29uc3QKICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0K
IAotUGxhdGZvcm1MYXllciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSgpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclBpcGUtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJQaXBlLT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2
NmEzODM0ZGY5OTE5OS4uMGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBib29sIGlzUGxhY2Vob2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggYWM4MWQ4YzkzMjQ0NDdjZWI3ZmEzOGUzM2E5NjlhZmMxYTAzODRhMC4uY2UwMGU2
M2E4ZmI3NGZhOGM1ZmRlMzNiOTIzYzlkNWY3MTZjNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDUyLDkg
KzY0NTMsMTEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJl
Y292ZXJhYmx5TG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVz
dG9yZUFsbG93ZWQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lz
UGVuZGluZ1BvbGljeVJlc29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAw
OworICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9u
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVtb3ZlU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKaW5kZXggNjUyNGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0
NTdlNzEzN2Y4NDI2ZGMwMzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
Mzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGlj
c0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdM
Q29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91
cC5nZXQoKTsgfQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggNzFhMzhh
ZjA2YjM1OTEyNjNjNzQ0MmJkYjY4NTBlNmY2MzQ1NTlmOS4uYjVmNWVjZDM4MWNhOTBhMjdkOGQy
YWI1MmQzZWZiMjUyYmVkMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzg2LDcgKzc4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAg
IHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGhhc0FscGhhKERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1
NmE4MzYxNTZjYzBkNWU1YTdkZjFiZmIwYzRiMmIyNjJjNy4uNDkyZTQyNmI2MzA1MmY0NDhmNzU3
OTA3ODMxOWVkMGJhNmYyZTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBA
IHZvaWQgR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwg
ZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIHdpZHRoID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjk1MDlmMThjY2I5
NTk5MjNkZDlmNWQ1ZmIyNTJiZTE4Yjk4OTljLi5lYjYzNTlmZTNmMjM1YzFkMzhiZTYwYmEwNjUw
MGY2NzhjZjEzMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEFuaW1hdGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5
ZXJGYWN0b3J5OworY2xhc3MgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwog
Y2xhc3MgSW1hZ2U7CiBjbGFzcyBNb2RlbDsKIGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTUyMiw2
ICs1MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92
ZSB0aGUgY29udGVudHMgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xp
ZENvbG9yKGNvbnN0IENvbG9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsK
ICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
b01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQg
Y29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTk4ODk4
NmEyZjdmOGRkZjZiMGQ4YzJkMzk0NmMzZmMxM2EzNzZmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgorCisjaWYgVVNFKENBKQorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp+R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0OworCisjaWYgVVNFKENBKQordm9pZCBHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTE2Y2M2OGNmOTU3YTY3
YTUyMWY3MzYyZjJmNzc3NWQ0YzBhNzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2Ns
YXNzIFBsYXRmb3JtQ0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRl
cmZhY2UgZm9yIGF0dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9u
c2libGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRp
Y3VsYXIgY29udGVudHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVy
LgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCk7CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb0Rl
bGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNl
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOwor
I2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclBpcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyUGlwZS5oCmluZGV4IDZlNmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2Fl
MTA5OTUwZTguLjNiZWQxZDBhZTZlMzkwMDM4MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1M
YXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHBy
b3ZpZGUgYSBQbGF0Zm9ybUxheWVyIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZm
ZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhy
ZWFkCisvLyBVc2VkIHRvIHByb3ZpZGUgR3JhcGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0
ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQg
YW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXJQaXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291
cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCBSZWZQdHI8U291cmNlPiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0wOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCmluZGV4IDRl
NjIyMzkzYzJhZGQxZmU4ZDM5ZmZiZjQwNGY1N2QzODkzYmU2ODAuLjY2NzBkMDFiZjM3YWI5MDUw
NmNkMDU2ZjU3MzJjMzFhOGY2ZjhiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNTE5MGEzODY1NDMwMDcyMDA1
MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uYTE4MmM1MjU0ZTgwMmNhNzlhMDRhNjc2YWFkZjFhNTFi
ZDYwOGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCkBAIC0xMjQ2LDYgKzEy
NDcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVu
dHNMYXllclB1cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CiAgICAgfQorICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAg
aWYgKGNvbnRlbnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OwpAQCAtMTI3Nyw2ICsxMjc5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAg
ICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIH0KKyAgICBtX2NvbnRlbnRzRGlz
cGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChD
b250ZW50c0ltYWdlQ2hhbmdlZCk7CiB9CkBAIC0xMzA3LDYgKzEzMTAsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJiBtb2RlbCkKICAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25l
OwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogICAgIH0KKyAgICBtX2NvbnRl
bnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIGlmIChjb250ZW50c0xheWVyQ2hh
bmdlZCkKICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTEzNDMsNiArMTM0Nywz
MSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBu
dWxscHRyOwogCiAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBw
dXJwb3NlIDogQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CisgICAgbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRlbGVnYXRlLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
ZGVsZWdhdGUgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAoZGVsZWdhdGUpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUoZGVsZWdhdGUpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5wcmVwYXJlVG9EZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQogCiAgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7CkBAIC0xODc4LDYgKzE5MDcsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllckxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUodW5zaWduZWQgYmxhbmtQ
aXgKICAgICBjbGllbnQoKS5sb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKGJsYW5rUGl4ZWxDb3Vu
dCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNE
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgJiYgbV9jb250ZW50c0xheWVyID09IGxheWVyOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCit7CisgICAgQVNTRVJUKG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUp
OworICAgIEFTU0VSVChsYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpOworICAgIG1fY29udGVudHNE
aXNwbGF5RGVsZWdhdGUtPmRpc3BsYXkoKmxheWVyKTsKK30KKwogc3RhdGljIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZUZvckN1c3RvbUJhY2tkcm9wQXBwZWFyYW5jZShHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGFwcGVhcmFuY2UpCiB7CiAgICAgcmV0dXJuIGFw
cGVhcmFuY2UgPT0gR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJv
cCA/IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDog
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKQEAgLTI3
OTIsNyArMjgzMyw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBQbGF0Zm9ybSBsYXllciB3YXMg
c2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1
YmxheWVyTGlzdCgpLgotICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCkpOworICAgIGF1dG8gb3JpZW50YXRpb24gPSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID8g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+b3JpZW50YXRpb24oKSA6IGRlZmF1bHRDb250ZW50
c09yaWVudGF0aW9uOworICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCksIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENv
bnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CkBAIC00NDEyLDE5ICs0NDU0LDEzIEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBuZXdMYXll
clR5cGUpCiAgICAgICAgIGNsaWVudCgpLnRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZCh0aGlzLCBp
c1RpbGVkTGF5ZXIpOwogfQogCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6
VG9wRG93bjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllciwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFR1cm4gb2Zm
IGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGNvbnRlbnRzTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAj
ZW5kaWYKLQotICAgIGlmIChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKKyAgICBpZiAob3JpZW50YXRp
b24gPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgewogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbGlwcGVyKAogICAgICAgICAgICAgMS4wZiwgMC4w
ZiwgMC4wZiwgMC4wZiwKICAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaAppbmRleCA5ZDQ0ZjZhYjM4MGM4ODY2NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3Li5mNmIy
Yzk0Y2IzZDZmZmFkMDM1ZWI3NDkyYTI1NTgyMjU5MmEwMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUw
LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBj
b250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllcios
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3Im
KSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAt
MTkzLDYgKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkg
Y29uc3QgZmluYWw7CiAKKyAgICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3Jh
cGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIs
NiArMjE2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNP
cGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBkcmF3c0NvbnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxh
eWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9y
bUNBTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlz
cGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERp
c3BsYXkobGF5ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJT
ZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTMwMCwxMCArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExh
eWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5
cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQot
ICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIu
Z2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5
ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlm
CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
PiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFz
ZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3
ZWQ2M2M4YWIxODg4ZTlkZGE5MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBm
OTYyMDYxMWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQ
bGF5ZXJMYXllcjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2Vu
ZGlmCiAKK25hbWVzcGFjZSBXVEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNl
bmRSaWdodDsKKyNlbmRpZgorfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVy
UG9vbDsKQEAgLTQ4LDYgKzU0LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAog
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxp
c3Q7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNv
Y29hOwpAQCAtMTkwLDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYg
Y29udGVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlw
ZVJlZikgPSAwOwogCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllckNsaWVudC5oCmluZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJh
ZDEzMDYuLjFlNzJjNDU2NmU3YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllckNsaWVudC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVU
aWxlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIw
MTM0Y2Q4NTVlYzVjZDExNDhjMTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2Fm
YWU4NGFjZjdlMDQ5YjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0x
MjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQor
ICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlk
ZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5
MGY1NzcyOTZiMjIzOWJmMjg2ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAx
YTU3ZWRmYjJiOWFiOTUzMDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0K
QEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXll
ckV4dHJhcy5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250
YWluZXJMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAg
LTIxMSw5ICsyMTEsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdl
YlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJu
IExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6
W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcjsKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2
ICsyMzEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5n
VGlsZUxheWVyOgorICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAg
ICAgICBsYXllckNsYXNzID0gW1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAg
UGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25G
cmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFW
UGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3Jt
Q0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtD
QUxheWVyIGNsYXNzXTsKQEAgLTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpjb21tb25Jbml0KCkKICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBs
aWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQ
cm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVT
Y3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAg
ICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAg
ICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRl
IHNoYXJlZF1dOwpAQCAtNzk3LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQogCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAg
c2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3Vy
ZmFjZUhhbmRsZSkKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFj
ZSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5kZXggYTY0OGZjZDJlYzRmMGI5
YjUxZTMwMjM2OWUwMTI0OWI1MmQ5YjRlNC4uOTEzYzBmNGE1MmQwZDFhZTAzOWJkOGUzMjY2ODc4
ZmE1MTJmYWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3Zl
cnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggYTRhZWUzZGZhYjBmNzdhMmZlYzViNWNkZmRjZmI4MmU0MGU0MTFl
Ni4uYWY1ZGFmYjYyMjMyOWU0YWJlMDRmMjQ5YWZkZDRmMjljMjNlNWUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00NjcsMTEgKzQ2Nyw2IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0K
IAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikK
QEAgLTc5OSw2ICs3OTQsMTEgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29uZmlnT2JqOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0
NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0v
LyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRl
bnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1
ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3Jh
cGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0
Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRl
bnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2
aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJ
T1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVy
IHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50
Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5s
aWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9p
bnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zv
cm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5z
Zm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0
LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsK
LSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsK
LX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBh
cyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0g
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpp
bmRleCAyNTQyNjIzMGRmZWRhZDJjNWViOTEwNDI0YTA4YTcyZTM3MTdiMmQ3Li4zMTM4NThiOGY1
N2RhYjhkMTBhNmFiNjI4MTdlODc1NDBlZjM4MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMjksOCArMjksNyBAQAogI2lmIEVOQUJM
RShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCIgLy8gTk9MSU5UCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNpbXBvcnQgIldlYkdM
TGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXIuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIkRpc3BsYXlD
b25maWd1cmF0aW9uTW9uaXRvci5oIgpAQCAtMzksNDYgKzM4LDgzIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0
ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KQotewotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBsYXllcjsKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBp
bml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRl
bnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtsYXll
ciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7Ci19CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxh
eURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVn
YXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUo
aXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZVRvRGVs
ZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAg
ICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRz
U2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BsYXkoUGxhdGZv
cm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZm
ZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAg
fQorCisgICAgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBHcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAg
IH0KKworICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIp
CisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlz
cGxheUJ1ZmZlci5yZXNldCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpID09IG1f
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2Rpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKGRpc3BsYXlCdWZm
ZXItPnN1cmZhY2UoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAg
ICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2Fs
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7Cit9Owog
CiAvLyBHcmFwaGljc0NvbnRleHRHTCB0eXBlIHRoYXQgaXMgdXNlZCB3aGVuIFdlYkdMIGlzIHJ1
biBpbi1wcm9jZXNzIGluIFdlYkNvbnRlbnQgcHJvY2Vzcy4KIGNsYXNzIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBwcml2YXRlIERpc3BsYXlDb25maWd1cmF0aW9uTW9u
aXRvcjo6Q2xpZW50CiAjZW5kaWYKLQogewogcHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYSgpOwotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmlzVmFsaWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KKwogICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMQ29jb2Egb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENB
TGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIC8vIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvcjo6Q2xpZW50IG92ZXJyaWRl
cy4KICAgICB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoKSBmaW5hbDsKICNlbmRpZgotCiAg
ICAgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAKKyAg
ICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogICAgIGZyaWVuZCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNvcmU6
OmNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmKTsKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7
CiB9OwogCiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6V2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRl
cykKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAg
ICAsIG1fd2ViR0xMYXllcihjcmVhdGVXZWJHTExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQor
ICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5
RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhl
bFJhdGlvKSkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25N
b25pdG9yOjpzaW5nbGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwpAQCAtOTUsMTMgKzEzMSw3IEBA
IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKQogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJl
cGFyZUZvckRpc3BsYXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVG
b3JEaXNwbGF5KCk7Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZl
cigpLnN1cmZhY2UuZ2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250
ZW50czpzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXRO
ZWVkc0Rpc3BsYXldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigp
KTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBw
bGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNv
bXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3
YmZmZTAxM2E4ZDZiZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJh
ZGQzOTNhMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNm
ZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1B
R0UpCiAKICNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFn
ZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8
Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXgg
YWNmOTZmZDBkNTQwYWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIx
OTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lt
cG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZk
YTgwZDYwM2M1NDJjLi4zZTFhNGZkMjY3OTE5NTEwOTlhOGIzODAyMmY1ODVmZGEzOWU4ZTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1t
CkBAIC04MSw4ICs4MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRv
IGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXll
cigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigp
ICYmIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAg
ICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93
bmVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OihDR1JlY3QpZGlydHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXIt
Pm93bmVyKCkpIHsKLSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdz
Q29udGVudCgpKSB7CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSB8fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5
KHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNw
bGF5SW5SZWN0OmRpcnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0
Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAg
LTEwMyw2ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJ
blJlY3Q6aW5kaWNhdG9yUmVjdF07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAg
CiAgICAgfQogfQogCkBAIC0xMTMsMTAgKzExNywxNCBAQAogICAgICAgICBXZWJUaHJlYWRMb2Nr
KCk7CiAjZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIFtzdXBlciBkaXNw
bGF5XTsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYm
IGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
TGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIoKSA6IG51bGxwdHI7CisgICAg
aWYgKG93bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVy
LmdldCgpKSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShsYXll
ci5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlzcGxheV07CisgICAgaWYgKG93
bmVyKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVy
LmdldCgpKTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggMzMwMjhhNWU5NGM5
Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uMmY3NGQwZWJhZGI3ZDgyZTkyMGQ0MjhjZDll
MTljZjZkZGUzNjA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBA
IC00NCwxNiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2UsIHB1YmxpYyBDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2Ugb3ZlcnJpZGVzLgog
ICAgIHZvaWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAgICBDb250ZW50TGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJp
dmF0ZToKKyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IG92ZXJy
aWRlcy4KICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAtNjIsMTYgKzY0LDM4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAotY2xh
c3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUg
eworY2xhc3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkgPSBk
ZWZhdWx0OworICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRl
KFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKG5pY29z
aWFMYXllcikpKTsKKyAgICB9CiAKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsgfQogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsOwot
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVy
KQorICAgICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmljb3NpYUxheWVyKSkKKyAgICB7
CisgICAgfQorCisgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Cit9Owor
CitjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVy
UGlwZSB7CitwdWJsaWM6CisgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCisgICAgICAgIDog
bV9zb3VyY2UoYWRvcHRSZWYoKm5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKSkKKyAg
ICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGlwZVNvdXJjZURpc3BsYXlE
ZWxlZ2F0ZTo6Y3JlYXRlKG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpKQorICAgIHsKKyAgICB9
CiAKLSAgICBSZWZQdHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7Cisg
ICAgLy8gSW1hZ2VCdWZmZXJQaXBlIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQ
aXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlLnB0cigp
OyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQorcHJpdmF0ZToKKyAgICBSZWY8Tmljb3NpYUltYWdl
QnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVs
ZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2U6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKQpAQCAtMTM1
LDMwICsxNTksMTAgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
UmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92
ZShidWZmZXIpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXIu
Z2V0KCk7Ci19Ci0KIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCgpCiB7CiB9CiAKLU5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUoKQotewotICAgIG1fc291cmNlID0gYWRvcHRSZWYobmV3IE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2UpOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnNvdXJjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c291cmNlOwotfQotCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBt
X3NvdXJjZS0+cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4
IGJhOWQ1YWY5MGQ3NDg1YTc2NDM1NjkyZGI1NjBhYmJlOWQ4MTUwNWIuLmYyYTc5MjhkNWVlNTJi
NjAzMzY2MWM1OTE3ZTdlMjdiMmMyMjY4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdGV4SW1hZ2UyRFJl
c291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgYWxpZ25tZW50ID0g
NCk7CiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCiAgICAgYm9vbCBpc0dM
RVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8g
RW50cnkgcG9pbnRzIGZvciBXZWJHTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTc2ZTNhYmU1YmIzYWM0MGFmOGYyMGM5ZWU0ZWU4YTI1
NTNiMGE0Ny4uNzUwYTg0YWY2MzgyYzU0MTMwY2YzNmU4NmQ5YmM4Yzc2MDRjZmJjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBA
IC03OSw2ICs4MCwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFjZSB7CisK
K2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZShwbGF0Zm9ybUxheWVyKSk7CisgICAgfQorCisgICAgLy8gR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3BsYXRmb3JtTGF5ZXI7CisgICAgfQorCitwcml2YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJE
aXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBt
X3BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgfQorCisgICAgUGxhdGZv
cm1MYXllciogbV9wbGF0Zm9ybUxheWVyOworfTsKKworfQorCiBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0
ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXVEZNb3ZlKGF0
dHJpYnV0ZXMpKSk7CkBAIC04OCw3ICsxMTUsMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwogCiBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAgIDogR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQorI2lm
IFVTRShOSUNPU0lBKQorICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRM
YXllcigpKSkKKyNlbHNlCisgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1fdGV4bWFwTGF5ZXIuZ2V0KCkpKQor
I2VuZGlmCit7Cit9CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6bGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZSgpCiB7CisgICAgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5w
dHIoKTsKIH0KIAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzKQpAQCAtMTIzLDE1ICsxNjAsNiBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleAogICAgIHJl
dHVybiBjb250ZXh0OwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotI2lmIFVTRShOSUNPU0lBKQotICAg
IHJldHVybiAmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXllcigpOwotI2Vsc2UKLSAgICByZXR1
cm4gbV90ZXhtYXBMYXllci5nZXQoKTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKaW5kZXggYjQwZTc5ODMzZTgxMTBmNWQw
OTdlYWQzYjUzMWYxZTYyZDZkOGQxYi4uMmRiMmU4ZDdkOWNkN2I5Y2FiYjRjOWNhNDE3MjQzZjBl
N2EwYjUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcigpOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSBv
dmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
OworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
Ym9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCkBAIC02MCw2ICs2MCw3IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgUmVmPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2MGM0Yi4uZTk5NDI1NDRiZmU5
MDk0NGMzNTBkMTM5Yzg1M2M5N2ZkNjQwMzBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFRleHR1cmVNYXBwZXJQ
bGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xpZW50KHRoaXMpOwogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlE
ZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQogewogICAgIGlmIChpc1Nob3dp
bmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEzMTdjZmZhYTE4NjEyOTguLjBj
ODliYTNhNTk0OGM0MThjMTI3OWVmYWQ3YTk1YTk1OGU4MGVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
TGF5ZXIuaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudHNU
b0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xv
cihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsK
ICAgICBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9j
b250ZW50c0xheWVyOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE3NDkw
N2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0MjM3ZDhhNGEzOWYuLjA1NDE2YTUwMDE1YjZmYzFjZDU1
MDMxMDkyMTJkMzY1ZWJmNzlkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
Tmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgiCiAjaW5jbHVkZSAiTmljb3Np
YUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgpAQCAtNDk5LDYgKzUwMCwxMiBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNM
YXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
ID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBu
dWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1
cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZmlsdGVyc0NhbkJl
Q29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewogICAg
IGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTViMDI0MzgzZDc1OTU3ODkxYzk1
YjBjN2NmZDc1YjRjZC4uOTdkZWM1OWJmMTc5MThhMmNjODIwZDQ2NWZlMDViMGUzZmUyNzZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93UmVwYWludENv
dW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUlt
YWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggYzM5YzMx
MjRlODU0MmFmOTUxOTcxNzg0YjgwZjIwNGM4MTk1ZmNlOC4uZDMwYjRlNDEwZWZjOGE0YzA0NmQ2
YmY1MmM5ZWYxNzk5NzEwZGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCisjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiRm9udEFudGlhbGlhc2luZ1N0
YXRlU2F2ZXIuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkLmgiCiAjaW1wb3J0ICJMZWdhY3lU
aWxlR3JpZFRpbGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9T
Y3JvbGxWaWV3SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJ
T1MubW0KaW5kZXggYjRkMmZkOWRkNWM1MmVmYjk3YzMxZGQ3ZDA0NWQzOTk5ZmU0YmY0MS4uOWE5
ZTYxOTUxNWVlNzAyY2U3NDIxOTExNWEzOGMzNTA5N2ZiYTk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KQEAgLTQxLDggKzQxLDYgQEAKICNpbXBv
cnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5s
aW5lIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3PiAqU2Nyb2xsVmlldzo6c2Ny
b2xsVmlldygpIGNvbnN0CkBAIC0yMDYsNyArMjA0LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0
Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAjZWxzZQogICAgIExPRyhGcmFtZXMsICIlcCAlQCBhdCB3
ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBOU1N0cmluZ0Zyb21DbGFzcyhbZG9jdW1lbnRW
aWV3KCkgY2xhc3NdKSwgdywgaCk7CiAjZW5kaWYKLSAgICBOU1NpemUgdGVtcFNpemUgPSB7IHN0
YXRpY19jYXN0PENHRmxvYXQ+KG1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KG1heCgw
LCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAorICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9
IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwgdykpLCBzdGF0aWNfY2FzdDxDR0Zs
b2F0PihzdGQ6Om1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAogICAgIFtk
b2N1bWVudFZpZXcoKSBzZXRCb3VuZHNTaXplOnRlbXBTaXplXTsKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiB9CkBAIC0yMjMsNyArMjIxLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0
Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBOU1BvaW50IGZsb2F0UG9pbnQgPSBz
Y3JvbGxQb2ludDsKLSAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygp
IHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2ludC54KSwgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9s
bE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9OyAgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRv
IHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IHN0ZDo6bWF4
KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2ludC54KSwgc3RkOjptYXgo
LVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07IC8vIERvbid0
IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZp
ZXcoKSBzY3JvbGxQb2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQppbmRleCAxYmJhNGUy
YWRjOWY2YTE2ZmJjNjNjMDk2OTNlNWM2NjFmN2RkNTRiLi43NTIwNTIzOWQ2OGNiNWNhYmUyMGUz
ZTg3YjUwYTIzMDYyYWUzMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
Lm1tCkBAIC0zMSw4ICszMSw2IEBACiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5oCmluZGV4IDFmMGMwOWYxZDU0NTMwODc1NTdjMWUyMGIxYThhNTBkZjk5MTBj
YWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3NzI4OTA1NTM0MTIzODdjZjZjYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFw
cGVhcmFuY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Nv
Y29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IDkzODRkMDJkYzcwYzQ5Y2NhMWM2MzVl
NWU4ODZjNDNlZDkzZDljMmIuLmUwZGI4MjdmNDA4NGU3NzcyYzRkMDU0YTlhODM4OGViMjhmOWVm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxp
emVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2Ev
TG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0zNCw4ICszNCw2IEBACiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2NhbGl6ZWREYXRlQ2FjaGUm
IGxvY2FsaXplZERhdGVDYWNoZSgpCkBAIC0xNjYsNyArMTY0LDcgQEAgZmxvYXQgTG9jYWxpemVk
RGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUs
IGNvbnN0IE0KICAgICAgICAgW2NvbXBvbmVudHMgc2V0TW9udGg6KGkgKyAxKV07CiAgICAgICAg
IE5TRGF0ZSAqZGF0ZSA9IFtncmVnb3JpYW4gZGF0ZUZyb21Db21wb25lbnRzOmNvbXBvbmVudHMu
Z2V0KCldOwogICAgICAgICBOU1N0cmluZyAqZm9ybWF0dGVkRGF0ZSA9IFtkYXRlRm9ybWF0dGVy
IHN0cmluZ0Zyb21EYXRlOmRhdGVdOwotICAgICAgICBtYXhpbXVtV2lkdGggPSBtYXgobWF4aW11
bVdpZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKKyAg
ICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjptYXgobWF4aW11bVdpZHRoLCBtZWFzdXJlci5tZWFz
dXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbWF4
aW11bVdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2YjcwYmM5MjcyMzRkNTFkLi42
OTUwYTFlMGU1MzIwMTgxMDdkNWZkZjhhNWE3YmJjNTE3MDU0MDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA4OSw3ICsxMDg5
LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oY29uc3Qg
UmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLmlz
Q2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShyZW5kZXJlcigpKSA9PSBDYW52
YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7
CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkp
Ci0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1
cnBvc2U6OkNhbnZhcyk7CisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSwg
R3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CiAKICAgICAgICAg
bGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmlu
ZGV4IGFlMzE3YjE1MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEwZDkyMzIuLjE1OWU1MDU2Nzcw
NDMzMDFmZDE5ODUwYzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBA
IC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVS
X1dDKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGxheWVy
aW5nIHZpb2xhdGlvbiBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCAxMGE1MzYyOTljZjIzZWI5Zjg2ZjU3MjdlODUy
MzgzY2U4YTA0MDA4Li5iOGFhOWZkNTUxYTg4YTZjM2MwYTYyYTcyOTQwZmEzZDJjNDQxNjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhy
ZWFkKTsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgSU9TdXJmYWNl
KiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgTWFjaFNl
bmRSaWdodCBzZW5kUmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250
ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAg
bV9jb250ZXh0LT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAjaWYgSEFWRShJT1NVUkZBQ0Vf
U0VUX09XTkVSU0hJUF9JREVOVElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCmlu
ZGV4IDIyNGZhMThjODE1OTI2MmZlZjNkZThlZTUwN2E1YjdkN2Q3OWRiOTguLjlkZjgzZjQ2MDdj
Yzk4YzBkOGZiN2VkZjY3ZWQ2ZjdiODk3ODFhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
V2luLmNwcApAQCAtNjUsNiArNjUsMTMgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCisjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1dDKQorUGxh
dGZvcm1MYXllciogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KS0+cGxhdGZvcm1MYXllcigpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oCmluZGV4IDdkOWU4NjdmOThlYjk1MzE3ZjlmNGEzYmU5OTZhZDQ1MWQw
MTA5OWYuLmM2YTc4NGQ2ZDE5M2QwOGFlNmMwOWI2ZmE3ZTg5MzY5NTk5MjI0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0KTsKICAgICB2b2lkIHNldE5l
ZWRzRGlzcGxheSgpOwogCisgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQm
JiBzdXJmYWNlSGFuZGxlKTsKICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04Myw3ICs4NCw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIG1f
YnVmZmVySGFuZGxlLmhhc192YWx1ZSgpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5kaW5n
Rmx1c2hlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0NjZiNjZkNzgz
NmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi45MzdhOTVjNTZjZTE3NTM0YjExZmNmYjVh
NDhkZTFiOTI1ZDUwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMDAs
NiArMTAwLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0
b3JlKFR5cGUgdHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplIHMKIAogdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogeworICAgIG1fYnVmZmVySGFuZGxlID0g
c3RkOjpudWxsb3B0OwogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFja0J1
ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsKQEAg
LTExMiwyNiArMTEzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7CiAgICAg
ZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRlRGlzcGxheUxp
c3Q7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxl
OwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRjaCAo
bV90eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAgaWYg
KGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5k
Q3JlYXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXItPmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+
KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tl
bmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQot
ICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGVu
Y29kZXIgPDwgaGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9idWZmZXJIYW5kbGU7CiAKICNpZiBF
TkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3RkOjpvcHRp
b25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwpAQCAtMjIw
LDYgKzIwMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJv
bnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAK
ICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewpAQCAtMjU3LDYgKzI0MCwxMyBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkK
ICAgICByZXR1cm4gbV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpO
bzsKIH0KIAordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29udGVudHMoV1RGOjpN
YWNoU2VuZFJpZ2h0JiYgY29udGVudHMpCit7CisgICAgbV9idWZmZXJIYW5kbGUgPSBXVEZNb3Zl
KGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7CisgICAg
bV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUo
KSk7CkBAIC0yNjcsNiArMjU3LDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRp
c3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9sYXll
ci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250ZXh0
LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsKKyAg
ICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1fbGF5
ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERp
c3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIE1h
a2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRoYXQg
d2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5LgogICAg
IHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApAQCAtMzI3
LDYgKzMyMywyMCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAg
ICAgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXJzLmFwcGVuZChtX2Zyb250QnVmZmVyLmRpc3BsYXlM
aXN0SW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKSk7CiAjZW5kaWYKIAorICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CisgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQo
KSkgeworICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJh
Y2tpbmdTdG9yZSgpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2Vu
ZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6
OkJpdG1hcDoKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgbV9idWZmZXJIYW5k
bGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
Jj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIzOGU4
OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJpbmcg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVy
OgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIu
aG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVh
dGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3Vz
dG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5
ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZmYzcz
NmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVy
biBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxh
eWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxh
eWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVO
b2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5kaWYK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmIChtX2lz
RGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5v
ZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAgIHJl
dHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElE
OnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMwNjgwZTYw
MTE5YzMuLjBiMWJkMDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1h
a2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
U2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRC
YWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRz
UHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tD
b21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFr
ZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXll
cjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAg
IGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5w
cm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDY1OWVjODg3Y2U5YTNlODUyYTk1YWM1YTc1ODNjOWQ2Y2NjMDgwZjIuLmE3ZDNkYjVjMTFi
OWMxNzQxMmRmODdmZWE1ZGM1ZWI4ODA5ZTE5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTAwMCw2ICs1MDAwLDcgQEAKIAkJN0I0
ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4IDE0
MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLjRhNGUwMzkzYmE1ZDcxNDgy
MzViNjIzYjE1NDQzYmY5NjA5ZTE4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwyNCArMzIsNjkgQEAKICNp
bXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
V2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBu
YW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmlu
YWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CitjbGFzcyBEaXNwbGF5
QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBk
aXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLmdldCgpOyB9Cisg
ICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBp
c09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRz
U2NhbGUpKTsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZVRvRGVsZWdhdGVEaXNw
bGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAg
ICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRz
U2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BsYXkoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
c3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rpc3BsYXlCdWZm
ZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRy
KTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorCisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVy
KGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAo
IWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVy
ICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRSaWdo
dCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBkaXNw
bGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAgICB9CiAKK3ByaXZhdGU6CisgICAgRGlzcGxh
eUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxl
KQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50c1Nj
YWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGJvb2wgbV9pc09w
YXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgTWFjaFNlbmRSaWdo
dCBtX2Rpc3BsYXlCdWZmZXI7Cit9OworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7Citw
dWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCi0g
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
d2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5h
bCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2
b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwzMCArMTAzLDI1IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
IWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAgewor
ICAgIH0KKworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworICAgIFJlZjxEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7
CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJl
bmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV93ZWJHTExheWVyID0gYWRv
cHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRycy5k
ZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRlZiBO
REVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2VuZGlm
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CiAg
ICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxheUJ1
ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRpYVNh
bXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3Jl
OjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIp
LCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24s
IHRydWUpOwpAQCAtMTAwLDI2ICsxNDAsMTYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICB9CiAgICAgaWYgKCFkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVy
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShk
aXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93
ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZlci0+YXNMYXllckNvbnRlbnRzKCld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2Rpc3BsYXlCdWZmZXIgPSBX
VEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIo
bV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9CiAKIH0KIAogUmVmUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0gICAg
YXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjb250ZXh0OworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJp
YnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZh
NDZmMjhhZDlmM2RiM2RmZDdhNjAuLmJiYWI0ZDYzN2UwMDIzN2I0NjlmZDUxMmUzMWRhOTUwZjcw
NzFhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
d2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHAKQEAgLTMzLDMzICszMyw1NCBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3JtTGF5ZXJHQ0dMLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3Mg
UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIFJlZjxQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9
CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5l
ciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxh
dGZvcm1MYXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIg
bV9wbGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGlj
OgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9N
ZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgorICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIu
Z2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAg
OiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRy
aWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1
ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQor
ICAgIHsKKyAgICB9CiAKLSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXll
cjsKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAg
OiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRy
aWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlx
dWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQot
ewotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJlcGFyZUZvckRp
c3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkxYWIxNDE4NzUw
MDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4NmYyMDQ4ZGFmMTM3MzQ1
MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVj
dXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgIEFT
U0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1fY29udGV4dCk7
CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFvd25lcigpIHx8
ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAgICBib29sIHVz
ZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHRo
aXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAhdXNlc0JhY2tpbmdT
dG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAg
ICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQotCiAgICAgaWYgKG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVk
ICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkKICAgICAgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYgQEAgQ0ZUeXBlUmVmIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogeworICAgIGlmICghdmFs
dWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOworfQorCisj
aWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIEFTU0VSVChtX2Fj
Y2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5jcmVhdGVTZW5kUmlnaHQo
KSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgQVNTRVJUKG1fYWNjZWxl
cmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQo
KSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRz
UmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJvcGVydGllcy5jb250ZW50
c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0YmFlMGZhNjhjLi43MWQ0
MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyArMTI3LDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVm
IGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVS
ZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50
cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRl
bnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdm9p
ZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRiMDBlMjUwODI0ZjY4Yzkx
ODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYxODUwYWJmMmE5YTc5MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxM
YXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29sIG1fcHJvdmlkZXNDb250
ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMjdiMGZjMDA1MTg1
ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uNjI5MjMxYjYzOWVhNWMxNmQ2YjU0NzU4MGJm
NmMyMjI2ZDMwMzViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCwxNSArMzQsMTYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBv
cnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxh
eWVyIjsKLQogUmVmPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBhdXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20o
UGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIocGxhdGZvcm1M
YXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7CkBAIC04Miw4ICs4Myw2IEBA
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
KExheWVyVHlwZSBsYXllclR5cGUsIFBsCiAgICAgbV9wbGF0Zm9ybUxheWVyID0gY3VzdG9tTGF5
ZXI7CiAgICAgW2N1c3RvbUxheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKLSAgICBtX3By
b3ZpZGVzQ29udGVudHMgPSBsYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExh
eWVyOwotCiAgICAgcHJvcGVydGllcygpLnBvc2l0aW9uID0gRmxvYXRQb2ludDNEKGN1c3RvbUxh
eWVyLnBvc2l0aW9uLngsIGN1c3RvbUxheWVyLnBvc2l0aW9uLnksIGN1c3RvbUxheWVyLnpQb3Np
dGlvbik7CiAgICAgcHJvcGVydGllcygpLmFuY2hvclBvaW50ID0gRmxvYXRQb2ludDNEKGN1c3Rv
bUxheWVyLmFuY2hvclBvaW50LngsIGN1c3RvbUxheWVyLmFuY2hvclBvaW50LnksIGN1c3RvbUxh
eWVyLmFuY2hvclBvaW50Wik7CiAgICAgcHJvcGVydGllcygpLmJvdW5kcyA9IGN1c3RvbUxheWVy
LmJvdW5kczsKQEAgLTEyNywxMCArMTI2LDYgQEAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXIKICAg
ICAgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwotICAgIH0gZWxzZSBp
ZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyKSB7Ci0gICAg
ICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgLy8gRklYTUU6IGN1cnJlbnRseSBjb3B5aW5nIFdlYkdMIGNvbnRlbnRzIGJyZWFrcyB0aGUg
b3JpZ2luYWwgbGF5ZXIuCiAgICAgICAgIGNvcHlDb250ZW50cyA9IGZhbHNlOwogICAgIH0KIApA
QCAtMTU1LDE4ICsxNTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNl
dENvbnRlbnRzKENGVHlwZVJlZiBjb250ZW50cykKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
Ci0gICAgaWYgKG1fcHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBz
ZXROZWVkc0Rpc3BsYXlJblJlY3Q6cmVjdF07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKIH0KIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKG1f
cHJvdmlkZXNDb250ZW50cykKLSAgICAgICAgW21fcGxhdGZvcm1MYXllciBzZXROZWVkc0Rpc3Bs
YXldOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCmluZGV4IDBmN2ZjMWI1OTBl
ZmEwM2ViNGY2MDZhY2NjMDRjNjFkMGQwZDA1ZjQuLjQ2MDJkOWY4MmNmZGIwOTNhZGMzMzI3ZTk1
OTU3Y2ExZDRhNTA1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcApAQCAtMjkwLDYgKzI5MCwxMiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllciwgQwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCit2
b2lkIEdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVs
ZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIgcGxhdGZv
cm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXll
cigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxh
eWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xh
eWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRl
eCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2
OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXQ1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8
d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXll
cigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ4NjhkMmUyMzY1ZmVlNzUxMDQxZjQ0ZmYzZTY0MGZjMGRiYWRiYWQuLmFiOTNhNTc2MWNi
YzZkOGMxMDhlNmM1NjdhYjI4YmU4ZGFhYmU4M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0yNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVycmlkZSBvZiB0aGUgbmV3IG1l
bWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCiAyMDIxLTEyLTAy
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsYXRp
b24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNo
RGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXgg
ODc2Yzc0NDgwOGY0MzYxZTNjZDUyZjUzZmZkNmY2MDAzYThhMGY4Ny4uZTE5MTFkZjZjMDkzZTM4
YzhkNDJmYTE3OWVmZDVlNzcyZWE2NWRjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbQpAQCAtNDAsNiArNDAsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hIDog
cHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVibGljOgorICAgIHN0
YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisgICAgeworICAgICAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9
CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAgOiBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpCisgICAgeworICAg
IH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5PTElO
VApAQCAtNTgsNyArNzMsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3QgaW50IGV4cGVjdGVk
RGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50
U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNp
emUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02NywxNCArODIsMTQgQEAg
c3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxzZTsK
ICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRy
aWJ1dGVzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBjb250ZXh0LT5yZXNoYXBlKGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdo
dCgpKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQorc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0
aW9uUmVzdWx0IGNoYW5nZUNvbnRleHRDb250ZW50cyhUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENv
Y29hJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQogewogICAgIGNvbnRleHQubWFya0NvbnRleHRD
aGFuZ2VkKCk7CiAgICAgV2ViQ29yZTo6Q29sb3IgZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8g
V2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29yZTo6Q29sb3I6OnllbGxvdyB9OwpAQCAtMTE5
LDE1ICsxMzQsMTUgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0LCBNQVlCRV9N
dWx0aXBsZUdQVXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXQKICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1l
dGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpEZWZhdWx0KTsKLSAgICBh
dXRvIGRlZmF1bHRDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7
CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVz
IH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRy
aWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQ
cmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0g
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2Vy
Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7
Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7
IGF0dHJpYnV0ZXMgfSk7CisgICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5j
ZUNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+Z2V0
U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJmb3Jt
YW5jZUNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVS
RVIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445990</attachid>
            <date>2021-12-05 13:23:39 -0800</date>
            <delta_ts>2021-12-07 03:13:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211206062337.patch</filename>
            <type>text/plain</type>
            <size>120698</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzNDUxZjJlZjJkZDli
MTMyMjViMDM3NWViZjg4NzAzZTk4OTdjYi4uNzc2OGRjYzljMjBjZmZhZDkzNTFhZGYwMzY3MTRh
NDA4ZDQzOTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMi0wNSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5V
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXll
ciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNw
bGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3NpYTo6
V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6
Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6
Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoTmlj
b3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKIDIw
MjEtMTItMDQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0lGQ10gQ29tcHV0ZSBpc0ZpcnN0Qm94L2lzTGFzdEJveCBmb3IgdGV4dCBjb250ZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGRjNGQ3NTdiMmE1ODRkNDQ5ZjA1NGFmMjRkODFiZDZjYzRjNTIyNWIuLmVlYmQ2YmM4
NmRjOWIyYzQwYjc3MGIxYzY0MzhlZTkwNDU0MDljY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMjEtMTItMDUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAg
ICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3Vy
ZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAg
ICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQK
KyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVw
YXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAg
Q2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlh
bGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5zYWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQg
dGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVm
ZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVmZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNw
bGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAgICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcg
dGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8KKyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVu
IGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1t
OgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisKIDIw
MjEtMTItMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiB0byBEZXJpdmVkU291cmNlcy9XZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDQxNWI0ZmM2YTJjODVmYTJjZmVhMjRmZTFjMDUwZWNh
YjFmYWZiODkuLmJkYjIyYzQzMTA1OWIzZDA0MDY1Y2JhY2NkOTk2ZWNjZTllYjFhZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtMTQ1MCw2ICsxNDUwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyRmFjdG9yeS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllclRyYW5zZm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGFmYzk2YTBiNjEy
MDdhNGRhNzM2MWM1MTMyNGRmNTI3NjMxZTBjOTIuLjc4MTdkN2ZiMDVlNzM1NzM5Mjg4YmNjYmU4
NWQwZTQ4MjUxYzg0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGVi
MzY4YmQwYTM0MzBhMGJhNjRhZjc3NGM3NzU4NTIwNzNmM2UyZTUuLjZmYmE5ZjI0MGUxNmM0YWIz
NTYxOTE1OGQ1MmMwZjFmNjhlYjRkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDI2LDYgKzIwMjYs
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM3OWZjNGQ3
OGM2MjEwNTE4OTYxZWYxYzY0MTMyMzdhNWFjNzQ0MGQuLjVjY2EwYWMyNmY5ODNmMzFmOGFiMmNj
OWY3MTY4OWRlNWUzYWYzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzkxLDcgKzM5
MSw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5t
bQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1t
Ci1wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpp
bmRleCA5Zjg1ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNmNzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdk
M2Q1ODNjODZkMjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIw
NDcyLDggKzIwNDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdW
aWV3CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JK
Q19DTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdwotX09CSkNfQ0xBU1NfJF9XZWJHTExheWVyCi1fT0JKQ19NRVRB
Q0xBU1NfJF9XZWJHTExheWVyCiBfT0JKQ19DTEFTU18kX1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xB
U1NfJF9XZWJMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJTY3JpcHRPYmplY3QKQEAgLTMwNjQzLDgg
KzMwNjQxLDYgQEAgX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3
Ll9leGl0V2FybmluZwogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJW
aWV3Ll90YXJnZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5fYWN0aW9uCiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4
dEZpZWxkCi1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2NvbnRleHQKLV9PQkpDX0lWQVJfJF9X
ZWJHTExheWVyLm1fbGF5ZXJPd25lcgogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZh
dGUuaW1wCiBfT0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NTVhMDkwYjYyOWNmNDdjMTczMDNhZjJkNDBmOTc5ZmIwMTcwMTMxYi4uZDY5NjE1Y2E3ODg2NzY1
NWQwMTEyNDVlMWMxYTgxNGQ2N2JkYjBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzOCw3ICsxNDM4LDYgQEAKIAkJNDlF
Q0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNB
NCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaCAqLzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUVFRDE0MTEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQu
aCAqLzsgfTsKLQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZG
QTlFMUFBRjVFN0UwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBOUMxQUFG
NUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVB
MjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQUEwMUFBRjVFQTIwMDYyODAzQiAv
KiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzEsNiArMjM3MCw3IEBACiAJCTdCMTAzMzlGMjU0
OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFB
QyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5H
TEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJF
OTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5
MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQz
REJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MjBCMEEyNzQz
REJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZC
MjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5
MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMx
M0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5
MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2
RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTM1OCw4
ICs5MzU4LDYgQEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRDExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNF
MTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEEwREEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5
MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QTBGRkE5QjFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTEzODAsNiArMTEzNzgsNyBAQAogCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyog
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
b3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzOTEsNiArMTEzOTAsNyBAQAogCQk3QkIz
NEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4
IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVz
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBB
TkdMRVV0aWxpdGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjU4LDYgKzI4NjU4LDggQEAKIAkJ
CQkwRjU4MEIwOTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgKi8sCiAJCQkJ
MEY1ODBCMEEwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4
MEIwQjBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oICovLAorCQkJCTdC
QkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuY3BwICovLAorCQkJCTdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLywKIAkJCQkxQUM2OTU5MjE2MUExRTUzMDAz
NzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5
MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovLAogCQkJCTBGQTI0RDc4MTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oICovLApAQCAtMjg5NjksOCAr
Mjg5NzEsNiBAQAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXll
ckV4dHJhcy5tbSAqLywKIAkJCQlDRDVEMjc3NjFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8q
IFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAqLywKLQkJCQk0OUZGQkYzRDExQzkzRUUz
MDA2QTcxMTggLyogV2ViR0xMYXllci5oICovLAotCQkJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLm1tICovLAogCQkJCTA3RjVDRkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBX
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICovLAogCQkJCTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVG
NSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAqLywKIAkJCQk3QjE2MTkxMDI3MTk4ODBF
MDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gKi8sCkBAIC0z
MzAyMyw2ICszMzAyMyw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QjU4MkREODI3
MTZGNTVCMDA0QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgw
QTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NE
MEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzQzNDQsNiArMzQzNDUsNyBAQAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUx
RDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENE
MzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4
MEIwRTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAw
MzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEy
NEQ3QTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTM3NTc2LDcgKzM3NTc4LDYgQEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1
MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBF
NTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExvc2VDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUgLyogV2Vi
R0xNdWx0aURyYXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0
NyAvKiBXZWJHTE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI3OWY2YTIw
OGQzY2I1ODFmOWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2IuLjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRl
NzNhODAyZGUyOGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAi
RGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpA
QCAtODMsNiArODQsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCiAg
ICAgbV9jYW52YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiBQaXhl
bEZvcm1hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFBpeGVsRm9ybWF0OjpCR1JBODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1
Njg0NTIwNWQyYTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJmMGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdm
YjFiZWM5NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyB1c2Vk
IGZvciBjb21wb3NpdGluZyBwdXJwb3Nlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXlXaXRoUGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7
CiAKICAgICBib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7
IHJldHVybiBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KICAgICB2b2lk
IHNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlciA9IGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkxYzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5
Y2U0YWJhNzNmMzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52YXNFbGVtZW50KiBQbGFjZWhvbGRlclJl
bmRlcmluZ0NvbnRleHQ6OmNhbnZhcygpIGNvbnN0CiAgICAgcmV0dXJuICZkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oYmFzZSk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6Omxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyUGlw
ZSkKLSAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5wbGF0Zm9ybUxheWVyKCk7Cisg
ICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSgpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDMz
ZmE4ZjJhZGM3OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRmOTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1
Mzk0ZGQzMTE0YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKIAogICAgIGJvb2wg
aXNBY2NlbGVyYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7
IH0KICAgICBib29sIGlzR1BVQmFzZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VC
dWZmZXJQaXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGFjODFkOGM5MzI0NDQ3Y2ViN2ZhMzhl
MzNhOTY5YWZjMWEwMzg0YTAuLmNlMDBlNjNhOGZiNzRmYThjNWZkZTMzYjkyM2M5ZDVmNzE2YzQy
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZp
ZGVvRWxlbWVudC5oIgpAQCAtNjQ1Miw5ICs2NDUzLDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJseUxvc3QoKSBjb25zdAogICAgIHJldHVy
biBtX2NvbnRleHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxvd2VkOwogfQogCi1QbGF0Zm9ybUxheWVy
KiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0
cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewotICAgIHJldHVybiAo
IWlzQ29udGV4dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKSA/IG1fY29u
dGV4dC0+cGxhdGZvcm1MYXllcigpIDogMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1f
aXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG1fY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNo
YXJlZE9iamVjdCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUw
ZTJhYjgxNjEzOWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdmODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIy
NGMzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM4Niw3ICszODYsNyBAQCBwdWJsaWM6CiAKICAgICBH
cmFwaGljc0NvbnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHQuZ2V0KCk7IH0KICAgICBXZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDcxYTM4YWYwNmIzNTkxMjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5
ZjkuLmI1ZjVlY2QzODFjYTkwYTI3ZDhkMmFiNTJkM2VmYjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtMjgsMTIgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFllcwogICAgIH07CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSAwOwog
CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBoYXNBbHBoYShEYXRhRm9ybWF0IGZvcm1h
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCmluZGV4IGM3NWRhNTZhODM2MTU2Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYy
YzcuLjQ5MmU0MjZiNjMwNTJmNDQ4Zjc1NzkwNzgzMTllZDBiYTZmMmU2ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtNjEyLDYgKzYxMywxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1h
dGlvbnMoKQogewogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENv
bnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OmdldERlYnVn
Qm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3aWR0aCkgY29uc3QKIHsKICAgICB3aWR0
aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5ZjVkNWZiMjUyYmUxOGI5ODk5Yy4uZWI2
MzU5ZmUzZjIzNWMxZDM4YmU2MGJhMDY1MDBmNjc4Y2YxMzBiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtNTgsNiArNTgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmltYXRpb247CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIEltYWdlOwogY2xhc3MgTW9kZWw7CiBjbGFz
cyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcgQEAgcHVibGljOgogICAgIC8vIFBhc3Mg
YW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRlbnRzIGxheWVyLgogICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYm
LCBDb250ZW50c0xheWVyUHVycG9zZSk7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIHsgfQogICAg
IHZpcnR1YWwgUGxhdGZvcm1MYXllcklEIGNvbnRlbnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTk5ODg5ODZhMmY3ZjhkZGY2YjBkOGMyZDM5NDZjM2ZjMTNhMzc2
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCIKKworI2lmIFVTRShDQSkKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0EuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZTo6fkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gZGVmYXVsdDsK
KworI2lmIFVTRShDQSkKK3ZvaWQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OjpwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikKK3sKK30KKworR3Jh
cGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworfQorI2Vu
ZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmUxNmNjNjhjZjk1N2E2N2E1MjFmNzM2MmYyZjc3NzVkNGMwYTc1MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYg
IVVTRShDQSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKwor
Ly8gUGxhdGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZvciBhdHRhY2hpbmcgY29udGVudHMgdG8g
R3JhcGhpY3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBjb21wb3NpdG9yIHJl
c291cmNlcyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNvbnRlbnRzCisvLyBpbiB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOworCisjaWYgVVNFKENBKQorICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJik7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJikgPSAwOworICAgIHZp
cnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAppbmRleCA2ZTZkNTcz
MjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4Li4zYmVkMWQwYWU2ZTM5MDAzODE2YWRj
NzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFn
ZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEgUGxhdGZvcm1MYXllciBmb3IgYW4gZXh0
ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQg
YW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8gVXNlZCB0byBwcm92aWRlIEdyYXBoaWNz
TGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJbWFnZUJ1ZmZlcjsgZS5n
LiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdvcmtlciB0aHJlYWQKIGNs
YXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlQnVmZmVyUGlwZT4g
ewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdl
QnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVmUHRyPFNvdXJjZT4gc291
cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9MDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoQ2FjaGUuaAppbmRleCA0ZTYyMjM5M2MyYWRkMWZlOGQzOWZmYmY0MDRmNTdkMzg5
M2JlNjgwLi42NjcwZDAxYmYzN2FiOTA1MDZjZDA1NmY1NzMyYzMxYThmNmY4YjUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+
CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbW1vbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CmluZGV4IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDViNzBmNTVkMDdiNTdiNDcuLmExODJjNTI1
NGU4MDJjYTc5YTA0YTY3NmFhZGYxYTUxYmQ2MDhlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNw
bGF5TGlzdC5oIgpAQCAtMTI0Niw2ICsxMjQ3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgbV9jb250
ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOwogICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogICAgIH0KKyAgICBtX2NvbnRlbnRzRGlzcGxheURl
bGVnYXRlID0gbnVsbHB0cjsKIAogICAgIGlmIChjb250ZW50c0xheWVyQ2hhbmdlZCkKICAgICAg
ICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTEyNzcsNiArMTI3OSw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICBp
ZiAobV9jb250ZW50c0xheWVyKQogICAgICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsK
ICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CiAKICAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNJbWFnZUNoYW5nZWQpOwogfQpAQCAtMTMw
Nyw2ICsxMzEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Nb2RlbChS
ZWZQdHI8TW9kZWw+JiYgbW9kZWwpCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBD
b250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKICAgICAgICAgbV9jb250ZW50c0xheWVyID0gbnVs
bHB0cjsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CiAK
ICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCiAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFu
Z2VkKCk7CkBAIC0xMzQzLDYgKzEzNDcsMzEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKIAogICAgIG1fY29udGVudHNMYXllclB1
cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVycG9zZSA6IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpO
b25lOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG5vdGVT
dWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRz
UGxhdGZvcm1MYXllckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4mJiBkZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAg
ICBpZiAobV9jb250ZW50c0xheWVyICYmIGRlbGVnYXRlID09IG1fY29udGVudHNEaXNwbGF5RGVs
ZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAg
ICAgIG1fY29udGVudHNMYXllci0+c2V0T3duZXIobnVsbHB0cik7CisgICAgbV9jb250ZW50c0xh
eWVyID0gbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsK
KyAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7
CisgICAgaWYgKGRlbGVnYXRlKSB7CisgICAgICAgIG1fY29udGVudHNMYXllciA9IGNyZWF0ZVBs
YXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllciwgdGhpcyk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBXVEZNb3Zl
KGRlbGVnYXRlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7Cisg
ICAgICAgIC8vIEN1cnJlbnRseSBkZWxlZ2F0ZWQgZGlzcGxheSBpcyBvbmx5IHVzZWZ1bCB3aGVu
IGRlbGVnYXRlZSBjYWxscyBzZXRDb250ZW50cywgc28gc2V0IHRoZQorICAgICAgICAvLyBiYWNr
aW5nIHN0b3JlIHNldHRpbmdzIGFjY29yZGluZ2x5LgorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKHRydWUpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldEFjY2VsZXJhdGVzRHJhd2luZyh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS0+cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KCptX2NvbnRlbnRzTGF5ZXIpOworICAg
IH0KIAogICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOwpAQCAtMTg3OCw2ICsxOTA3LDE4
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMb2dGaWxsZWRWaXNpYmxl
RnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAgY2xpZW50KCkubG9nRmlsbGVkVmlzaWJs
ZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQogCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6
cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBj
b25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlICYmIG1fY29udGVu
dHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FM
YXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVCht
X2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBBU1NFUlQobGF5ZXIgPT0gbV9jb250ZW50
c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5kaXNwbGF5KCpsYXllcik7
Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBsYXllclR5cGVGb3JDdXN0
b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBhcHBl
YXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09IEdyYXBoaWNzTGF5ZXI6OkN1c3Rv
bUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxp
Z2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5
c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4MzMsOCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxs
IGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAgICBzZXR1cENvbnRlbnRz
TGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBhdXRvIG9yaWVudGF0aW9uID0gbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPm9yaWVu
dGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKKyAgICBzZXR1cENvbnRlbnRz
TGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAobV9j
b250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKQogICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwpAQCAtNDQxMiwxOSArNDQ1
NCwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hhbmdlTGF5ZXJUeXBlVG8oUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQogICAgICAgICBjbGllbnQoKS50aWxlZEJh
Y2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExheWVyKTsKIH0KIAotR3JhcGhpY3NMYXll
cjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDQTo6ZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKQor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIq
IGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBpbm5l
ciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb250ZW50c0xheWVyLT5z
ZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0KLSAgICBpZiAoZGVmYXVsdENvbnRlbnRz
T3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRv
bVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmxpcHBl
cigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCiAgICAgICAgICAgICAwLjBm
LCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOWQ0NGY2YWIzODBjODg2NjYzNGYz
YmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uZjZiMmM5NGNiM2Q2ZmZhZDAzNWViNzQ5MmEyNTU4MjI1OTJh
MDBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9QbGF0
Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVy
UHVycG9zZSkgb3ZlcnJpZGU7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE1PREVMX0VM
RU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRy
PE1vZGVsPiYmKSBvdmVycmlkZTsKQEAgLTE5Myw2ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gYWNjZWxlcmF0
ZWRBbmltYXRpb25zRm9yVGVzdGluZygpIGNvbnN0IGZpbmFsOwogCisgICAgY29uc3RleHByIHN0
YXRpYyBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3Jp
ZW50YXRpb24gPSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247CisK
IHByaXZhdGU6CiAgICAgYm9vbCBpc0dyYXBoaWNzTGF5ZXJDQSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIApAQCAtMjEyLDYgKzIxNiw4IEBAIHByaXZhdGU6CiAKICAgICBib29s
IHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Y29udGVudHNPcGFxdWUoKTsgfQogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHJhd3NDb250ZW50KCk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxh
eWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNB
TGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgb3Zl
cnJpZGUgeyByZXR1cm4gbGF5ZXJEaWREaXNwbGF5KGxheWVyKTsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxl
RmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDAsMTAgKzMwNiw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIGNvbnN0
OwogICAgIHZvaWQgY2hhbmdlTGF5ZXJUeXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUp
OwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50
c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihQbGF0
Zm9ybUNBTGF5ZXIqKTsKKyAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5
ZXIqLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gPSBkZWZhdWx0Q29udGVudHNP
cmllbnRhdGlvbik7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9CiAKICAgICB2b2lkIHVwZGF0ZUNsaXBw
aW5nU3RyYXRlZ3koUGxhdGZvcm1DQUxheWVyJiwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHNo
YXBlTWFza0xheWVyLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CkBAIC02NDQsNiArNjQ3LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBSZWZQdHI8TW9kZWw+
IG1fY29udGVudHNNb2RlbDsKICNlbmRpZgorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAKICAgICBWZWN0
b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb25zOwogICAgIFZlY3RvcjxMYXll
clByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRyYW5zZm9ybUFuaW1hdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ci5oCmluZGV4IDVkZjFhM2I2MWFiNWQ5N2VkNjNjOGFiMTg4OGU5ZGRhOTJkMTU4MzQuLjhhMjFh
MWQ1Y2Y0MThiYzBiODNhMmM5YWMwMjYwZjk2MjA2MTFhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCkBAIC0zOSw2
ICszOSwxMiBAQCBPQkpDX0NMQVNTIEFWUGxheWVyTGF5ZXI7CiB0eXBlZGVmIHN0cnVjdCBDR0Nv
bnRleHQgKkNHQ29udGV4dFJlZjsKICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKKyNpZiBIQVZF
KElPU1VSRkFDRSkKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7CisjZW5kaWYKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBMYXllclBvb2w7CkBAIC00OCw2ICs1NCwxMCBAQCBjbGFzcyBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQ7CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+PiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OwogCisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFz
cyBJT1N1cmZhY2U7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1DQUxh
eWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYXRmb3JtQ0FMYXllciwgV1RGOjpE
ZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGZyaWVu
ZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTsKQEAgLTE5MCw2ICsyMDAsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpID0gMDsKIAorI2lmIEhBVkUoSU9TVVJGQUNF
KQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2Um
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRS
aWdodCYpID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChj
b25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2luZ1N0b3Jl
QXR0YWNoZWQoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAppbmRleCA2Nzc4ZGU3MTlj
NTBlMWE0NWZjODI0NmQ3M2E5MDhhYmZiYWQxMzA2Li4xZTcyYzQ1NjZlN2FmZWFiNjRkNjZkYTkw
NmMwZjE5ZmZkODM5YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaApAQCAtNTEsNiArNTEsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRz
T3BhcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRl
bGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07
CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5oCmluZGV4IDliMWIwMTEyMDEzNGNkODU1ZWM1Y2QxMTQ4YzExMWVmZjdlMDZmZDMu
LjgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3ZTA0OWIyYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTIwLDYgKzEyMCwxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlk
ZTsKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RG
OjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0Q29udGVu
dHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tCmluZGV4IDM0ZTI1OTBmNTc3Mjk2YjIyMzliZjI4NjgyZmM3NTZhYzY2OTAz
YWEuLjJhNDVkZGM0NThkZTA2N2JhZGIwMWE1N2VkZmIyYjlhYjk1MzAzMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0ICJUaWxl
ZEJhY2tpbmcuaCIKICNpbXBvcnQgIldlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIu
aCIKICNpbXBvcnQgIldlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CkBAIC01
NCw2ICs1Myw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgorI2ltcG9ydCA8d3RmL01h
Y2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogCkBAIC0yMTEsOSArMjExLDYgQEAgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5
ZXIoUGxhdGYKICAgICAgICAgJiYgWyhXZWJWaWRlb0NvbnRhaW5lckxheWVyKilsYXllciBwbGF5
ZXJMYXllcl0pCiAgICAgICAgIHJldHVybiBMYXllclR5cGVBVlBsYXllckxheWVyOwogCi0gICAg
aWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHTExheWVyIGNsYXNzXV0pCi0gICAgICAgIHJl
dHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICByZXR1cm4gTGF5ZXJU
eXBlQ3VzdG9tOwogfQogCkBAIC0yMzQsNiArMjMxLDcgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBj
YXNlIExheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKKyAgICBjYXNlIExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtXZWJTaW1wbGVMYXll
ciBjbGFzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlVHJhbnNmb3JtTGF5
ZXI6CkBAIC0yNjUsMTAgKzI2Myw2IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNB
TGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAg
IGlmIChQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3JrQXZhaWxhYmxlKCkpCiAgICAgICAgICAg
ICBsYXllckNsYXNzID0gUEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgIC8v
IFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYXMgd3JhcHBlZCBhcm91bmQgV2Vi
R0xMYXllcnMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsK
ICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIExheWVyVHlwZU1vZGVsTGF5ZXI6
CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbQ0FMYXllciBjbGFzc107CkBAIC0zMTAsNyArMzA0LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCgpCiAgICAgfQogICAgIAog
ICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgQ0FMYXllcgot
ICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJU
eXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllciB8fCBtX2xheWVyVHlwZSA9PSBM
YXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVD
dXN0b20pCisgICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9sYXllciB3ZWJfZGlzYWJsZUFsbEFj
dGlvbnNdOwogICAgIGVsc2UKICAgICAgICAgW21fbGF5ZXIgc2V0RGVsZWdhdGU6W1dlYkFjdGlv
bkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRdXTsKQEAgLTc5Nyw2ICs3OTEsMTkgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAorI2lmIEhBVkUoSU9TVVJGQUNFKQor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9T
dXJmYWNlJiBzdXJmYWNlKQoreworICAgIHNldENvbnRlbnRzKHN1cmZhY2UuYXNMYXllckNvbnRl
bnRzKCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KHN1cmZhY2VIYW5kbGUu
Y29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgc2V0Q29udGVudHMoKnN1cmZhY2UpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5oCmluZGV4IGE2NDhmY2QyZWM0ZjBiOWI1MWUzMDIzNjllMDEyNDliNTJkOWI0ZTQuLjkxM2Mw
ZjRhNTJkMGQxYWUwMzliZDhlMzI2Njg3OGZhNTEyZmFmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBH
cmFwaGljc0NvbnRleHRHTEFOR0xFIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJy
aWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IGE0YWVlM2RmYWIwZjc3
YTJmZWM1YjVjZGZkY2ZiODJlNDBlNDExZTYuLmFmNWRhZmI2MjIzMjllNGFiZTA0ZjI0OWFmZGQ0
ZjI5YzIzZTVlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDY3LDEx
ICs0NjcsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmlzVmFsaWQoKSBjb25zdAog
ICAgIHJldHVybiBtX3RleHR1cmU7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHRPYmopCkBAIC03OTksNiArNzk0LDExIEBAIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1Db25m
aWcoKSBjb25zdAogICAgIHJldHVybiBtX2NvbmZpZ09iajsKIH0KIAorUmVmUHRyPEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2MzllYTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLQotQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXllciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1
cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0K
LS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBj
b250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZTsKLQotQGVuZAotCi1BTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQzZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJH
TExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNz
TGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlv
biBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2
aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1ZQotewotICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNE
SWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAg
IHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVsUmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNlIGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBu
ZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBJ
T1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4gWS11cC4gVGhpcyBtZWFucyB0aGF0IGFu
eSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBzaW5jZQotLy8gdGhpcyBpcyBhIGNvbnRl
bnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3QgYWRkIGEgWSBzY2FsZSBvZgotLy8gLTEg
YW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBlbnMgZnJvbSB0aGUgdG9wLgotCi0tICh2
b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEsIDEpXTsKLX0KLQotLSAodm9pZClzZXRB
bmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1cGVyIHNldEFuY2hvclBvaW50OkNHUG9p
bnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0gKHZvaWQpZGlzcGxheQotewotICAgIC8v
IFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNvbnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0
aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsK
LSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxheWVyLT5vd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBl
bmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMjU0MjYyMzBkZmVkYWQyYzVlYjkxMDQyNGEw
OGE3MmUzNzE3YjJkNy4uMzEzODU4YjhmNTdkYWI4ZDEwYTZhYjYyODE3ZTg3NTQwZWYzODA4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAg
LTI5LDggKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTENvY29hLmgiIC8vIE5PTElOVAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xN
YW5hZ2VyLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAKICNpZiBQTEFURk9S
TShNQUMpCiAjaW1wb3J0ICJEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3IuaCIKQEAgLTM5LDQ2
ICszOCw4MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIHsKIAotc3RhdGljIFJl
dGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExheWVyKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4g
bGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbGF5ZXIgPSBhZG9w
dE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJpYnV0
ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cmlidXRlcy5hbHBoYV0pOwot
I2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5k
aWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIGxheWVyOwotfQor
Y2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAg
fQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRl
cy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxh
eWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNPcGFxdWUpOwor
ICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVu
dHMoKm1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNl
dENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKworICAgIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIo
SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5QnVm
ZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIucmVzZXQoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3Bs
YXlCdWZmZXItPnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU3VyZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgICAgICA6
IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50c1NjYWxlKGNvbnRlbnRz
U2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBj
b25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0
IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBXZWJDb250ZW50IHByb2Nl
c3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1Ymxp
YyBHcmFwaGljc0NvbnRleHRHTENvY29hCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgcHJpdmF0
ZSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudAogI2VuZGlmCi0KIHsKIHB1Ymxp
YzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKTsKLSAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkg
JiYgbV93ZWJHTExheWVyOyB9CisKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTENvY29hIG92ZXJy
aWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQor
ICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7
CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBEaXNwbGF5Q29uZmlndXJhdGlv
bk1vbml0b3I6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25maWd1
cmVkKCkgZmluYWw7CiAjZW5kaWYKLQogICAgIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENv
Y29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xM
YXllcj4gbV93ZWJHTExheWVyOwogCisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdh
dGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CisgICAgZnJpZW5kIGNsYXNz
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogfTsKIAogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTENvY29h
KFdURk1vdmUoYXR0cmlidXRlcykpCi0gICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXll
cihjb250ZXh0QXR0cmlidXRlcygpKSkKKyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJpYnV0ZXMuYWxw
aGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvcjo6c2luZ2xldG9uKCkuYWRkQ2xpZW50KCp0
aGlzKTsKQEAgLTk1LDEzICsxMzEsNyBAQCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6fldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKCkKIHZvaWQgV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8gc3VyZmFjZSA9
IG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAgIGlmICghc3Vy
ZmFjZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
ICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCld
OwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNw
bGF5QnVmZmVyKGRpc3BsYXlCdWZmZXIoKSk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21w
b25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIu
bW0KaW5kZXggZWIwNGUyMDY1NmY1YmJhN2JmZmUwMTNhOGQ2YmQ5ZDE1NGU2MGM0OS4uMzM5YzZm
ZjlkMjQyNWJiYjcwZmZhZWM0YTI3MjIyYWRkMzkzYTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQpAQCAtMjksNiAr
MjksOSBAQAogI2lmIFVTRShDT1JFX0lNQUdFKQogCiAjaW1wb3J0ICJGRUNvbXBvbmVudFRyYW5z
ZmVyLmgiCisjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CisjaW1wb3J0IDxDb3JlSW1h
Z2UvQ0lGaWx0ZXIuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9Db3JlSW1hZ2UuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IGFjZjk2ZmQwZDU0MGFiODZlNzcwZDQ2MTNjMTkwYTIy
ODNiNzA1ZjAuLjMyNmYwNDMyYjQ4NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1t
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1w
b3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0
ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNjNTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5
YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEsOCArODEsMTEgQEAKIC0gKHZvaWQpc2V0
TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlm
IChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOworICAg
IGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgJiYgIWxheWVy
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkK
KyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOwogfQogCiAtICh2
b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0KWRpcnR5UmVjdApAQCAtOTQsNyArOTcs
NyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxh
eWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigpKSB7Ci0gICAgICAgIGlmIChsYXllck93
bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkgeworICAgICAgICBpZiAobGF5ZXJP
d25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZv
cm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9ybUxheWVyLmdldCgpKSkgewogICAgICAg
ICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpkaXJ0eVJlY3RdOwogCiAgICAgICAg
ICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKHBs
YXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiArMTA2LDcgQEAKICAgICAgICAgICAgICAg
ICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmluZGljYXRvclJlY3RdOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0KIH0KIApAQCAtMTEzLDEwICsxMTcsMTQg
QEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2VuZGlmCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQq
KXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7Cisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciA9IGxheWVyID8gbGF5ZXIt
Pm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25lciAmJiBvd25lci0+cGxhdGZvcm1DQUxh
eWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkpCisgICAgICAgIG93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgW3N1
cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29u
dGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBp
cGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEzOGYwM2I5MzRkYzExZTI5ZGUzNGQuLjJm
NzRkMGViYWRiN2Q4MmU5MjBkNDI4Y2Q5ZTE5Y2Y2ZGRlMzYwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYgKzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNv
c2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlw
ZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpOwogICAgIHZpcnR1
YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKIAorICAgIC8vIEltYWdlQnVmZmVy
UGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lkIGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZm
ZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9u
aWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6CisgICAgLy8gQ29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVl
ZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q29udGVudExheWVyPiBtX25pY29zaWFMYXll
cjsKQEAgLTYyLDE2ICs2NCwzOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
bV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwg
OiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2NsYXNzIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdh
dGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsK
IHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCk7Ci0gICAgdmlydHVhbCB+Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKKyAgICBzdGF0aWMgUmVmPFBpcGVTb3Vy
Y2VEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWZQdHI8Q29udGVudExheWVyPiYmIG5pY29zaWFM
YXllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBpcGVTb3VyY2VEaXNw
bGF5RGVsZWdhdGUoV1RGTW92ZShuaWNvc2lhTGF5ZXIpKSk7CisgICAgfQogCisgICAgLy8gR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9uaWNvc2lhTGF5
ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNl
PiBzb3VyY2UoKSBjb25zdCBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWw7CisgICAgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8Q29u
dGVudExheWVyPiYmIG5pY29zaWFMYXllcikKKyAgICAgICAgOiBtX25pY29zaWFMYXllcihXVEZN
b3ZlKG5pY29zaWFMYXllcikpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxDb250ZW50TGF5
ZXI+IG1fbmljb3NpYUxheWVyOworfTsKKworY2xhc3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZSBm
aW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgeworcHVibGljOgorICAgIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUoKQorICAgICAgICA6IG1fc291cmNlKGFkb3B0UmVmKCpuZXcgTmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZSkpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtX3NvdXJjZS0+cGxhdGZv
cm1MYXllcigpKSkKKyAgICB7CisgICAgfQogCi0gICAgUmVmUHRyPE5pY29zaWFJbWFnZUJ1ZmZl
clBpcGVTb3VyY2U+IG1fc291cmNlOworICAgIC8vIEltYWdlQnVmZmVyUGlwZSBvdmVycmlkZXMu
CisgICAgUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBzb3VyY2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZS5wdHIoKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5h
bCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KK3ByaXZh
dGU6CisgICAgUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+IG1fc291cmNlOworICAg
IFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU7CiB9OwogCiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlKCkKQEAgLTEzNSwzMCArMTU5LDEwIEBAIHZvaWQgTmljb3NpYUltYWdl
QnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgbV9pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKIH0KIAotUGxhdGZvcm1MYXllciog
Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOwotfQotCiB2b2lkIE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogewogfQogCi1OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKLXsKLSAgICBtX3NvdXJjZSA9
IGFkb3B0UmVmKG5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTsKLX0KLQotUmVmUHRy
PEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2Uo
KSBjb25zdAotewotICAgIHJldHVybiBtX3NvdXJjZTsKLX0KLQotUGxhdGZvcm1MYXllciogTmlj
b3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1f
c291cmNlKQotICAgICAgICByZXR1cm4gbV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBiYTlkNWFmOTBkNzQ4NWE3NjQzNTY5MmRiNTYwYWJi
ZTlkODE1MDViLi5mMmE3OTI4ZDVlZTUyYjYwMzM2NjFjNTkxN2U3ZTI3YjJjMjI2ODg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpOwogCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0wg
b3ZlcnJpZGVzLgogICAgIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0IGZpbmFsOwogICAg
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEVudHJ5IHBvaW50cyBmb3IgV2ViR0wuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDk3NmUzYWJl
NWJiM2FjNDBhZjhmMjBjOWVlNGVlOGEyNTUzYjBhNDcuLjc1MGE4NGFmNjM4MmM1NDEzMGNmMzZl
ODZkOWJjOGM3NjA0Y2ZiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJHTENvbnRleHQu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJQaXhl
bEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNzksNiArODAsMzIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVn
YXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBj
cmVhdGUoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUocGxhdGZvcm1MYXll
cikpOworICAgIH0KKworICAgIC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpCisg
ICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXIqIG1fcGxhdGZvcm1MYXllcjsKK307CisK
K30KKwogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcj4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYg
YXR0cmlidXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwpAQCAtODgsNyArMTE1LDE3IEBA
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcigpID0gZGVmYXVsdDsKIAogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Uo
V1RGTW92ZShhdHRyaWJ1dGVzKSkKKyNpZiBVU0UoTklDT1NJQSkKKyAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
Jm1fbmljb3NpYUxheWVyLT5jb250ZW50TGF5ZXIoKSkpCisjZWxzZQorICAgICwgbV9sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0
ZShtX3RleG1hcExheWVyLmdldCgpKSkKKyNlbmRpZgoreworfQorCitSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogeworICAgIHJldHVybiBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7CiB9CiAKIFJlZlB0cjxHcmFwaGljc0NvbnRl
eHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKQEAgLTEyMywxNSArMTYwLDYgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
LXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4gJm1fbmljb3NpYUxheWVyLT5jb250ZW50
TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5o
CmluZGV4IGI0MGU3OTgzM2U4MTEwZjVkMDk3ZWFkM2I1MzFmMWU2MmQ2ZDhkMWIuLjJkYjJlOGQ3
ZDljZDdiOWNhYmI0YzljYTQxNzI0M2YwZTdhMGI1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAogICAgIC8vIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQ
bGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRp
ZgpAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFj
Y2NlMTNjNjBjNGIuLmU5OTQyNTQ0YmZlOTA5NDRjMzUwZDEzOWM4NTNjOTdmZDY0MDMwYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1
cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxl
Z2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwog
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wg
c2hvdykKIHsKICAgICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSA9PSBzaG93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBhMTAzNGRhNGE4YjRkMjM0YTNm
NDFkMWJhMzE3Y2ZmYWExODYxMjk4Li4wYzg5YmEzYTU5NDhjNDE4YzEyNzllZmFkN2E5NWE5NThl
ODBlYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCkBAIC03OCw2ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xh
eWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5
ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCBhNzQ5MDdjZTFjYjcwMWI3ODcwZDA4YmJjY2UwNDIzN2Q4YTRh
MzlmLi4wNTQxNmE1MDAxNWI2ZmMxY2Q1NTAzMTA5MjEyZDM2NWViZjc5ZGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbC5oIgogI2luY2x1ZGUgIk5pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlcklt
cGwuaCIKQEAgLTQ5OSw2ICs1MDAsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3IKICNlbmRp
ZgogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5
RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBk
aXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxl
Z2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDY4
OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3NWI0Y2QuLjk3ZGVjNTliZjE3OTE4YTJj
YzgyMGQ0NjVmZTA1YjBlM2ZlMjc2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wg
c2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFnZSopIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVn
YXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRl
bnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE1hc2tMYXllcihSZWZQdHI8
R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXll
cihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLm1tCmluZGV4IGMzOWMzMTI0ZTg1NDJhZjk1MTk3MTc4NGI4MGYyMDRjODE5NWZj
ZTguLmQzMGI0ZTQxMGVmYzhhNGMwNDZkNmJmNTJjOWVmMTc5OTcxMGRhOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQ29sb3IuaCIKICNp
bXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmgiCiAjaW1wb3J0ICJMZWdhY3lUaWxl
R3JpZC5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWRUaWxlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCmluZGV4IGI0ZDJmZDlkZDVjNTJlZmI5N2Mz
MWRkN2QwNDVkMzk5OWZlNGJmNDEuLjlhOWU2MTk1MTVlZTcwMmNlNzQyMTkxMTVhMzhjMzUwOTdm
YmE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1t
CkBAIC00MSw4ICs0MSw2IEBACiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBOU1Njcm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Ny
b2xsVmlldz4gKlNjcm9sbFZpZXc6OnNjcm9sbFZpZXcoKSBjb25zdApAQCAtMjA2LDcgKzIwNCw3
IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRDb250ZW50c1NpemUoKQogI2Vsc2UKICAg
ICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVkXG4iLCBkb2N1bWVudFZpZXcoKSwgTlNT
dHJpbmdGcm9tQ2xhc3MoW2RvY3VtZW50VmlldygpIGNsYXNzXSksIHcsIGgpOwogI2VuZGlmCi0g
ICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtYXgoMCwgdykpLCBz
dGF0aWNfY2FzdDxDR0Zsb2F0PihtYXgoMCwgaCkpIH07IC8vIHdvcmthcm91bmQgZm9yIDQyMTMz
MTQKKyAgICBOU1NpemUgdGVtcFNpemUgPSB7IHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4
KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwgaCkpIH07IC8vIHdvcmth
cm91bmQgZm9yIDQyMTMzMTQKICAgICBbZG9jdW1lbnRWaWV3KCkgc2V0Qm91bmRzU2l6ZTp0ZW1w
U2l6ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtMjIzLDcgKzIyMSw3
IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAg
ICAgTlNQb2ludCBmbG9hdFBvaW50ID0gc2Nyb2xsUG9pbnQ7Ci0gICAgTlNQb2ludCB0ZW1wUG9p
bnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQueCks
IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgIC8v
IERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgorICAgIE5TUG9p
bnQgdGVtcFBvaW50ID0geyBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLngs
IGZsb2F0UG9pbnQueCksIHN0ZDo6bWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueSwg
ZmxvYXRQb2ludC55KSB9OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQg
NDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6dGVtcFBvaW50XTsKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VGhlbWVJT1MubW0KaW5kZXggMWJiYTRlMmFkYzlmNmExNmZiYzYzYzA5NjkzZTVjNjYxZjdkZDU0
Yi4uNzUyMDUyMzlkNjhjYjVjYWJlMjBlM2U4N2I1MGEyMzA2MmFlMzAyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQpAQCAtMzEsOCArMzEsNiBAQAogI2ltcG9ydCA8
cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaGVtZSYg
VGhlbWU6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAppbmRleCAxZjBjMDlmMWQ1NDUz
MDg3NTU3YzFlMjBiMWE4YTUwZGY5OTEwY2FkLi40MjM0MTE2OWVkZDBlM2U3NDhlNzcyODkwNTUz
NDEyMzg3Y2Y2Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQppbmRl
eCA5Mzg0ZDAyZGM3MGM0OWNjYTFjNjM1ZTVlODg2YzQzZWQ5M2Q5YzJiLi5lMGRiODI3ZjQwODRl
Nzc3MmM0ZDA1NGE5YTgzODhlYjI4ZjllZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbQpAQCAtMzQsOCAr
MzQsNiBAQAogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogTG9jYWxpemVkRGF0ZUNhY2hlJiBsb2NhbGl6ZWREYXRlQ2FjaGUoKQpAQCAtMTY2LDcg
KzE2NCw3IEBAIGZsb2F0IExvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11bVdpZHRo
KERhdGVDb21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBNCiAgICAgICAgIFtjb21wb25lbnRzIHNl
dE1vbnRoOihpICsgMSldOwogICAgICAgICBOU0RhdGUgKmRhdGUgPSBbZ3JlZ29yaWFuIGRhdGVG
cm9tQ29tcG9uZW50czpjb21wb25lbnRzLmdldCgpXTsKICAgICAgICAgTlNTdHJpbmcgKmZvcm1h
dHRlZERhdGUgPSBbZGF0ZUZvcm1hdHRlciBzdHJpbmdGcm9tRGF0ZTpkYXRlXTsKLSAgICAgICAg
bWF4aW11bVdpZHRoID0gbWF4KG1heGltdW1XaWR0aCwgbWVhc3VyZXIubWVhc3VyZVRleHQoU3Ry
aW5nKGZvcm1hdHRlZERhdGUpKSk7CisgICAgICAgIG1heGltdW1XaWR0aCA9IHN0ZDo6bWF4KG1h
eGltdW1XaWR0aCwgbWVhc3VyZXIubWVhc3VyZVRleHQoU3RyaW5nKGZvcm1hdHRlZERhdGUpKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIG1heGltdW1XaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQx
N2IyNjliNmI3MGJjOTI3MjM0ZDUxZC4uNjk1MGExZTBlNTMyMDE4MTA3ZDVmZGY4YTVhN2JiYzUx
NzA1NDAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTEwODksNyArMTA4OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzCiAg
ICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygpICYmIGNhbnZhc0NvbXBvc2l0aW5nU3Ry
YXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXllckNvbnRlbnRzKSB7CiAgICAgICAgIGNv
bnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVu
dD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNh
bnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihjb250ZXh0LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBo
aWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOworICAgICAgICAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShjb250ZXh0LT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJw
b3NlOjpDYW52YXMpOwogCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhZTMxN2IxNTIxMDg0N2U3ZWFlZjg5NzRhMDI3
ODdmYjExMGQ5MjMyLi4xNTllNTA1Njc3MDQzMzAxZmQxOTg1MGMzNDk3NDZmNzU5ODEyZTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNzQsNyArNzQsOCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCk7IH0KKyAg
ICAvLyBGSVhNRTogVGhpcyBpcyBsYXllcmluZyB2aW9sYXRpb24gYW5kIHNob3VsZCBiZSByZW1v
dmVkLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggMTBh
NTM2Mjk5Y2YyM2ViOWY4NmY1NzI3ZTg1MjM4M2NlOGEwNDAwOC4uYjhhYTlmZDU1MWE4OGE2YzNj
MGE2MmE3Mjk0MGZhM2QyYzQ0MTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOgogewogICAgIGFz
c2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlz
cGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OworICAgIElPU3VyZmFj
ZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmIChk
aXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFya0Rpc3BsYXlCdWZmZXJJblVz
ZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05FUlNISVBfSURFTlRJVFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMV2luLmNwcAppbmRleCAyMjRmYTE4YzgxNTkyNjJmZWYzZGU4ZWU1MDdh
NWI3ZDdkNzlkYjk4Li45ZGY4M2Y0NjA3Y2M5OGMwZDhmYjdlZGY2N2VkNmY3Yjg5NzgxYTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKQEAgLTY1LDYgKzY1LDEzIEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAorI2lmIFVT
RShHUkFQSElDU19MQVlFUl9XQykKK1BsYXRmb3JtTGF5ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRmb3JtTGF5ZXIoKTsKK30KKyNlbmRpZgor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3ZDllODY3Zjk4
ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5jNmE3ODRkNmQxOTNkMDhhZTZjMDliNmZh
N2U4OTM2OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjMsNiAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAorICAgIHZvaWQgc2V0Q29u
dGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNw
bGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0Zyb250QnVm
ZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXI7CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhhbmRsZS5oYXNfdmFsdWUoKTsKICAgICB9
CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1
ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2UwNWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4u
OTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjkyNWQ1MGYyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBlIHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6
ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkK
IHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2Zyb250QnVmZmVy
LmRpc2NhcmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5
QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYgKzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNv
ZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlcikgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIFR5cGU6OklP
U3VyZmFjZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewotICAgICAgICAgICAgICAgIGlm
IChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBo
YW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+
ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNf
Y2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQp
LmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8
IG1fYnVmZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1B
R0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBk
aXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAgICAgfQogICAgIH0KIAor
ICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250
QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0
ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQoreworICAg
IG1fYnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9
IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOworfQorCiBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKICAgICBBU1NFUlQoIW1f
ZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYgKzI1NywxMiBAQCBib29sIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKICAgICAgICAgbmVlZFRvRW5j
b2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0
aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3Jt
Q0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+
cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBmcm9udCBidWZmZXIgbm9u
LXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYg
aXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6
OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMsMjAgQEAgYm9vbCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBl
bmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkp
OwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJm
YWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3RvcmUoKSkKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0g
c3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFj
a2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6CisgICAgICAgIGlmIChhdXRvKiBiYWNr
ZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
KyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggYmQ4ZmI5YzNlMTk2
ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2ExMTM1NmUxNTExYTkyYzlmOTc5N2NmYWM5
NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAt
MTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNj
cmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250
ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8
PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIiki
OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgICAgICAgICB0cyA8PCAiIChj
b250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA3OTQw
M2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVjYzljLi40MzUwZjljYWI0Y2NiY2QzYmNk
MmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAt
Mjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1v
dGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjaWYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZU1vZGVsTGF5ZXI6
CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0
aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTMxMiw3ICszMTMsNiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5v
ZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJM
YXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkKICAgICAgICAgICAg
IHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0
aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihbQ0FMYXllciBfd2Vi
X3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCAzNmQ1NWUzZjRk
Y2NmYTAzZmQzNmUxZWNkMGRjMDY4MGU2MDExOWMzLi4wYjFiZDA0ZTBhYjQxYTU1NWUxNDIxMjIy
N2IzYWNmMGZiOGVlN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2Rl
PiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBt
YWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSkpOwog
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXll
cjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+
IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKIAogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKCFtX2lzRGVidWdMYXll
clRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tVSVJlbW90
ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybwogICAgICAgICAgICAgICAgIHBp
ZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lkZW50aWZpZXIoKSBjb250ZXh0SUQ6cHJv
cGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZjBlMWQ2OTgxYWM5OGIwZDFmMzRkMmM3OTJk
M2UzMWM2NzJiYmMwLi4wNjU5YzAzYWU2NTVhZDQ2ZTkyMzZiNGI3Y2UzMDQ2MTI2NDY5YWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTUwMTksNiArNTAxOSw3IEBACiAJCTdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VS
ZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNz
YWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjUzMDBF
NzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0
QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBmM2JkOWY2NTY2OWZmN2U4NzE2MjcyZjlh
NTVhZWI1Li40YTRlMDM5M2JhNWQ3MTQ4MjM1YjYyM2IxNTQ0M2JmOTYwOWUxODJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5t
bQpAQCAtMzIsMjQgKzMyLDY5IEBACiAjaW1wb3J0ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRp
bGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZP
YmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVi
bGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViR0xMYXllcjsgfQot
ICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3Bs
YXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7CisgICAgfQorCisgICAgLy8gV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2
b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxh
eWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVlKG1faXNPcGFxdWUpOwor
ICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CisgICAgfQor
CisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFs
CisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorCisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KKwor
ICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihjb25zdCBNYWNoU2VuZFJpZ2h0JiBkaXNwbGF5QnVm
ZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBt
X2Rpc3BsYXlCdWZmZXIgPSB7IH07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpID09
IG1fZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9kaXNwbGF5QnVmZmVyID0gZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCk7CisgICAg
fQogCitwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBpc09w
YXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVl
KQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBib29sIG1faXNPcGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50
c1NjYWxlOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworfTsKKworY2xhc3Mg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkgeworcHVibGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dlYkdMTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgs
MzAgKzEwMywyNSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2
YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93
ZWJHTExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlz
cGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZl
ckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRl
dmljZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlz
cGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24m
IGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotewotICAgIGF1dG8gYXR0
cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0
aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZToh
YXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW21fd2ViR0xMYXllciBzZXROYW1l
OkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1w
bGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKQogewogICAgIGlmICghbV9kaXNwbGF5QnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRl
Q1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSk7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2Vu
ZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5z
dXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2Ft
cGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKQEAgLTEwMCwyNiArMTQwLDE2IEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgp
CiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1ZmZlclNlbmRSaWdodCkKICAgICAgICAgcmV0dXJu
OwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0g
ICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1f
ZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czptX2Rpc3BsYXlC
dWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsK
ICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkp
OwogfQogCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkp
OwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApp
bmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5ZjNkYjNkZmQ3YTYwLi44MTQ4NTA2Yzgz
ODgxYzJhYzZmODMyMjU5ZmE0YTc1ZGJiNTk3YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBAIC0zMywzMyArMzMsNTMgQEAKICNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0
Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+
IGNyZWF0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUo
V1RGTW92ZShwbGF0Zm9ybUxheWVyKSkpOworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZv
cm1MYXllci5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYgcGxhdGZvcm1MYXllcikKKyAgICAg
ICAgOiBtX3BsYXRmb3JtTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKKyAgICB7CisgICAg
fQorCisgICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCiBj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MgZmluYWwgOiBwdWJsaWMgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CiBwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSBvdmVycmlkZXMuCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZp
bmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigp
OyB9CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
YW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1
cm4gbnVsbHB0cjsgfQogI2VuZGlmCiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29u
bmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpKSkKKyAgICB7CisgICAgfQogCi0gICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBt
X3BsYXRmb3JtTGF5ZXI7CisgICAgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBn
cHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29u
bmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKLSAgICAsIG1fcGxhdGZvcm1M
YXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6
OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA1ZDBlYThi
ZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEwLi41OGI2YWU3ZmM5YmEwYzdhZjdiODZm
MjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgb3duZXIoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmY29udGV4dCA9
PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYm
ICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpKSB7
CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3duZXIoKSAmJiAob3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdh
dGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYg
IXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9
IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogICAgIH0KLQog
ICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmIG1fcHJvcGVydGllcy5iYWNraW5n
U3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAg
ICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwogCkBAIC02ODMsOCArNjgzLDI2IEBA
IENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRlbnRzKCkgY29uc3QKIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsK
KyAgICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVs
bHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAg
ICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgp
OworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRlbnRzKHN1cmZhY2UuY3Jl
YXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29u
dGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIEFT
U0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7Cisg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZUhhbmRsZS5j
b3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBtX3Byb3Bl
cnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdkNTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJh
ZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEy
NywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29u
dGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZv
aWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNl
bmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBlNjI0N2RhYTZkYjAw
ZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1
MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0Owog
ICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBt
X3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4
IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEzMDhlNDhmNGUuLjYyOTIzMWI2MzllYTVj
MTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQpAQCAtMzQsMTUgKzM0LDE2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJh
cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAorc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9y
bUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJX
S1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRmb3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIs
IFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxh
eWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVyLCBvd25lciwgY29udGV4dCkpOwpAQCAt
ODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAgIG1fcGxhdGZvcm1MYXll
ciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNd
OwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRl
bnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9p
bnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXllci5wb3NpdGlvbi55LCBjdXN0
b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0
UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0b21MYXllci5hbmNob3JQb2lu
dC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHByb3BlcnRpZXMoKS5ib3VuZHMg
PSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZv
cm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFs
bG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsK
LSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWluZyBXZWJHTCBjb250ZW50
cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5Q29udGVudHMgPSBmYWxz
ZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiAKIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3Bs
YXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwotICAgIGVsc2UKLSAgICAg
ICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7Cisg
ICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9
CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXkoKQog
ewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIg
c2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVk
c0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAppbmRl
eCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0Li5iZDlhY2JlOTMzM2Yx
OGE3Nzk3M2JlZTlhZDAxMGNmMWYwNjU3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsy
OTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRv
cnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRzRGlzcGxheURlbGVn
YXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IGF1dG8gcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+
cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFwaGljc0xheWVyV0M6OnVz
ZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NM
YXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2NmY2YTA5ODVlYmU1Li4z
NmE2ODhjNjAyYjY2OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXQ1VwYXRlSW5mby5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+
CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0
eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShXZWJDb3Jl
OjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCB1c2Vz
Q29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9y
ZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGY0MWI1MTFmMWZlNWFlY2ViN2FmMDFjYzI4MTVkMTllMGQxMTM4MjYu
LmYyYzdiMmMzZWZhNDc3MjhiOTNkOWFlYjBlYzAyNGNmMTU3YzI2YWMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0xMi0wNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAg
IENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8
cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICBBZGQgYSBkdW1teSBvdmVycmlkZSBv
ZiB0aGUgbmV3IG1lbWJlciBmdW5jdGlvbiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgor
CiAyMDIxLTEyLTA0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDaGFuZ2UgV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbk9m
VmFsdWUoaWQpIHRvIHJldHVybiBhIFJldGFpblB0ci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQppbmRleCA4NzZjNzQ0ODA4ZjQzNjFlM2NkNTJmNTNmZmQ2ZjYwMDNh
OGEwZjg3Li5lMTkxMWRmNmMwOTNlMzhjOGQ0MmZhMTc5ZWZkNWU3NzJlYTY1ZGM0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00MCw2ICs0MCwyMSBAQCBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFRlc3RlZEdy
YXBoaWNzQ29udGV4dEdMQ29jb2EgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xD
b2NvYSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcykKKyAgICB7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0OworICAgIH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKQorICAgICAgICA6IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShh
dHRyaWJ1dGVzKSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xD
b2NvYVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OCw3ICs3Myw3IEBAIHByaXZhdGU6CiAKIHN0
YXRpYyBjb25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0
aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRU
ZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQorc3RhdGljIFJlZlB0cjxU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2Vi
Q29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1
ZTsKQEAgLTY3LDE0ICs4MiwxNCBAQCBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOgogICAgIGF0dHJp
YnV0ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOwogICAg
IGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7Ci0gICAgYXV0byBjb250
ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0
cmlidXRlcykpOworICAgIGF1dG8gY29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUud2lk
dGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1z
dGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCitz
dGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCiB7CiAg
ICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICBXZWJDb3JlOjpDb2xvciBleHBl
Y3RlZCB7IGl0ZXJhdGlvbiAlIDIgPyBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4gOiBXZWJDb3JlOjpD
b2xvcjo6eWVsbG93IH07CkBAIC0xMTksMTUgKzEzNCwxNSBAQCBURVNUX0YoR3JhcGhpY3NDb250
ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5j
ZU1ldAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOwogICAgIEVYUEVDVF9FUShhdHRyaWJ1
dGVzLnBvd2VyUHJlZmVyZW5jZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2U6OkRlZmF1bHQpOwotICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gVGVzdGVk
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGRlZmF1bHRDb250ZXh0
LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOwotICAgIGF1dG8gbG93
UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAg
YXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVh
dGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsK
ICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0
ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQg
PSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJm
b3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBB
U1NFUlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBFWFBFQ1Rf
TkUobG93UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OlJFTkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446150</attachid>
            <date>2021-12-07 03:13:12 -0800</date>
            <delta_ts>2021-12-07 03:37:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231009-20211207131310.patch</filename>
            <type>text/plain</type>
            <size>120703</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2QxMmRkN2Y2ZDgyZDYy
NTA5ODg0M2ZkNjY4MzU5MTFlODA2ZGI4OC4uYmNhNDJmNTFlZTU5MjdhZGY5MWMzMTVkOWE4ZmU4
MTYzNzYzMDQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMi0wNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBDb2NvYSBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTC4KKworICAgICAgICBN
YWtlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgZHJhdyB2aWEgR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlCisgICAgICAgIGluc3RlYWQgb2YgUGxhdGZvcm1MYXllci4gT24gQ29j
b2EgdGhlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgY2FuIGJlCisgICAgICAgIHRocmVlIGRpZmZl
cmVudCBvYmplY3RzOiBDR0ltYWdlLCBDQUxheWVyIG9yIGNvbnRlbnQgaW4gImJhY2tpbmcgc3Rv
cmUiCisgICAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIGNvbXBvc2l0b3IgbGF5ZXIuCisgICAgICAg
IEZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIGZvciBXZWJHTCwgd2Ugd2FudCBpdCB0byBiZSB0aGUg
bGF0dGVyLgorICAgICAgICBBcyBzdWNoLCB0aGUgb2JqZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgZHJhd3MgdG8gY2Fubm90IGJlIGEgcGxhdGZvcm0KKyAgICAgICAgbGF5ZXIgKENBTGF5ZXIp
LiBTbyBjb25jZXB0dWFsbHksIFdlYkdMIGRvZXMgbm90IGRyYXcgaW50byBhIHBsYXRmb3JtCisg
ICAgICAgIGxheWVyLCBpdCBkcmF3cyBpbnRvIGJhY2tpbmcgc3RvcmUgdGhhdCBjYW4gYmUgcHV0
IHRvIChwb3NzaWJseSBtYW55KQorICAgICAgICBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAg
QWRkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBpbnRlcmZhY2UsIHdoaWNo
IGNhbiBiZQorICAgICAgICB1c2VkIHRvIHJ1biBjbGllbnQgc3BlY2lmaWMgY29kZSBkdXJpbmcg
Y29tcG9zaXRvciBsYXllciBjb250ZW50cyB1cGRhdGUKKyAgICAgICAgcGhhc2UgKGkuZS4gbGF5
ZXIgZGlzcGxheSBwaGFzZSkuCisKKyAgICAgICAgV2ViR0wgd2lsbCB1c2UgbmV3IG92ZXJsb2Fk
cyBvZiBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzIHRvIHNldCB0aGUKKyAgICAgICAgY29u
dGVudHMgZHVyaW5nIGRlbGVnYXRlZCBkaXNwbGF5LiBUaGUgY29udGVudHMgaXMgSU9TdXJmYWNl
IGZvcgorICAgICAgICBpbi1wcm9jZXNzIG1vZGUgYW5kIE1hY2hTZW5kUmlnaHQgb2YgSU9TdXJm
YWNlIGluIEdQVVAgbW9kZS4KKyAgICAgICAgVGhlIElPU3VyZmFjZSBpcyBzZXQgYXMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBXZWJTaW1wbGVMYXllciBpbnN0ZWFkCisgICAgICAgIG9mIHRoZSBydW5u
aW5nIHRoZSBkcmF3IHZpYSBkaXNwbGF5KCkuCisgICAgICAgIFRoZSBNYWNoU2VuZFJpZ2h0IGlz
IHNldCBhcyB0aGUgY29udGVudHMgb2YgUGxhdGZvcm1DQUxheWVyUmVtb3RlCisgICAgICAgIGFu
ZCBiZSBzZXJpYWxpemVkIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIEZvciBub24tQ29j
b2EgcG9ydHMsIGFkZCBhIHNpbXBsZSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUKKyAgICAgICAgdGhhdCByZXR1cm5zIHRoZSBwbGF0Zm9ybSBsYXllciB0byB0aGUgR3JhcGhp
Y3NMYXllciBpbnNpZGUgdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
IHJlZmFjdG9yLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBs
YXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6
OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpsYXllckRpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3Jt
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRpc3BsYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om1hcmtEaXNwbGF5QnVmZmVySW5V
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW06IFJlbW92ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmNvbnRlbnRzT3BhcXVlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
ZWJHTExheWVyIHNldFRyYW5zZm9ybTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXll
ciBzZXRBbmNob3JQb2ludDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNw
bGF5XSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoLVtXZWJTaW1wbGVMYXllciBkaXNwbGF5XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OldlYkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoTmljb3NpYTo6
V2ViQ29yZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSk6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6
Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6On5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6
Tmljb3NpYUltYWdlQnVmZmVyUGlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNv
c2lhSW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoTmlj
b3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKIDIw
MjEtMTItMDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW2Nzcy1mbGV4Ym94XSBBY2NvdW50IGZvciBjYXB0aW9ucyB3aGVuIGZsZXhpbmcgdGFi
bGVzIHdpdGggc3BlY2lmaWVkIHNpemVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5YTI0MTE5MWVjMmJkMDhlODk5
MTE0YjM2MjI1MTEyYzViMmU2MDAuLjAyZTRiODdhMTI4NDUzN2RhMWQ5NDliMjdjN2JmMTE4Mjdm
NTAzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTItMDcgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQg
c3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3VyZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1D
QUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAgICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQKKyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgQ2hhbmdlIHRoZSBjb250cmFjdCBvZiB3aGF0
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHNlcmlhbGl6ZXMgdG8KKyAgICAgICAgdGhlIHRyYW5z
YWN0aW9uLiBCZWZvcmUsIGl0IHNlcmlhbGl6ZWQgdGhlIGZyb250IGJ1ZmZlci4KKyAgICAgICAg
QWZ0ZXIsIGl0IHNlcmlhbGl6ZXMgdGhlIG1fYnVmZmVySGFuZGxlLgorICAgICAgICBUaGUgYnVm
ZmVyIGhhbmRsZSBpcyBwcm9kdWNlZCBieSBkaXNwbGF5KCkgcGhhc2UgZWl0aGVyIGJ5CisgICAg
ICAgIGRlbGVnYXRlZCBkaXNwbGF5IHNldHRpbmcgdGhlIGNvbnRlbnRzIG9yIGRyYXdpbmcgdG8K
KyAgICAgICAgZnJvbnQgYnVmZmVyIGFuZCB0aGVuIGFzc2lnbmluZyB0aGUgZnJvbnQgYnVmZmVy
IGhhbmRsZS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpkZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlz
cGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3Jh
cGhpY3NMYXllcldDLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisKIDIwMjEtMTItMDYgIFBlciBBcm5lICA8cHZvbGxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIG1hY2ggc2VydmljZSBleHRlbnNp
b25zIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5NThh
NjYxN2M3NmI2N2U1ZDdhMGI5MWJhMjc0MjY3ZWVkYWExMmY1Li41MWRmNWMzMGFiOWZkYzQ1N2M4
ZTBkYjlkNmRjYmI2N2IzZjU4ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE0NTgsNiArMTQ1
OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNs
aWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZhY3RvcnkuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCBhZmM5NmEwYjYxMjA3YTRkYTczNjFjNTEzMjRkZjUyNzYzMWUwYzky
Li43ODE3ZDdmYjA1ZTczNTczOTI4OGJjY2JlODVkMGU0ODI1MWM4NGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5
ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVy
RXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29j
b2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1YzAzYjUyNDQ5YmQ0N2VlMTNlYjlmZDY1MzkyODNk
ZGViYzI4MmVhLi44YmY2ZWM4MDM5NWIxZTQzMDFlYWQwODE4MGM1NjhhZWU2MmM5YWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMjAyNyw2ICsyMDI3LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
VXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBjNzlmYzRkNzhjNjIxMDUxODk2MWVmMWM2NDEzMjM3YTVhYzc0
NDBkLi41Y2NhMGFjMjZmOTgzZjMxZjhhYjJjYzlmNzE2ODlkZTVlM2FmM2U1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTM5MSw3ICszOTEsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRl
V2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggOWY4NWU0OTg2YzUzYTFjYzhkNjNiMzM5
NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgzYzg2ZDI3NTY1NGNhZGMxY2FmNzViMDc5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4ICsyMDQ3Miw2IEBAIF9PQkpDX0NMQVNT
XyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29y
ZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldp
bmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cKLV9PQkpDX0NM
QVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNTXyRfV2ViR0xMYXllcgogX09CSkNfQ0xB
U1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRfV2ViTGF5ZXIKIF9PQkpDX0NMQVNTXyRf
V2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0MSw2IEBAIF9PQkpDX0lWQVJfJF9XZWJD
b3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhpdFdhcm5pbmcKIF9PQkpDX0lWQVJfJF9X
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fdGFyZ2V0CiBfT0JKQ19JVkFSXyRfV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2FjdGlvbgogX09CSkNfSVZBUl8kX1dlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVsZAotX09CSkNfSVZBUl8kX1dlYkdMTGF5
ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2xheWVyT3duZXIKIF9PQkpD
X0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmltcAogX09CSkNfSVZBUl8kX1dlYlNjcmlw
dE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNfSVZBUl8kX1dlYlNjcmlwdE9iamVjdFBy
aXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJmNDUwMmUzZTAyNzQ0YjVlNjg2Nzg3ZDI5Njc3
MDZiOTY1NDUyMzkuLjk4M2ViZWFkYTRjYTg1NWRjZTE0YzA1ZjcyYWM0MTQ1MmE3M2IxZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE0MzksNyArMTQzOSw2IEBACiAJCTQ5RUNFQjcwMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5RUVEMTQ1MTA1
MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxM0YxMDUxOTY5NDAwMDk5
RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07CiAJCTQ5RUVEMTQ3MTA1
MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNDExMDUxOTY5NDAwMDk5RkFC
IC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87IH07Ci0JCTQ5RkZCRjNGMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMERBMkZG
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFF
MSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFBQUY1RTdFMDA2MjgwM0IgLyogTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzc5
LDYgKzIzNzgsNyBAQAogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29h
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2
MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDgg
LyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJm
b3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOEVENUVEMjZG
MEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkzNjgsOCArOTM2OCw2IEBACiAJCTQ5RUVEMTRCMTA1MTk3
MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTRDMTA1MTk3
MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3QTRGMTQ0NEFGNUYwMEE1
RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkdMTGF5ZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZDMTI5QjI0MTkwMEFCNjFF
MSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwRkZBOUIxQUFGNUU2QzAw
NjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzk4LDYgKzExMzk2LDcgQEAKIAkJ
N0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3
MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjcyMEIwQTI3NDNE
QkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTFGQTI1QzA5
MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVEMjZGMEMxMjMwMDhBQzAy
MyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDVlV0
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRjI2RjBDMTIz
MDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExNDA5LDYgKzExNDA4LDcgQEAKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAv
KiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkJGREVD
RDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkQ4MjcwNTk5RUYw
MEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0
aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRBMjcwNUM5
NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QkNENDJEQzI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODY4Niw2ICsyODY4Niw4IEBACiAJCQkJMEY1ODBCMDkwRjEyQTI2OTAwNTFENjg5IC8q
IEdyYXBoaWNzTGF5ZXIuY3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyLmggKi8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBo
aWNzTGF5ZXJDbGllbnQuaCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywKKwkJCQk3QjcyMEIwQTI3
NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgg
Ki8sCiAJCQkJMUFDNjk1OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
LmggKi8sCiAJCQkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRh
dGVyLmNwcCAqLywKIAkJCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXll
clVwZGF0ZXIuaCAqLywKQEAgLTI4OTk3LDggKzI4OTk5LDYgQEAKIAkJCQkyRDNFRjQ0NzE5MTc5
MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8sCiAJCQkJQ0Q1RDI3NzYx
RTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oICovLAogCQkJ
CUNENUQyNzc1MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24u
bW0gKi8sCi0JCQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLywK
LQkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLywKIAkJCQkw
N0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaCAqLywK
IAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gKi8sCiAJCQkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tICovLApAQCAtMzMwNTEsNiArMzMwNTEsNyBAQAogCQkJaXNhID0g
UEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQwIC8qIChudWxsKSBpbiBI
ZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9y
dFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTM0Mzc5LDYgKzM0MzgwLDcg
QEAKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJD
QS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBo
aWNzTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIwQjBDMjc0M0RCQTcwMDA4
QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBo
aWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2
QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzYxNCw3ICszNzYx
Niw2IEBACiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4
dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQyRDMyRjAwMDlENDQ3IC8q
IFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RkZCRjNGMTFDOTNFRTMw
MDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUz
MkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVD
MzYyRDkyNUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUM3QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmplY3QuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJkNWMyNWI2YmFlYTIyM2Y1
NjdiLi43MmIyY2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZjZTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAi
Q2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDExIEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRlcmVmQ2FudmFzQmFzZSgp
OwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhlbEZvcm1hdDo6QkdSQTg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKaW5kZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGViOTk3OGU4MDIzZS4uNWFl
NzliZjBiOWUzOTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNzcsNyAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRpbmcgcHVycG9zZXMuCiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgeyB9Ci0gICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBoYXNBY3RpdmVJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY3RpdmVJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyKGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcikgeyBtX2hh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1Nzg2OGIwYTIzYjIyM2Jk
ZGU5MWMwNzhkYmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5YzQyYTRlZjBmOWQyODkx
YWQ1NjEzNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCBIVE1M
Q2FudmFzRWxlbWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMoKSBjb25z
dAogICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGJhc2UpOwogfQogCi1Q
bGF0Zm9ybUxheWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gUGxh
Y2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkK
IHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJldHVybiBtX2ltYWdlQnVm
ZmVyUGlwZS0+cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBp
cGUtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRl
clJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDljYmU0OTc2MGE2YzY2YTM4
MzRkZjk5MTk5Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0Mjk5NzRkMTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJv
b2wgaXNQbGFjZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkgZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBpc0dQVUJhc2VkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApp
bmRleCBhYzgxZDhjOTMyNDQ0N2NlYjdmYTM4ZTMzYTk2OWFmYzFhMDM4NGEwLi5jZTAwZTYzYThm
Yjc0ZmE4YzVmZGUzM2I5MjNjOWQ1ZjcxNmM0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTIs
NiArNTIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTY0NTIsOSArNjQ1
MywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmlzQ29udGV4dFVucmVjb3Zl
cmFibHlMb3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9zdCAmJiAhbV9yZXN0b3Jl
QWxsb3dlZDsKIH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0KCkgJiYgIW1faXNQZW5k
aW5nUG9saWN5UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Cisg
ICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRleHQtPmxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpyZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAppbmRleCA2NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUwNTgxNjA4Li5iNTQ1N2U3
MTM3Zjg0MjZkYzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zODYs
NyArMzg2LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0R0wqIGdyYXBoaWNzQ29u
dGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAgICAgV2ViR0xDb250
ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEdyb3VwLmdl
dCgpOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA3MWEzOGFmMDZi
MzU5MTI2M2M3NDQyYmRiNjg1MGU2ZjYzNDU1OWY5Li5iNWY1ZWNkMzgxY2E5MGEyN2Q4ZDJhYjUy
ZDNlZmIyNTJiZWQxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwxMiBAQAogI2lmIEVOQUJM
RShXRUJHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC03ODYsNyArNzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAgICB9OwogCi0gICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgaGFzQWxwaGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBjNzVkYTU2YTgz
NjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li40OTJlNDI2YjYzMDUyZjQ0OGY3NTc5MDc4
MzE5ZWQwYmE2ZjJlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIK
ICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2ICs2MTMsMTAgQEAgdm9p
ZCBHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0KIAordm9pZCBHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkKK3sKK30KKwog
dm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImIGNvbG9yLCBmbG9h
dCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJmOTUwOWYxOGNjYjk1OTky
M2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLmViNjM1OWZlM2YyMzVjMWQzOGJlNjBiYTA2NTAwZjY3
OGNmMTMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NMYXllckZh
Y3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiBjbGFz
cyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5nOwpAQCAtNTIyLDYgKzUy
Myw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29sb3IgdG8gcmVtb3ZlIHRo
ZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29s
b3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpOwogI2lm
IEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTW9k
ZWwoUmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXJJRCBjb250
ZW50c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5OTg4OTg2YTJm
N2Y4ZGRmNmIwZDhjMmQzOTQ2YzNmYzEzYTM3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0UoQ0EpCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0EpCit2b2lkIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFBs
YXRmb3JtQ0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6Om9y
aWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NMYXllckNBOjpkZWZhdWx0
Q29udGVudHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMTZjYzY4Y2Y5NTdhNjdhNTIx
ZjczNjJmMmY3Nzc1ZDRjMGE3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaApA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5jbHVkZSAiUGxhdGZvcm1M
YXllci5oIgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYgVVNFKENBKQorY2xhc3Mg
UGxhdGZvcm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNwZWNpZmljIGludGVyZmFj
ZSBmb3IgYXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIuCisvLyBSZXNwb25zaWJs
ZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hvdyB0aGUgcGFydGljdWxh
ciBjb250ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdyYXBoaWNzTGF5ZXIuCitj
bGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoKTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvRGVsZWdh
dGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KFBs
YXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OworI2Vsc2UKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CisjZW5k
aWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJmM2ZhY2VkYmFmMDFjYWUxMDk5
NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2N2U3ZWUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKQEAg
LTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKLS8vIFVzZWQgdG8gcHJvdmlk
ZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdlZCBJbWFnZUJ1ZmZlcjsg
ZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBhIFdvcmtlciB0aHJlYWQK
Ky8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGZvciBhbiBleHRlcm5h
bGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3JlYXRlZCBhbmQg
b3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1ZmZlclBpcGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoKICAgICBjbGFzcyBTb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7CkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmgKaW5kZXggNGU2MjIz
OTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3MGQwMWJmMzdhYjkwNTA2Y2Qw
NTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21tb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4NjU0MzAwNzIwMDUwOWNm
OTA1YjcwZjU1ZDA3YjU3YjQ3Li5hMTgyYzUyNTRlODAyY2E3OWEwNGE2NzZhYWRmMWE1MWJkNjA4
ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEaXNwbGF5
TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAgLTEyNDYsNiArMTI0Nyw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xh
eWVyUHVycG9zZTo6Tm9uZTsKICAgICAgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKICAg
ICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CiAKICAgICBpZiAo
Y29udGVudHNMYXllckNoYW5nZWQpCiAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CkBA
IC0xMjc3LDYgKzEyNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikKICAgICAgICAg
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgfQorICAgIG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRl
bnRzSW1hZ2VDaGFuZ2VkKTsKIH0KQEAgLTEzMDcsNiArMTMxMCw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmIG1vZGVsKQogICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CiAg
ICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQorICAgIG1fY29udGVudHNE
aXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNvbnRlbnRzTGF5ZXJDaGFuZ2Vk
KQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtMTM0Myw2ICsxMzQ3LDMxIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxw
dHI7CiAKICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcGxhdGZvcm1MYXllciA/IHB1cnBv
c2UgOiBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURl
bGVnYXRlID0gbnVsbHB0cjsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGVsZWdhdGUsIENvbnRlbnRz
TGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVudHNMYXllciAmJiBkZWxl
Z2F0ZSA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE93bmVy
KG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAgbV9jb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9
IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChkZWxlZ2F0ZSkgeworICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOworICAgICAgICBtX2NvbnRl
bnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShkZWxlZ2F0ZSk7CisgICAgICAgIG1fY29udGVu
dHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJyZW50bHkgZGVsZWdhdGVk
IGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2FsbHMgc2V0Q29udGVudHMs
IHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0aW5ncyBhY2NvcmRpbmds
eS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3RvcmVBdHRhY2hlZCh0cnVl
KTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcodHJ1ZSk7
CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnByZXBhcmVUb0RlbGVnYXRlRGlz
cGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CiAKICAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJD
aGFuZ2VkKTsKQEAgLTE4NzgsNiArMTkwNywxOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxh
dGZvcm1DQUxheWVyTG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNpZ25lZCBibGFua1BpeAog
ICAgIGNsaWVudCgpLmxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUoYmxhbmtQaXhlbENvdW50KTsK
IH0KIAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5ZXI7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxh
eWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk7Cisg
ICAgQVNTRVJUKGxheWVyID09IG1fY29udGVudHNMYXllcik7CisgICAgbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNz
TGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFy
YW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJhY2tkcm9wID8g
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpAQCAtMjc5Miw3
ICsyODMzLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1M
YXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRmb3JtIGxheWVyIHdhcyBzZXQg
YXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5
ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7
CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPyBtX2Nv
bnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDogZGVmYXVsdENvbnRlbnRzT3Jp
ZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSwg
b3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllclB1cnBvc2UgPT0gQ29udGVu
dHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVk
c0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NTQsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIG5ld0xheWVyVHlw
ZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKHRoaXMsIGlzVGls
ZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BE
b3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRm
b3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENv
bnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyLCBDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgLy8gVHVybiBvZmYgaW1w
bGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICNlbmRp
ZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdD
b29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAgIGlmIChvcmllbnRhdGlvbiA9
PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CiAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAgICAgICAxLjBmLCAwLjBmLCAw
LjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdmMzliNDhkODcuLmY2YjJjOTRj
YjNkNmZmYWQwMzVlYjc0OTJhMjU1ODIyNTkyYTAwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTAsNiAr
MTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRl
bnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CkBAIC0xOTMs
NiArMTk1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIGRvdWJsZT4+IGFjY2VsZXJhdGVkQW5pbWF0aW9uc0ZvclRlc3RpbmcoKSBjb25z
dCBmaW5hbDsKIAorICAgIGNvbnN0ZXhwciBzdGF0aWMgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uID0gQ29tcG9zaXRpbmdDb29yZGlu
YXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworCiBwcml2YXRlOgogICAgIGJvb2wgaXNHcmFwaGlj
c0xheWVyQ0EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTIxMiw2ICsy
MTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCk7IH0KICAgICBib29s
IHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRy
YXdzQ29udGVudCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJE
ZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FM
YXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5
KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJuIGxheWVyRGlkRGlzcGxh
eShsYXllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5l
ZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBmbG9h
dCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
MzAwLDEwICszMDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1aXJlc1RpbGVkTGF5ZXIo
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNoYW5nZUxheWVyVHlwZVRv
KFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0OwotCi0gICAg
dm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CisgICAgdm9pZCBzZXR1
cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwogICAgIFBsYXRmb3JtQ0FM
YXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBsYXRmb3JtQ0FMYXllciYs
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYpOwpAQCAtNjQ0LDYgKzY0Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1PREVM
X0VMRU1FTlQpCiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9kZWw7CiAjZW5kaWYKKyAg
ICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBtX2NvbnRlbnRz
RGlzcGxheURlbGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1f
YW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9iYXNlVmFs
dWVUcmFuc2Zvcm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYxYTNiNjFhYjVkOTdlZDYz
YzhhYjE4ODhlOWRkYTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgzYTJjOWFjMDI2MGY5NjIw
NjExYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JKQ19DTEFTUyBBVlBsYXll
ckxheWVyOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7CiAjZW5kaWYK
IAorbmFtZXNwYWNlIFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBNYWNoU2VuZFJp
Z2h0OworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQb29s
OwpAQCAtNDgsNiArNTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogCiB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZvcm1DQUxheWVyTGlzdDsK
IAorI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOworI2VuZGlmCisKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxQbGF0Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ29jb2E7
CkBAIC0xOTAsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250
ZW50cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVm
KSA9IDA7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyQ2xpZW50LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZkNzNhOTA4YWJmYmFkMTMw
Ni4uMWU3MmM0NTY2ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXll
ciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNB
TGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVz
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA5YjFiMDExMjAxMzRj
ZDg1NWVjNWNkMTE0OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1ZjIxOGFmM2UzYWZhZTg0
YWNmN2UwNDliMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTEyMCw2
ICsxMjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNl
dENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAg
dm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwor
I2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCAzNGUyNTkwZjU3
NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4ZGUwNjdiYWRiMDFhNTdl
ZGZiMmI5YWI5NTMwMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAt
NDAsNyArNDAsNiBAQAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAjaW1wb3J0ICJXZWJBY3Rp
b25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkNvcmVDQUxheWVyRXh0
cmFzLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJXZWJWaWRlb0NvbnRhaW5l
ckxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtMjEx
LDkgKzIxMSw2IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAgICAgICYmIFsoV2ViVmlk
ZW9Db250YWluZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAgICAgICByZXR1cm4gTGF5
ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV2Vi
R0xMYXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyOwotCiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0KIApAQCAtMjM0LDYgKzIz
MSw3IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5
cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxl
TGF5ZXI6CisgICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAg
IGxheWVyQ2xhc3MgPSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEwICsyNjMsNiBAQCBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlw
ZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FWRm91bmRhdGlvbkZyYW1l
d29ya0F2YWlsYWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFBBTDo6Z2V0QVZQbGF5
ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVu
dHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgUGxhdGZvcm1DQUxh
eWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAg
ICAgY2FzZSBMYXllclR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5
ZXIgY2xhc3NdOwpAQCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNvbW1vbkluaXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0
IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJU
eXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIg
fHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlmIChtX2xheWVyVHlwZSA9
PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9s
bENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKICAgICAg
ICAgW21fbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBlbHNlCiAgICAgICAgIFtt
X2xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUgc2hh
cmVkXV07CkBAIC03OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiB9CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNl
dENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBzZXRD
b250ZW50cyhzdXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBzdXJmYWNl
SGFuZGxlKQoreworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRlbnRzKCpzdXJmYWNlKTsK
K30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50c1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCBhNjQ4ZmNkMmVjNGYwYjliNTFl
MzAyMzY5ZTAxMjQ5YjUyZDliNGU0Li45MTNjMGY0YTUyZDBkMWFlMDM5YmQ4ZTMyNjY4NzhmYTUx
MmZhZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBvdmVycmlk
ZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
Ym9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQppbmRleCBhNGFlZTNkZmFiMGY3N2EyZmVjNWI1Y2RmZGNmYjgyZTQwZTQxMWU2Li5h
ZjVkYWZiNjIyMzI5ZTRhYmUwNGYyNDlhZmRkNGYyOWMyM2U1ZTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0KQEAgLTQ2NywxMSArNDY3LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gbV90ZXh0dXJlOwogfQogCi1Q
bGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogYm9vbCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9jb250ZXh0T2JqKQpAQCAt
Nzk5LDYgKzc5NCwxMSBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKICAgICByZXR1cm4gbV9jb25m
aWdPYmo7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQor
eworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJH
TExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZGEwZmUwZjQ0YTNhODQ0MGU2
NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFy
dHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0KLS8vIEEg
bGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJmYWNlLgotV0VCQ09SRV9FWFBPUlQgQGludGVy
ZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0
aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNP
cGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5MDMxNTU2OTExMTM2YzMxZjVkNjhl
ZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYg
RU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotCi0jaW1wb3J0ICJHcmFwaGlj
c0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKLSNpbXBvcnQgIlBsYXRmb3Jt
Q0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR0xMYXllcgotCi0tIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIHNl
bGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAgIHNlbGYuY29udGVudHNP
cGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBkZXZpY2VQ
aXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwotfQotCi0vLyBXaGVuIHVzaW5nIGFuIElPU3Vy
ZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVlZCB0byBmbGlwIHRoZQotLy8gbGF5ZXIgdG8g
dGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9TdXJmYWNlIHByb3ZpZGVzIGNvbnRlbnQKLS8v
IGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkgaW5jb21pbmcgdHJhbnNmb3JtICh1bmxpa2Vs
eSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50cyBsYXllcikgYW5kIGFuY2hvciBwb2ludCBt
dXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFuZCBtYWtlIHN1cmUgdGhlIHRyYW5zZm9ybSBo
YXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9pZClzZXRUcmFuc2Zvcm06KENBVHJhbnNmb3Jt
M0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRFNjYWxlKHQsIDEs
IC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5jaG9yUG9pbnQ6KENHUG9pbnQpcAotewotICAg
IFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngsIDEuMCAtIHAueSldOwotfQot
Ci0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBTaG93IHRoZSBzZWxmLmNvbnRlbnRzIGFzIHRo
ZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhpbmcgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICBh
dXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JM
YXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25l
cigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNw
bGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQ
cm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4
IDI1NDI2MjMwZGZlZGFkMmM1ZWI5MTA0MjRhMDhhNzJlMzcxN2IyZDcuLjMxMzg1OGI4ZjU3ZGFi
OGQxMGE2YWI2MjgxN2U4NzU0MGVmMzgwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0yOSw4ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAvLyBOT0xJTlQKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiV2ViR0xMYXll
ci5oIgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgIlBsYXRm
b3JtQ0FMYXllci5oIgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCAiRGlzcGxheUNvbmZp
Z3VyYXRpb25Nb25pdG9yLmgiCkBAIC0zOSw0NiArMzgsODMgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyBSZXRhaW5QdHI8V2ViR0xMYXllcj4gY3JlYXRlV2Vi
R0xMYXllcihjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCi17
Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IGxheWVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIGxheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRX
aXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNP
cGFxdWU6IWF0dHJpYnV0ZXMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW2xheWVyIHNl
dE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIHJldHVybiBsYXllcjsKLX0KK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+
IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09w
YXF1ZSwgY29udGVudHNTY2FsZSkpOworICAgIH0KKworICAgIC8vIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0
ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxh
eWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2Fs
ZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKworICAgIHZvaWQgZGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikK
KyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKCptX2Rpc3BsYXlCdWZmZXIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICB9CisK
KyAgICBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzTGF5
ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQor
CisgICAgdm9pZCBzZXREaXNwbGF5QnVmZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5
QnVmZmVyLnJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
aWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkgPT0gbV9kaXNw
bGF5QnVmZmVyLT5zdXJmYWNlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlz
cGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxheUJ1ZmZlci0+
c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoYm9vbCBpc09wYXF1ZSwgZmxv
YXQgY29udGVudHNTY2FsZSkKKyAgICAgICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVlKQorICAgICAg
ICAsIG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBib29sIG1faXNPcGFxdWU7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsKK307CiAKIC8v
IEdyYXBoaWNzQ29udGV4dEdMIHR5cGUgdGhhdCBpcyB1c2VkIHdoZW4gV2ViR0wgaXMgcnVuIGlu
LXByb2Nlc3MgaW4gV2ViQ29udGVudCBwcm9jZXNzLgogY2xhc3MgV2ViUHJvY2Vzc0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0xDb2NvYQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAsIHByaXZhdGUgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9y
OjpDbGllbnQKICNlbmRpZgotCiB7CiBwdWJsaWM6CiAgICAgfldlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8g
R3JhcGhpY3NDb250ZXh0R0xDb2NvYSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXll
cio+KG1fd2ViR0xMYXllci5nZXQoKSk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwg
eyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwogcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMp
CiAgICAgLy8gRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpDbGllbnQgb3ZlcnJpZGVzLgog
ICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZCgpIGZpbmFsOwogI2VuZGlmCi0KICAgICBX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmJik7Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKIAorICAgIFJl
ZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU7CiAgICAgZnJpZW5kIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ29yZTo6Y3Jl
YXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYpOworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIH07
CiAKIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hOjpXZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQog
ICAgIDogR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQotICAgICwg
bV93ZWJHTExheWVyKGNyZWF0ZVdlYkdMTGF5ZXIoY29udGV4dEF0dHJpYnV0ZXMoKSkpCisgICAg
LCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxl
Z2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0
aW8pKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0
b3I6OnNpbmdsZXRvbigpLmFkZENsaWVudCgqdGhpcyk7CkBAIC05NSwxMyArMTMxLDcgQEAgV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6On5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYSgpCiB2b2lkIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheSgpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRp
c3BsYXkoKTsKLSAgICBhdXRvIHN1cmZhY2UgPSBtX3N3YXBDaGFpbi5kaXNwbGF5QnVmZmVyKCku
c3VyZmFjZS5nZXQoKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybjsKLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRz
OnN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBbbV93ZWJHTExheWVyIHNldE5lZWRz
RGlzcGxheV07Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihkaXNwbGF5QnVmZmVyKCkpOwog
fQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9u
ZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCmluZGV4IGViMDRlMjA2NTZmNWJiYTdiZmZl
MDEzYThkNmJkOWQxNTRlNjBjNDkuLjMzOWM2ZmY5ZDI0MjViYmI3MGZmYWVjNGEyNzIyMmFkZDM5
M2EzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNv
cmVJbWFnZUFwcGxpZXIubW0KQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBVU0UoQ09SRV9JTUFHRSkK
IAogI2ltcG9ydCAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgorI2ltcG9ydCA8Q29yZUltYWdlL0NJ
Q29udGV4dC5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NJRmlsdGVyLmg+CisjaW1wb3J0IDxDb3Jl
SW1hZ2UvQ29yZUltYWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQppbmRleCBhY2Y5
NmZkMGQ1NDBhYjg2ZTc3MGQ0NjEzYzE5MGEyMjgzYjcwNWYwLi4zMjZmMDQzMmI0ODYyMjE5NjJj
NzVlZmM2ZGUwMWVkOGFkYzllNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0
ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBvcnQg
PHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IDU1NDgwYjUyYjkxZTAyODYyZmYwYmZjMTMwNmRhODBk
NjAzYzU0MmMuLjNlMWE0ZmQyNjc5MTk1MTA5OWE4YjM4MDIyZjU4NWZkYTM5ZThlNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAg
LTgxLDggKzgxLDExIEBACiAtICh2b2lkKXNldE5lZWRzRGlzcGxheQogewogICAgIGF1dG8gbGF5
ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChf
X2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkgJiYg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKQotICAgICAgICBb
c3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKKyAgICBpZiAoIWxheWVyIHx8ICFsYXllci0+b3duZXIo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckRyYXdzQ29udGVudCgpICYmICFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVs
ZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBbc3VwZXIg
c2V0TmVlZHNEaXNwbGF5XTsKIH0KIAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KENH
UmVjdClkaXJ0eVJlY3QKQEAgLTk0LDcgKzk3LDcgQEAKICAgICB9CiAKICAgICBpZiAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBsYXllck93bmVyID0gcGxhdGZvcm1MYXllci0+b3du
ZXIoKSkgewotICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkpIHsKKyAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29u
dGVudCgpIHx8IGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkocGxh
dGZvcm1MYXllci5nZXQoKSkpIHsKICAgICAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXlJ
blJlY3Q6ZGlydHlSZWN0XTsKIAogICAgICAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3Jt
Q0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0Zm9ybUxheWVyLmdldCgpKSkgewpAQCAtMTAz
LDYgKzEwNiw3IEBACiAgICAgICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDppbmRpY2F0b3JSZWN0XTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKICAg
ICB9CiB9CiAKQEAgLTExMywxMCArMTE3LDE0IEBACiAgICAgICAgIFdlYlRocmVhZExvY2soKTsK
ICNlbmRpZgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgW3N1cGVyIGRpc3BsYXld
OwogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FM
YXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5
ZXItPm93bmVyKCkpCi0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNs
aWVudCogb3duZXIgPSBsYXllciA/IGxheWVyLT5vd25lcigpIDogbnVsbHB0cjsKKyAgICBpZiAo
b3duZXIgJiYgb3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0
KCkpKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KGxheWVyLmdl
dCgpKTsKKyAgICBlbHNlCisgICAgICAgIFtzdXBlciBkaXNwbGF5XTsKKyAgICBpZiAob3duZXIp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0
KCkpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCAzMzAyOGE1ZTk0YzljZTcw
NGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRkLi4yZjc0ZDBlYmFkYjdkODJlOTIwZDQyOGNkOWUxOWNm
NmRkZTM2MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTQ0
LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCituYW1lc3BhY2UgewogY2xhc3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSBm
aW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSwgcHVibGljIENvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgewogcHVibGljOgogICAgIE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSBvdmVycmlkZXMuCiAgICAg
dm9pZCBoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmKSBmaW5hbDsKIAotICAgIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKLQorICAgIENvbnRlbnRMYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRl
OgorICAgIC8vIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVz
LgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRy
PENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CkBAIC02MiwxNiArNjQsMzggQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCi1jbGFzcyBO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7Citj
bGFzcyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgTmljb3NpYUltYWdlQnVm
ZmVyUGlwZSgpOwotICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1
bHQ7CisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVm
UHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxh
eWVyKSkpOworICAgIH0KIAorICAgIC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3Vy
Y2VEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisg
ICAgICAgIDogbV9uaWNvc2lhTGF5ZXIoV1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAg
ICB9CisKKyAgICBSZWZQdHI8Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKK307CisKK2Ns
YXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBl
IHsKK3B1YmxpYzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3Nv
dXJjZShhZG9wdFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAg
ICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVn
YXRlOjpjcmVhdGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KIAot
ICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICAv
LyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6
OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0K
KyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0
ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAg
KzE1OSwxMCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQ
dHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQo
KTsKLX0KLQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lm
TmVlZGVkKCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmlj
b3NpYUltYWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3Vy
Y2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291
cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5
ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMz
NjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3Vy
Y2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsK
IAorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRy
eSBwb2ludHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2Iw
YTQ3Li43NTBhODRhZjYzODJjNTQxMzBjZjM2ZTg2ZDliYzhjNzYwNGNmYmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5
LDYgKzgwLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xh
c3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxh
dGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
cGxhdGZvcm1MYXllcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3Bs
YXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxh
dGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxh
eWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmli
dXRlcykpKTsKQEAgLTg4LDcgKzExNSwxNyBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNF
KE5JQ09TSUEpCisgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVy
KCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5k
aWYKK3sKK30KKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkKIHsKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigp
OwogfQogCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMp
CkBAIC0xMjMsMTUgKzE2MCw2IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJu
IGNvbnRleHQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgcmV0
dXJuICZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCk7Ci0jZWxzZQotICAgIHJldHVybiBt
X3RleG1hcExheWVyLmdldCgpOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCBiNDBlNzk4MzNlODExMGY1ZDA5N2Vh
ZDNiNTMxZjFlNjJkNmQ4ZDFiLi4yZGIyZThkN2Q5Y2Q3YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBi
NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyKCk7CiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJy
aWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7Cisg
ICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29s
IGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0
dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbCBmbGlwWSkgZmluYWw7CiAjZW5kaWYKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKKyAgICBSZWY8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAz
ZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNjNTJhY2NjZTEzYzYwYzRiLi5lOTk0MjU0NGJmZTkwOTQ0
YzM1MGQxMzljODUzYzk3ZmQ2NDAzMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2ICszNDIsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRm
b3IKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKK3ZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVn
YXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRm
b3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxh
dGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0Rl
YnVnQm9yZGVyKCkgPT0gc2hvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIzNGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMGM4OWJh
M2E1OTQ4YzQxOGMxMjc5ZWZhZDdhOTVhOTU4ZTgwZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXll
ci5oIgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNv
bnN0IENvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAg
IGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRl
bnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2Ux
Y2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uMDU0MTZhNTAwMTViNmZjMWNkNTUwMzEw
OTIxMmQzNjVlYmY3OWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJG
bG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVy
UHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBk
aXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxw
dHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9z
ZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21w
b3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYg
KCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3
Y2ZkNzViNGNkLi45N2RlYzU5YmYxNzkxOGEyY2M4MjBkNDY1ZmUwNWIwZTNmZTI3NmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRl
cihib29sKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2Uo
SW1hZ2UqKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4
NTQyYWY5NTE5NzE3ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUy
YzllZjE3OTk3MTBkYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKKyNpbXBvcnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVT
YXZlci5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVH
cmlkVGlsZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9s
bFZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5t
bQppbmRleCBiNGQyZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5
NTE1ZWU3MDJjZTc0MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAi
V2ViQ29yZUZyYW1lVmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUg
TlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxW
aWV3KCkgY29uc3QKQEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0Q29udGVudHNTaXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQg
aCAlZFxuIiwgZG9jdW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXco
KSBjbGFzc10pLCB3LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGlj
X2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgp
KSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBz
dGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+
KHN0ZDo6bWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3Vt
ZW50VmlldygpIHNldEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKIH0KQEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9s
bFBvaW50OwotICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Ny
b2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3Jp
Z2luXS55LCBmbG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29y
ayBhcm91bmQgNDIxMzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtz
Y3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Nj
cm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNl
IE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50Vmlldygp
IHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5
ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdi
NTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9U
aGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0K
QEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4u
NDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2Ev
TG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2Nv
YS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4
NmM0M2VkOTNkOWMyYi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWRE
YXRlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2Nh
bGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9j
YWxpemVkRGF0ZUNhY2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRl
Q2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29u
c3QgTQogICAgICAgICBbY29tcG9uZW50cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNE
YXRlICpkYXRlID0gW2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQo
KV07CiAgICAgICAgIE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3Ry
aW5nRnJvbURhdGU6ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lk
dGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAg
ICBtYXhpbXVtV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVU
ZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVt
V2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjY5NTBh
MWUwZTUzMjAxODEwN2Q1ZmRmOGE1YTdiYmM1MTcwNTQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBA
QCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5k
ZXJMYXllciogY29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52
YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0Fz
TGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFz
ID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAg
ICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAg
ICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29u
dGV4dC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9z
ZTo6Q2FudmFzKTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNEaXNw
bGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFw
aGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXll
ckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXgg
YWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0YTAyNzg3ZmIxMTBkOTIzMi4uMTU5ZTUwNTY3NzA0MzMw
MWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTc0
LDcgKzc0LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0Mp
Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC0+cGxhdGZvcm1MYXllcigpOyB9CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbGF5ZXJpbmcg
dmlvbGF0aW9uIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDEwYTUzNjI5OWNmMjNlYjlmODZmNTcyN2U4NTIzODNj
ZThhMDQwMDguLmI4YWE5ZmQ1NTFhODhhNmMzYzBhNjJhNzI5NDBmYTNkMmM0NDE2NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRp
c3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQt
PmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2Nv
bnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRf
T1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKaW5kZXgg
MjI0ZmExOGM4MTU5MjYyZmVmM2RlOGVlNTA3YTViN2Q3ZDc5ZGI5OC4uOWRmODNmNDYwN2NjOThj
MGQ4ZmI3ZWRmNjdlZDZmN2I4OTc4MWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4u
Y3BwCkBAIC02NSw2ICs2NSwxMyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVw
YXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcAogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKKyNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCitQbGF0Zm9y
bUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLT5w
bGF0Zm9ybUxheWVyKCk7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLmgKaW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5
Zi4uYzZhNzg0ZDZkMTkzZDA4YWU2YzA5YjZmYTdlODkzNjk1OTkyMjQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNE
aXNwbGF5KCk7CiAKKyAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1
cmZhY2VIYW5kbGUpOwogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRT
aXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gISFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyOworICAgICAgICByZXR1cm4gbV9idWZm
ZXJIYW5kbGUuaGFzX3ZhbHVlKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVz
aGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNk
MTdlMDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjkzN2E5NWM1NmNlMTc1MzRiMTFmY2ZiNWE0OGRl
MWI5MjVkNTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMCw2ICsx
MDAsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUo
VHlwZSB0eXBlLCBXZWJDb3JlOjpGbG9hdFNpemUgcwogCiB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiB7CisgICAgbV9idWZmZXJIYW5kbGUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVy
LmRpc2NhcmQoKTsKICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOwpAQCAtMTEy
LDI2ICsxMTMsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNv
ZGVyIDw8IG1faXNPcGFxdWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsK
LQotICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0g
ICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgc3dpdGNoIChtX3R5
cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgICAgICBpZiAoYXV0
byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVh
dGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+
Y2FuTWFwQmFja2luZ1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRp
Y19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJh
Y2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0
ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAg
ICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZW5jb2Rl
ciA8PCBoYW5kbGU7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlckhhbmRsZTsKIAogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlzcGxheUxpc3RIYW5kbGU7CkBAIC0yMjAsNiAr
MjAyLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1
ZmZlcigpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVs
bG9wdDsKICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAg
IGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0yNTcsNiArMjQwLDEzIEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAg
IHJldHVybiBtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwog
fQogCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hT
ZW5kUmlnaHQmJiBjb250ZW50cykKK3sKKyAgICBtX2J1ZmZlckhhbmRsZSA9IFdURk1vdmUoY29u
dGVudHMpOworICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKKyAgICBtX3Bh
aW50aW5nUmVjdHMuY2xlYXIoKTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGlzcGxheSgpCiB7CiAgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsK
QEAgLTI2Nyw2ICsyNTcsMTIgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSgpCiAgICAgaWYgKFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQgPSBtX2xheWVyLT5j
b250ZXh0KCkpCiAgICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbnRleHQtPmJh
Y2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CiAKKyAgICBpZiAobV9sYXllci0+b3du
ZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgeworICAgICAg
ICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7
CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxh
eShtX2xheWVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gTWFrZSB0
aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBj
YW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0
QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogCkBAIC0zMjcsNiAr
MzIzLDIwIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAg
ICBtX2Zyb250QnVmZmVyRmx1c2hlcnMuYXBwZW5kKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlci0+Y3JlYXRlRmx1c2hlcigpKTsKICNlbmRpZgogCisgICAgc3dpdGNoIChtX3R5
cGUpIHsKKyAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tl
bmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7
CisgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2lu
Z1N0b3JlKCkpCisgICAgICAgICAgICAgICAgbV9idWZmZXJIYW5kbGUgPSBzdGF0aWNfY2FzdDxB
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qml0
bWFwOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9
IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigq
YmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0NDMyNGEwYjczYWFlYjM4ZTg5MWIu
LmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmExNDc1MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSArMTAzNSw2IEBAIFN0cmluZyBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAg
ICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0
aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRM
YXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206
CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5o
b3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYzYmMzNGZmM2E3ZGZlNmZjNzM2ZGRh
ODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFjZTA5NmJlOTc5OTJhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsyOTYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29u
c3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlmCisgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIFJl
bW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJ
RCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6
CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+
IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICNlbmRpZgogICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgaWYgKG1faXNEZWJ1
Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6
Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsKICAgICAgICAgcmV0dXJu
IG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6cHJv
cGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZUhvc3RJT1MubW0KaW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2ZkMzZlMWVjZDBkYzA2ODBlNjAxMTlj
My4uMGIxYmQwNGUwYWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBmYjhlZTdiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNTUsNiArNTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5v
ZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1w
bGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5n
TGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVBhZ2VUaWxlZEJhY2tp
bmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlMoW1tXS0NvbXBv
c2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03NCw3ICs3NSw2IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3Vz
dG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgot
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6
CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkgewogICAgICAgICAgICAgYXV0
byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3aW5nQXJlYS0+cGFnZSgpLnByb2Nl
c3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGRhMTc0OTI5YjA5NDVjMTZiNzRkMDg4YWY5MGM3MzRhM2FkMTdkOS4uMDlkMTRhOGE3NWRhNjQw
NzZmY2MyNDFmYzE0NjAxNjMwNmNhMzBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDIxLDYgKzUwMjEsNyBAQAogCQk3QjQ4M0Yx
QzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4
M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3QTAwMDgyMDg2IC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVm
OGEwZjNiZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uNGE0ZTAzOTNiYTVkNzE0ODIzNWI2
MjNiMTU0NDNiZjk2MDllMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2OSBAQAogI2ltcG9y
dCAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJH
TExheWVyLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVz
cGFjZSB7CiAKLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6
IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3Bs
YXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBz
dGF0aWMgUmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3Bh
cXVlLCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2Fs
ZSkpOworICAgIH0KKworICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXko
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxh
eWVyLnNldE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2Fs
ZShtX2NvbnRlbnRzU2NhbGUpOworICAgIH0KKworICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxh
eUJ1ZmZlcikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOwor
ICAgIH0KKworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29u
c3QgTWFjaFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlz
cGxheUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYg
ZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlC
dWZmZXIuY29weVNlbmRSaWdodCgpOworICAgIH0KIAorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVm
ZmVyRGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisg
ICAgICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUo
Y29udGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVl
OworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1f
ZGlzcGxheUJ1ZmZlcjsKK307CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1Ymxp
YzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJH
TExheWVyLmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsg
cmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZP
VU5EQVRJT04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFs
IHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMwICsxMDMsMjUgQEAgcHVibGljOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0g
ICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAg
ICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0
cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAg
fQorCisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlC
dWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAg
ICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVy
aW5nQmFja2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5T
KFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmlj
ZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJV
RwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBp
ZiAoIW1fZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVy
LT5zdXJmYWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxl
LgorICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChtX2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNy
ZWF0ZUNWUGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1
ZSk7CkBAIC0xMDAsMjYgKzE0MCwxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZm
ZXJTZW5kUmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVm
ZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwot
ICAgIGlmICghZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdM
TGF5ZXIgc2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1v
dmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOwor
ICAgIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rp
c3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRv
IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0
dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRl
cywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlX
Qy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYy
OGFkOWYzZGIzZGZkN2E2MC4uODE0ODUwNmM4Mzg4MWMyYWM2ZjgzMjI1OWZhNGE3NWRiYjU5N2I1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNw
cApAQCAtMzMsMzMgKzMzLDUzIEBACiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldDUGxhdGZvcm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5l
ciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAg
ICB9CisKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRh
aW5lciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUo
cGxhdGZvcm1MYXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWlu
ZXIgbV9wbGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVi
bGljOgogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAg
IHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9
CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogcHJpdmF0
ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmlu
Z0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXll
ckdDR0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0KIAot
ICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlZjxQbGF0
Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7
CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmlu
Z0JhY2tlbmQpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5
ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcy
M2JhMC4uNThiNmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSAr
MTczLDExIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5z
YWN0aW9uKFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAo
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9
IG93bmVyKCkgJiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93
bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmICht
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAg
IG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRp
ZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNr
aW5nU3RvcmVDaGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZSAmJiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3Bl
cnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFu
Z2VkKTsKIApAQCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpjb250ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFD
RSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3Jl
OjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5n
KTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0
b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOwor
ICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUt
PnNldENvbnRlbnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgor
CiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgdmFsdWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMw
NTU3ZDU5OGNhMjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5
OGI2NWI4YThlYWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
Q29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0K
KyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpN
YWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWlu
aWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tLmgKaW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4u
N2FiOTkwYmMyNWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyAr
NjAsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4g
bV9wbGF0Zm9ybUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgz
MDIxMzA4ZTQ4ZjRlLi42MjkyMzFiNjM5ZWE1YzE2ZDZiNTQ3NTgwYmY2YzIyMjZkMzAzNWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20ubW0KQEAgLTM0LDE1ICszNCwxNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVy
Q0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ29jb2EuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5
ZXIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3Jt
Q0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
cGxhdGZvcm1DQUxheWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwotCiBSZWY8UGxh
dGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQ
bGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
LCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogewogICAgIGF1dG8gbGF5ZXIgPSBh
ZG9wdFJlZigqbmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKSwgcGxhdGZvcm1M
YXllciwgb3duZXIsIGNvbnRleHQpKTsKQEAgLTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxheWVy
VHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3VzdG9t
TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50cyA9
IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBwcm9w
ZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24ueCwg
Y3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3VzdG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBwcm9w
ZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9yUG9p
bnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnRa
KTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRzID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAtMTI3
LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRmb3JtQ0FMYXllcgogICAgICAgICAgICAgY2xvbmVk
TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwogICAgICAgICB9CiAKLSAg
ICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUoKSA9
PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5ZXIg
PSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgICAgICAvLyBGSVhNRTogY3Vy
cmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVudHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXllci4K
ICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1MCwx
MiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZUeXBl
UmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9wcm92
aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheUlu
UmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRz
KQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQot
ICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOworICAgIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5kZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFjY2Mw
NGM2MWQwZDBkMDVmNC4uYmQ5YWNiZTkzMzNmMThhNzc5NzNiZWU5YWQwMTBjZjFmMDY1Nzk2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NM
YXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFw
aGljc0xheWVyV0MuY3BwCkBAIC0yOTAsNiArMjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllcldD
OjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
LCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXll
cldDOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNM
YXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBhdXRvIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2VzQ29udGVudHNMYXllcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKaW5kZXggOTYyNzQxZmRkMDE1YTIz
OGQ0OGQ0NTcwNGM1NjZmNmEwOTg1ZWJlNS4uMzZhNjg4YzYwMmI2NjkyMTFkNDZjMTY4YjI4MWQw
N2NmM2NiOTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2MvR3JhcGhpY3NMYXllcldDLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiV0NVcGF0ZUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRM
aXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRl
bnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZERp
cmVjdGx5Q29tcG9zaXRlSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzcxNWI5MjFlOGEx
Nzc1MTgxOGJhNjQ4OTI5ZmI3MjFlYmU3ODE1Li5kMDgxNGJlZDQyYWVlMmRkMjA4ZmYxZjM2OWVj
MWZhM2E5NWRkOGRjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDcgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBV
SSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAg
ICAgICAgQWRkIGEgZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMi0wNiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdGVzdHMgZm9yIGR1cGxpY2F0ZSBzdWIgZG9tYWlucwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDg3NmM3NDQ4MDhmNDM2MWUzY2Q1MmY1M2ZmZDZm
NjAwM2E4YTBmODcuLmUxOTExZGY2YzA5M2UzOGM4ZDQyZmExNzllZmQ1ZTc3MmVhNjVkYzQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQwLDYgKzQwLDIx
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENvY29hIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Citwcml2YXRlOgorICAgIFRlc3RlZEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCisgICAgICAgIDogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZN
b3ZlKGF0dHJpYnV0ZXMpKQorICAgIHsKKyAgICB9Cit9OworCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRHTENvY29hVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZSAvLyBOT0xJTlQKQEAgLTU4LDcgKzczLDcgQEAgcHJpdmF0ZToK
IAogc3RhdGljIGNvbnN0IGludCBleHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CiAK
LXN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVm
YXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNpemUpCitzdGF0aWMgUmVm
UHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4
dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwg
PSB0cnVlOwpAQCAtNjcsMTQgKzgyLDE0IEBAIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6CiAgICAg
YXR0cmlidXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0cmlidXRlcy5hbHBoYSA9IHRydWU7
CiAgICAgYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZTsKLSAgICBhdXRv
IGNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92
ZShhdHRyaWJ1dGVzKSk7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6
ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9
CiAKLXN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVu
dHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlv
bikKK3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVu
dHMoVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikK
IHsKICAgICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9y
IGV4cGVjdGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNv
cmU6OkNvbG9yOjp5ZWxsb3cgfTsKQEAgLTExOSwxNSArMTM0LDE1IEBAIFRFU1RfRihHcmFwaGlj
c0NvbnRleHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVm
ZXJlbmNlTWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0
dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoZGVmYXVsdENv
bnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7Ci0gICAgYXV0
byBsb3dQb3dlckNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVh
dGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsK
KyAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVz
IH0pOwogICAgIEFTU0VSVF9ORShsb3dQb3dlckNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0
cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwotICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29u
dGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gaGln
aFBlcmZvcm1hbmNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwog
ICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsKIAogICAgIEVY
UEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446151</attachid>
            <date>2021-12-07 03:37:10 -0800</date>
            <delta_ts>2021-12-10 05:27:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231009-20211207133708.patch</filename>
            <type>text/plain</type>
            <size>120697</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2QxMmRkN2Y2ZDgyZDYy
NTA5ODg0M2ZkNjY4MzU5MTFlODA2ZGI4OC4uMWJmOWEyYWYyZGExYjFhNjY0YWE3YTRlODE3NDhj
ZTA1ZThiOTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAyMS0xMi0wNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtjc3MtZmxleGJveF0gQWNjb3VudCBmb3IgY2FwdGlvbnMgd2hlbiBmbGV4aW5nIHRhYmxl
cyB3aXRoIHNwZWNpZmllZCBzaXplcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlOWEyNDExOTFlYzJiZDA4ZTg5OTEx
NGIzNjIyNTExMmM1YjJlNjAwLi43NTUwNzlmMDJhNjI5YWUwYWQ0YjdkY2NjNzdjMjcyNTc2Y2I0
ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTEyLTA3ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgV2ViR0wgc2hvdWxkIHN1
cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8vODM0MzcwNTk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
Y2FwYWJpbGl0eSB0byBhc3NpZ24gSU9TdXJmYWNlcworICAgICAgICB0byBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUgY29udGVudHMuCisKKyAgICAgICAgTWFrZSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EgdXNlIHRoZSBhZGRlZAorICAgICAgICBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2Fw
VG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRpc3BsYXkpOgorICAgICAgICBDaGFuZ2UgdGhlIGNvbnRyYWN0IG9mIHdoYXQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUgc2VyaWFsaXplcyB0bworICAgICAgICB0aGUgdHJhbnNhY3Rp
b24uIEJlZm9yZSwgaXQgc2VyaWFsaXplZCB0aGUgZnJvbnQgYnVmZmVyLgorICAgICAgICBBZnRl
ciwgaXQgc2VyaWFsaXplcyB0aGUgbV9idWZmZXJIYW5kbGUuCisgICAgICAgIFRoZSBidWZmZXIg
aGFuZGxlIGlzIHByb2R1Y2VkIGJ5IGRpc3BsYXkoKSBwaGFzZSBlaXRoZXIgYnkKKyAgICAgICAg
ZGVsZWdhdGVkIGRpc3BsYXkgc2V0dGluZyB0aGUgY29udGVudHMgb3IgZHJhd2luZyB0bworICAg
ICAgICBmcm9udCBidWZmZXIgYW5kIHRoZW4gYXNzaWduaW5nIHRoZSBmcm9udCBidWZmZXIgaGFu
ZGxlLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpz
ZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyV0M6OnNldENvbnRl
bnRzRGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0wNiAgUGVyIEFybmUgIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgbWFjaCBzZXJ2aWNlIGV4dGVuc2lvbnMg
Zm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDk1OGE2NjE3
Yzc2YjY3ZTVkN2EwYjkxYmEyNzQyNjdlZWRhYTEyZjUuLjUxZGY1YzMwYWI5ZmRjNDU3YzhlMGRi
OWQ2ZGNiYjY3YjNmNThmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTQ1OCw2ICsxNDU4LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyRmFjdG9yeS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGFmYzk2YTBiNjEyMDdhNGRhNzM2MWM1MTMyNGRmNTI3NjMxZTBjOTIuLjc4
MTdkN2ZiMDVlNzM1NzM5Mjg4YmNjYmU4NWQwZTQ4MjUxYzg0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC0zMjcsNyArMzI3LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRl
bGVnYXRlLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRy
YXMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb24ubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDVjMDNiNTI0NDliZDQ3ZWUxM2ViOWZkNjUzOTI4M2RkZWJj
MjgyZWEuLjhiZjZlYzgwMzk1YjFlNDMwMWVhZDA4MTgwYzU2OGFlZTYyYzlhYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0yMDI3LDYgKzIwMjcsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllclRyYW5zZm9ybS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRh
dGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGM3OWZjNGQ3OGM2MjEwNTE4OTYxZWYxYzY0MTMyMzdhNWFjNzQ0MGQu
LjVjY2EwYWMyNmY5ODNmMzFmOGFiMmNjOWY3MTY4OWRlNWUzYWYzZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMzkxLDcgKzM5MSw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExh
eWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJN
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5Zjg1ZTQ5ODZjNTNhMWNjOGQ2M2IzMzk0ZDNm
NzI5NTgzMmFmMzg3Li4zM2FjMzVkZjdkM2Q1ODNjODZkMjc1NjU0Y2FkYzFjYWY3NWIwNzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKQEAgLTIwNDcyLDggKzIwNDcyLDYgQEAgX09CSkNfQ0xBU1NfJF9X
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVs
bFNjcmVlbldhcm5pbmdWaWV3CiBfT0JKQ19DTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93
CiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwotX09CSkNfQ0xBU1Nf
JF9XZWJHTExheWVyCi1fT0JKQ19NRVRBQ0xBU1NfJF9XZWJHTExheWVyCiBfT0JKQ19DTEFTU18k
X1dlYkxheWVyCiBfT0JKQ19NRVRBQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfQ0xBU1NfJF9XZWJT
Y3JpcHRPYmplY3QKQEAgLTMwNjQzLDggKzMwNjQxLDYgQEAgX09CSkNfSVZBUl8kX1dlYkNvcmVG
dWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9leGl0V2FybmluZwogX09CSkNfSVZBUl8kX1dlYkNv
cmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll90YXJnZXQKIF9PQkpDX0lWQVJfJF9XZWJDb3Jl
RnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fYWN0aW9uCiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1
bGxTY3JlZW5XYXJuaW5nVmlldy5fdGV4dEZpZWxkCi1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5t
X2NvbnRleHQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVyLm1fbGF5ZXJPd25lcgogX09CSkNfSVZB
Ul8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaW1wCiBfT0JKQ19JVkFSXyRfV2ViU2NyaXB0T2Jq
ZWN0UHJpdmF0ZS5yb290T2JqZWN0CiBfT0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0
ZS5vcmlnaW5Sb290T2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmY0NTAyZTNlMDI3NDRiNWU2ODY3ODdkMjk2NzcwNmI5
NjU0NTIzOS4uOTgzZWJlYWRhNGNhODU1ZGNlMTRjMDVmNzJhYzQxNDUyYTczYjFlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTQzOSw3ICsxNDM5LDYgQEAKIAkJNDlFQ0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9w
ZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5RUNFQjY2MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDlFRUQxNDUxMDUxOTY5
NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDEzRjEwNTE5Njk0MDAwOTlGQUIg
LyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCAqLzsgfTsKIAkJNDlFRUQxNDcxMDUxOTY5
NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDE0MTEwNTE5Njk0MDAwOTlGQUIgLyog
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKLQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3
MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwREEyRkYxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8q
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTRBMEZGQTlFMUFBRjVFN0UwMDYyODAzQiAvKiBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEEwRkZBOUMxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
MEZGQUEwMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzksNiAr
MjM3OCw3IEBACiAJCTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRH
TENWQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjYwOTRE
RDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVy
Zm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEy
MzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTM2OCw4ICs5MzY4LDYgQEAKIAkJNDlFRUQxNEIxMDUxOTcxOTAw
MDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlFRUQxNEMxMDUxOTcxQTAw
MDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXllci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkMxMjlCMjQxOTAwQUI2MUUxIC8q
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBGRkE5QjFBQUY1RTZDMDA2Mjgw
M0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzOTgsNiArMTEzOTYsNyBAQAogCQk3QjE2
MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgw
QzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5
MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzIwQjBBMjc0M0RCQTYw
MDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcw
MDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8q
IENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENWVXRpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVGMjZGMEMxMjMwMDhB
QzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0
MDksNiArMTE0MDgsNyBAQAogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdy
YXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQkZERUNEMjc0
MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyRDgyNzA1OTlFRjAwRUIy
MTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5H
TEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0
MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI4Njg2LDYgKzI4Njg2LDggQEAKIAkJCQkwRjU4MEIwOTBGMTJBMjY5MDA1MUQ2ODkgLyogR3Jh
cGhpY3NMYXllci5jcHAgKi8sCiAJCQkJMEY1ODBCMEEwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBo
aWNzTGF5ZXIuaCAqLywKIAkJCQkwRjU4MEIwQjBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NM
YXllckNsaWVudC5oICovLAorCQkJCTdCQkZERUNEMjc0MjhGNTQwMEVEMEI3NyAvKiBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwICovLAorCQkJCTdCNzIwQjBBMjc0M0RC
QTYwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLywK
IAkJCQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCAq
LywKIAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIu
Y3BwICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBk
YXRlci5oICovLApAQCAtMjg5OTcsOCArMjg5OTksNiBAQAogCQkJCTJEM0VGNDQ3MTkxNzkxNUMw
MDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXllckV4dHJhcy5tbSAqLywKIAkJCQlDRDVEMjc3NjFFODMx
OEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmggKi8sCiAJCQkJQ0Q1
RDI3NzUxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSAq
LywKLQkJCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovLAotCQkJ
CTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovLAogCQkJCTA3RjVD
RkY0MjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5oICovLAogCQkJ
CTA3RjVDRkYyMjU4MkE0RjgwMDY2MkVGNSAvKiBXZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSAq
LywKIAkJCQk3QjE2MTkxMDI3MTk4ODBFMDBDNDBFQUMgLyogV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EubW0gKi8sCkBAIC0zMzA1MSw2ICszMzA1MSw3IEBACiAJCQlpc2EgPSBQQlhI
ZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2ln
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJz
dHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzQzNzksNiArMzQzODAsNyBAQAog
CQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NM
YXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MjBCMEMyNzQzREJBNzAwMDhBQkVE
IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFDNjk1OTMxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBoaWNzTGF5ZXJGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NM
YXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0Uw
RSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTM3NjE0LDcgKzM3NjE2LDYg
QEAKIAkJCQk1QjMwNjk1RTE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5z
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2Vi
R0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3
MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjFENUJCMTJENTMyQzQw
MDgzMkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUMzNjJE
OTI1QjRDNTQ1MDA5MzdGODUgLyogV2ViR0xNdWx0aURyYXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5QzdCOUQ1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IGI3OWY2YTIwOGQzY2I1ODFmOWFhMmQ1YzI1YjZiYWVhMjIzZjU2N2Iu
LjcyYjJjY2U3NGRiOTcyYjg0YjIwOGRlNzNhODAyZGUyOGRmNmNlM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52
YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtODMsNiArODQsMTEgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0OjpkZXJlZigpCiAgICAgbV9jYW52YXMuZGVyZWZDYW52YXNCYXNlKCk7CiB9
CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQoreworICAgIHJl
dHVybiBudWxscHRyOworfQorCiBQaXhlbEZvcm1hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpw
aXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFBpeGVsRm9ybWF0OjpCR1JBODsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAppbmRleCAzNzIwMDc5MDQ2ZmUwMmY1Njg0NTIwNWQyYTdkZWI5OTc4ZTgwMjNlLi41YWU3OWJm
MGI5ZTM5MGIzYWE2MTUzZDI2MDE4ZDdmYjFiZWM5NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICAvLyB1c2VkIGZvciBjb21wb3NpdGluZyBwdXJwb3Nlcy4KICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7IH0KLSAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZUluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI7IH0KICAgICB2b2lkIHNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0
aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNl
aG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDU3ODY4YjBhMjNiMjIzYmRkZTkx
YzA3OGRiZmQ4NWI5MmRlNWE1NzIuLjQ5Y2U0YWJhNzNmMzhmNzljNDJhNGVmMGY5ZDI4OTFhZDU2
MTM3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVy
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxh
Y2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTEsMTAgKzUxLDEwIEBAIEhUTUxDYW52
YXNFbGVtZW50KiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmNhbnZhcygpIGNvbnN0CiAg
ICAgcmV0dXJuICZkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oYmFzZSk7CiB9CiAKLVBsYXRm
b3JtTGF5ZXIqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6cGxhdGZvcm1MYXllcigpIGNv
bnN0CitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBQbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQogewog
ICAgIGlmIChtX2ltYWdlQnVmZmVyUGlwZSkKLSAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQ
aXBlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRl
cmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDMzZmE4ZjJhZGM3OGI0OWNiZTQ5NzYwYTZjNjZhMzgzNGRm
OTkxOTkuLjBhYzNmN2M0ZmFhNzQ5NWM1Mzk0ZGQzMTE0YTE2YTQyOTk3NGQxODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBp
c1BsYWNlaG9sZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KICAgICBib29sIGlzR1BVQmFzZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IGFjODFkOGM5MzI0NDQ3Y2ViN2ZhMzhlMzNhOTY5YWZjMWEwMzg0YTAuLmNlMDBlNjNhOGZiNzRm
YThjNWZkZTMzYjkyM2M5ZDVmNzE2YzQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgi
CiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNjQ1Miw5ICs2NDUzLDEx
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNDb250ZXh0VW5yZWNvdmVyYWJs
eUxvc3QoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHRMb3N0ICYmICFtX3Jlc3RvcmVBbGxv
d2VkOwogfQogCi1QbGF0Zm9ybUxheWVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoKQogewotICAgIHJldHVybiAoIWlzQ29udGV4dExvc3QoKSAmJiAhbV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKSA/IG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpIDogMDsKKyAgICBp
ZiAoaXNDb250ZXh0TG9zdCgpIHx8IG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGV4dC0+bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJl
bW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmlu
ZGV4IDY1MjRjOTE3Mzc1NzA5YTJjNjUwZTJhYjgxNjEzOWRmNTA1ODE2MDguLmI1NDU3ZTcxMzdm
ODQyNmRjMDMxMDRiNGM0ZTZhM2ZiMjIyNGMzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM4Niw3ICsz
ODYsNyBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHRHTCogZ3JhcGhpY3NDb250ZXh0
R0woKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KICAgICBXZWJHTENvbnRleHRH
cm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0R3JvdXAuZ2V0KCk7
IH0KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDcxYTM4YWYwNmIzNTkx
MjYzYzc0NDJiZGI2ODUwZTZmNjM0NTU5ZjkuLmI1ZjVlY2QzODFjYTkwYTI3ZDhkMmFiNTJkM2Vm
YjI1MmJlZDFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4
Niw3ICs3ODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcwogICAgIH07CiAKLSAgICB2aXJ0dWFs
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgPSAwOwogCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBo
YXNBbHBoYShEYXRhRm9ybWF0IGZvcm1hdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGM3NWRhNTZhODM2MTU2
Y2MwZDVlNWE3ZGYxYmZiMGM0YjJiMjYyYzcuLjQ5MmU0MjZiNjMwNTJmNDQ4Zjc1NzkwNzgzMTll
ZDBiYTZmMmU2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjEyLDYgKzYxMywxMCBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQogewogfQogCit2b2lkIEdyYXBoaWNzTGF5
ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKQoreworfQorCiB2b2lk
IEdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3IsIGZsb2F0JiB3
aWR0aCkgY29uc3QKIHsKICAgICB3aWR0aCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggYmY5NTA5ZjE4Y2NiOTU5OTIzZGQ5
ZjVkNWZiMjUyYmUxOGI5ODk5Yy4uZWI2MzU5ZmUzZjIzNWMxZDM4YmU2MGJhMDY1MDBmNjc4Y2Yx
MzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmlt
YXRpb247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9y
eTsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIGNsYXNzIElt
YWdlOwogY2xhc3MgTW9kZWw7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CkBAIC01MjIsNiArNTIzLDcg
QEAgcHVibGljOgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNv
bnRlbnRzIGxheWVyLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1M
YXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSk7CiAjaWYgRU5B
QkxFKE1PREVMX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChS
ZWZQdHI8TW9kZWw+JiYpIHsgfQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllcklEIGNvbnRlbnRz
TGF5ZXJJREZvck1vZGVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk5ODg5ODZhMmY3Zjhk
ZGY2YjBkOGMyZDM5NDZjM2ZjMTNhMzc2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKKworI2lmIFVTRShDQSkKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ0EuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6fkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpID0gZGVmYXVsdDsKKworI2lmIFVTRShDQSkKK3ZvaWQgR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoUGxhdGZv
cm1DQUxheWVyJikKK3sKK30KKworR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6b3JpZW50
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250
ZW50c09yaWVudGF0aW9uOworfQorI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUxNmNjNjhjZjk1N2E2N2E1MjFmNzM2
MmYyZjc3NzVkNGMwYTc1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCisjaWYgIVVTRShDQSkKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCisjZW5kaWYKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyNpZiBVU0UoQ0EpCitjbGFzcyBQbGF0
Zm9ybUNBTGF5ZXI7CisjZW5kaWYKKworLy8gUGxhdGZvcm0gc3BlY2lmaWMgaW50ZXJmYWNlIGZv
ciBhdHRhY2hpbmcgY29udGVudHMgdG8gR3JhcGhpY3NMYXllci4KKy8vIFJlc3BvbnNpYmxlIGZv
ciBjcmVhdGluZyBjb21wb3NpdG9yIHJlc291cmNlcyB0byBzaG93IHRoZSBwYXJ0aWN1bGFyIGNv
bnRlbnRzCisvLyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgR3JhcGhpY3NMYXllci4KK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSgpOworCisjaWYgVVNFKENBKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURp
c3BsYXkoUGxhdGZvcm1DQUxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoUGxhdGZv
cm1DQUxheWVyJikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdD
b29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Q7CisjZWxzZQorICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgor
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJQaXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclBpcGUuaAppbmRleCA2ZTZkNTczMjZjNjljZDFmYmYzZmFjZWRiYWYwMWNhZTEwOTk1MGU4
Li4zYmVkMWQwYWU2ZTM5MDAzODE2YWRjNzJiOWEwM2Q2NzY3ZTdlZTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaApAQCAtMjYs
NyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAotLy8gVXNlZCB0byBwcm92aWRlIGEg
UGxhdGZvcm1MYXllciBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcu
IGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAorLy8g
VXNlZCB0byBwcm92aWRlIEdyYXBoaWNzTGF5ZXIgY29udGVudHMgZm9yIGFuIGV4dGVybmFsbHkg
bWFuYWdlZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25l
ZCBieSBhIFdvcmtlciB0aHJlYWQKIGNsYXNzIEltYWdlQnVmZmVyUGlwZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEltYWdlQnVmZmVyUGlwZT4gewogcHVibGljOgogICAgIGNsYXNzIFNvdXJjZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2U+IHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsKIAogICAgIHZp
cnR1YWwgUmVmUHRyPFNvdXJjZT4gc291cmNlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKSA9MDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAppbmRleCA0ZTYyMjM5M2My
YWRkMWZlOGQzOWZmYmY0MDRmNTdkMzg5M2JlNjgwLi42NjcwZDAxYmYzN2FiOTA1MDZjZDA1NmY1
NzMyYzMxYThmNmY4YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XaWR0aENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhDYWNoZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDUxOTBhMzg2NTQzMDA3MjAwNTA5Y2Y5MDVi
NzBmNTVkMDdiNTdiNDcuLmExODJjNTI1NGU4MDJjYTc5YTA0YTY3NmFhZGYxYTUxYmQ2MDhlNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0
UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgpAQCAtMTI0Niw2ICsxMjQ3LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQ
dXJwb3NlOjpOb25lOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogICAgIH0K
KyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIGlmIChjb250
ZW50c0xheWVyQ2hhbmdlZCkKICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTEy
NzcsNiArMTI3OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2Uo
SW1hZ2UqIGltYWdlKQogICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKQogICAgICAgICAgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSA9IG51bGxwdHI7CiAKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNJ
bWFnZUNoYW5nZWQpOwogfQpAQCAtMTMwNyw2ICsxMzEwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYgbW9kZWwpCiAgICAgICAgIG1f
Y29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKICAgICAg
ICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSA9IG51bGxwdHI7CiAKICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCiAg
ICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CkBAIC0xMzQzLDYgKzEzNDcsMzEgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsK
IAogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVycG9zZSA6
IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdh
dGUgPSBudWxscHRyOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5nZWQpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkZWxlZ2F0ZSwgQ29udGVudHNMYXll
clB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBpZiAobV9jb250ZW50c0xheWVyICYmIGRlbGVnYXRl
ID09IG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0T3duZXIobnVs
bHB0cik7CisgICAgbV9jb250ZW50c0xheWVyID0gbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRzRGlz
cGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29u
dGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CisgICAgaWYgKGRlbGVnYXRlKSB7CisgICAgICAgIG1f
Y29udGVudHNMYXllciA9IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllciwgdGhpcyk7CisgICAgICAgIG1fY29udGVudHNE
aXNwbGF5RGVsZWdhdGUgPSBXVEZNb3ZlKGRlbGVnYXRlKTsKKyAgICAgICAgbV9jb250ZW50c0xh
eWVyUHVycG9zZSA9IHB1cnBvc2U7CisgICAgICAgIC8vIEN1cnJlbnRseSBkZWxlZ2F0ZWQgZGlz
cGxheSBpcyBvbmx5IHVzZWZ1bCB3aGVuIGRlbGVnYXRlZSBjYWxscyBzZXRDb250ZW50cywgc28g
c2V0IHRoZQorICAgICAgICAvLyBiYWNraW5nIHN0b3JlIHNldHRpbmdzIGFjY29yZGluZ2x5Lgor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKHRydWUpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyh0cnVlKTsKKyAg
ICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5
KCptX2NvbnRlbnRzTGF5ZXIpOworICAgIH0KIAogICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7
CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUGxhdGZvcm1MYXllckNoYW5n
ZWQpOwpAQCAtMTg3OCw2ICsxOTA3LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9y
bUNBTGF5ZXJMb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKHVuc2lnbmVkIGJsYW5rUGl4CiAgICAg
Y2xpZW50KCkubG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZShibGFua1BpeGVsQ291bnQpOwogfQog
Citib29sIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzRGlz
cGxheURlbGVnYXRlICYmIG1fY29udGVudHNMYXllciA9PSBsYXllcjsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyKQoreworICAgIEFTU0VSVChtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKTsKKyAgICBB
U1NFUlQobGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKTsKKyAgICBtX2NvbnRlbnRzRGlzcGxheURl
bGVnYXRlLT5kaXNwbGF5KCpsYXllcik7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSBsYXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXll
cjo6Q3VzdG9tQXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNl
ID09IEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFja2Ryb3AgPyBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllciA6IFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI7CkBAIC0yNzkyLDcgKzI4
MzMsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxheWVy
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGxhdGZvcm0gbGF5ZXIgd2FzIHNldCBhcyBt
X2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxp
c3QoKS4KLSAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAg
ICBhdXRvIG9yaWVudGF0aW9uID0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA/IG1fY29udGVu
dHNEaXNwbGF5RGVsZWdhdGUtPm9yaWVudGF0aW9uKCkgOiBkZWZhdWx0Q29udGVudHNPcmllbnRh
dGlvbjsKKyAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpLCBvcmll
bnRhdGlvbik7CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xh
eWVyUHVycG9zZTo6Q2FudmFzKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlz
cGxheSgpOwpAQCAtNDQxMiwxOSArNDQ1NCwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2hh
bmdlTGF5ZXJUeXBlVG8oUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbmV3TGF5ZXJUeXBlKQog
ICAgICAgICBjbGllbnQoKS50aWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQodGhpcywgaXNUaWxlZExh
eWVyKTsKIH0KIAotR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OlRvcERvd247
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1D
QUxheWVyKiBjb250ZW50c0xheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVu
dHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICAvLyBUdXJuIG9mZiBpbXBsaWNp
dCBhbmltYXRpb25zIG9uIHRoZSBpbm5lciBsYXllci4KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBjb250ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogI2VuZGlmCi0K
LSAgICBpZiAoZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwKSB7CisgICAgaWYgKG9yaWVudGF0aW9uID09IENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKICAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggZmxpcHBlcigKICAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYs
IDAuMGYsCiAgICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5k
ZXggOWQ0NGY2YWIzODBjODg2NjYzNGYzYmY3NDA5ZWVjN2YzOWI0OGQ4Ny4uZjZiMmM5NGNiM2Q2
ZmZhZDAzNWViNzQ5MmEyNTU4MjI1OTJhMDBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1MCw2ICsxNTAs
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogY29udGVudHNM
YXllckZvck1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50
c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJp
ZGU7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSBvdmVycmlkZTsKQEAgLTE5Myw2ICsx
OTUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgZG91YmxlPj4gYWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yVGVzdGluZygpIGNvbnN0IGZp
bmFsOwogCisgICAgY29uc3RleHByIHN0YXRpYyBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50
YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24gPSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb246OlRvcERvd247CisKIHByaXZhdGU6CiAgICAgYm9vbCBpc0dyYXBoaWNzTGF5
ZXJDQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMjEyLDYgKzIxNiw4
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29udGVudHNPcGFxdWUoKTsgfQogICAgIGJvb2wgcGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHJhd3ND
b250ZW50KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBsYXRmb3JtQ0FMYXllckRlbGVn
YXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVy
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxh
dGZvcm1DQUxheWVyKiBsYXllcikgb3ZlcnJpZGUgeyByZXR1cm4gbGF5ZXJEaWREaXNwbGF5KGxh
eWVyKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNU
b1JldmFsaWRhdGVUaWxlcygpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHBs
YXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDAs
MTAgKzMwNiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihmbG9h
dCBwYWdlU2NhbGVGYWN0b3IpIGNvbnN0OwogICAgIHZvaWQgY2hhbmdlTGF5ZXJUeXBlVG8oUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGUpOwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0KLSAgICB2b2lk
IHNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICB2b2lkIHNldHVwQ29u
dGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50
YXRpb24gPSBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbik7CiAgICAgUGxhdGZvcm1DQUxheWVy
KiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9
CiAKICAgICB2b2lkIHVwZGF0ZUNsaXBwaW5nU3RyYXRlZ3koUGxhdGZvcm1DQUxheWVyJiwgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4mIHNoYXBlTWFza0xheWVyLCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0Jik7CkBAIC02NDQsNiArNjQ3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKICAgICBSZWZQdHI8TW9kZWw+IG1fY29udGVudHNNb2RlbDsKICNlbmRpZgorICAgIFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IG1fY29udGVudHNEaXNw
bGF5RGVsZWdhdGU7CiAKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmlt
YXRpb25zOwogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2Jhc2VWYWx1ZVRy
YW5zZm9ybUFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDVkZjFhM2I2MWFiNWQ5N2VkNjNjOGFi
MTg4OGU5ZGRhOTJkMTU4MzQuLjhhMjFhMWQ1Y2Y0MThiYzBiODNhMmM5YWMwMjYwZjk2MjA2MTFh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oCkBAIC0zOSw2ICszOSwxMiBAQCBPQkpDX0NMQVNTIEFWUGxheWVyTGF5
ZXI7CiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKICNlbmRpZgogCitu
YW1lc3BhY2UgV1RGIHsKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIE1hY2hTZW5kUmlnaHQ7
CisjZW5kaWYKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclBvb2w7CkBA
IC00OCw2ICs1NCwxMCBAQCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQ7CiAKIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+PiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OwogCisj
aWYgSEFWRShJT1NVUkZBQ0UpCitjbGFzcyBJT1N1cmZhY2U7CisjZW5kaWYKKwogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFBsYXRmb3JtQ0FMYXllciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTsKQEAg
LTE5MCw2ICsyMDAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ0ZUeXBlUmVmIGNvbnRlbnRz
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpID0g
MDsKIAorI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhj
b25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpID0gMDsKKyNlbmRpZgorCiAgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QmFja2luZ1N0b3JlQXR0YWNoZWQoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaAppbmRleCA2Nzc4ZGU3MTljNTBlMWE0NWZjODI0NmQ3M2E5MDhhYmZiYWQxMzA2Li4x
ZTcyYzQ1NjZlN2FmZWFiNjRkNjZkYTkwNmMwZjE5ZmZkODM5YjFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDliMWIwMTEyMDEzNGNkODU1
ZWM1Y2QxMTQ4YzExMWVmZjdlMDZmZDMuLjgxOTk1N2NhY2RhYjVmMjE4YWYzZTNhZmFlODRhY2Y3
ZTA0OWIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTIwLDYgKzEy
MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29u
dGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2b2lk
IHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5k
aWYKIAogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDM0ZTI1OTBmNTc3Mjk2
YjIyMzliZjI4NjgyZmM3NTZhYzY2OTAzYWEuLjJhNDVkZGM0NThkZTA2N2JhZGIwMWE1N2VkZmIy
YjlhYjk1MzAzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC00MCw3
ICs0MCw2IEBACiAjaW1wb3J0ICJUaWxlZEJhY2tpbmcuaCIKICNpbXBvcnQgIldlYkFjdGlvbkRp
c2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViQ29yZUNBTGF5ZXJFeHRyYXMu
aCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKICNpbXBvcnQgIldlYlZpZGVvQ29udGFpbmVyTGF5
ZXIuaCIKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+CkBAIC01NCw2ICs1Myw3IEBACiAjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYv
TG9jay5oPgorI2ltcG9ydCA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCkBAIC0yMTEsOSAr
MjExLDYgQEAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIoUGxhdGYKICAgICAgICAgJiYgWyhXZWJWaWRlb0Nv
bnRhaW5lckxheWVyKilsYXllciBwbGF5ZXJMYXllcl0pCiAgICAgICAgIHJldHVybiBMYXllclR5
cGVBVlBsYXllckxheWVyOwogCi0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOltXZWJHTExh
eWVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5
ZXI7Ci0KICAgICByZXR1cm4gTGF5ZXJUeXBlQ3VzdG9tOwogfQogCkBAIC0yMzQsNiArMjMxLDcg
QEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBs
YXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXll
clR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIExheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXll
cjoKKyAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgbGF5
ZXJDbGFzcyA9IFtXZWJTaW1wbGVMYXllciBjbGFzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0yNjUsMTAgKzI2Myw2IEBAIFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQ
bGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGlmIChQQUw6OmlzQVZGb3VuZGF0aW9uRnJhbWV3b3Jr
QXZhaWxhYmxlKCkpCiAgICAgICAgICAgICBsYXllckNsYXNzID0gUEFMOjpnZXRBVlBsYXllckxh
eWVyQ2xhc3MoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMYXllclR5cGVDb250ZW50c1By
b3ZpZGVkTGF5ZXI6Ci0gICAgICAgIC8vIFdlIGRvbid0IGNyZWF0ZSBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYXMgd3JhcHBlZCBhcm91bmQgV2ViR0xMYXllcnMuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBj
YXNlIExheWVyVHlwZU1vZGVsTGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbQ0FMYXllciBj
bGFzc107CkBAIC0zMTAsNyArMzA0LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29t
bW9uSW5pdCgpCiAgICAgfQogICAgIAogICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5p
bWF0aW9ucyBvbiB0aGUgQ0FMYXllcgotICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVB
VlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBt
X2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCisgICAgaWYgKG1fbGF5ZXJUeXBlID09IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29u
dGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBb
bV9sYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogICAgIGVsc2UKICAgICAgICAgW21fbGF5
ZXIgc2V0RGVsZWdhdGU6W1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZSBzaGFyZWRd
XTsKQEAgLTc5Nyw2ICs3OTEsMTkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29u
dGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0K
IAorI2lmIEhBVkUoSU9TVVJGQUNFKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29u
dGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIHNldENvbnRl
bnRzKHN1cmZhY2UuYXNMYXllckNvbnRlbnRzKCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5k
bGUpCit7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgc2V0Q29udGVudHMoKnN1cmZhY2UpOworfQor
I2VuZGlmCisKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzUmVjdChjb25z
dCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IGE2NDhmY2QyZWM0ZjBiOWI1MWUzMDIz
NjllMDEyNDliNTJkOWI0ZTQuLjkxM2MwZjRhNTJkMGQxYWUwMzliZDhlMzI2Njg3OGZhNTEyZmFm
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIG92ZXJyaWRlcy4K
LSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZSgpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29s
IGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0
dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9y
bWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbCBmbGlwWSkgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCmluZGV4IGE0YWVlM2RmYWIwZjc3YTJmZWM1YjVjZGZkY2ZiODJlNDBlNDExZTYuLmFmNWRh
ZmI2MjIzMjllNGFiZTA0ZjI0OWFmZGQ0ZjI5YzIzZTVlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbQpAQCAtNDY3LDExICs0NjcsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBtX3RleHR1cmU7CiB9CiAKLVBsYXRm
b3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRPYmopCkBAIC03OTks
NiArNzk0LDExIEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cGxhdGZvcm1Db25maWcoKSBjb25zdAogICAgIHJldHVybiBtX2NvbmZpZ09i
ajsKIH0KIAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkYTBmZTBmNDRhM2E4NDQwZTY2Mzll
YTlkN2UwYTg5NjA2ODhlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQotLy8gQSBsYXll
ciBjbGFzcyBzaG93aW5nIG9uZSBJT1N1cmZhY2UuCi1XRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzoo
ZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9vbCljb250ZW50c09wYXF1
ZTsKLQotQGVuZAotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTkwMzE1NTY5MTExMzZjMzFmNWQ2OGVlMjQz
ZjY3ZWY2NmRlOGM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoV0VCR0wpCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgotI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHTExheWVyCi0KLS0gKGlkKWluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzooZmxvYXQpZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTooYm9v
bCljb250ZW50c09wYXF1ZQotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgc2VsZi50
cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNESWRlbnRpdHk7Ci0gICAgc2VsZi5jb250ZW50c09wYXF1
ZSA9IGNvbnRlbnRzT3BhcXVlOwotICAgIHNlbGYuY29udGVudHNTY2FsZSA9IGRldmljZVBpeGVs
UmF0aW87Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS8vIFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNl
IGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZsaXAgdGhlCi0vLyBsYXllciB0byB0YWtl
IGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2UgcHJvdmlkZXMgY29udGVudAotLy8gaW4g
WS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWluZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBz
aW5jZQotLy8gdGhpcyBpcyBhIGNvbnRlbnRzIGxheWVyKSBhbmQgYW5jaG9yIHBvaW50IG11c3Qg
YWRkIGEgWSBzY2FsZSBvZgotLy8gLTEgYW5kIG1ha2Ugc3VyZSB0aGUgdHJhbnNmb3JtIGhhcHBl
bnMgZnJvbSB0aGUgdG9wLgotCi0tICh2b2lkKXNldFRyYW5zZm9ybTooQ0FUcmFuc2Zvcm0zRCl0
Ci17Ci0gICAgW3N1cGVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNEU2NhbGUodCwgMSwgLTEs
IDEpXTsKLX0KLQotLSAodm9pZClzZXRBbmNob3JQb2ludDooQ0dQb2ludClwCi17Ci0gICAgW3N1
cGVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHAueCwgMS4wIC0gcC55KV07Ci19Ci0KLS0g
KHZvaWQpZGlzcGxheQotewotICAgIC8vIFNob3cgdGhlIHNlbGYuY29udGVudHMgYXMgdGhlIGNv
bnRlbnRzIGJ5IG5vdCBkb2luZyBhbnl0aGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGF1dG8g
bGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVy
KChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
Ci0gICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXko
bGF5ZXIuZ2V0KCkpOwotCi19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMjU0
MjYyMzBkZmVkYWQyYzVlYjkxMDQyNGEwOGE3MmUzNzE3YjJkNy4uMzEzODU4YjhmNTdkYWI4ZDEw
YTZhYjYyODE3ZTg3NTQwZWYzODA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTI5LDggKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCR0wp
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTENvY29hLmgiIC8vIE5PTElOVAogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgi
Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCAiUGxhdGZvcm1D
QUxheWVyLmgiCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJEaXNwbGF5Q29uZmlndXJh
dGlvbk1vbml0b3IuaCIKQEAgLTM5LDQ2ICszOCw4MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExh
eWVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAg
ICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi0gICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhE
ZXZpY2VQaXhlbFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1
ZTohYXR0cmlidXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFt
ZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0gICAgcmV0dXJuIGxheWVyOwotfQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0
ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3Jl
YXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVl
LCBjb250ZW50c1NjYWxlKSk7CisgICAgfQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlz
cGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIu
c2V0T3BhcXVlKG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1f
Y29udGVudHNTY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXll
ciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAg
ICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMoKm1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKworICAg
IEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAg
ICB2b2lkIHNldERpc3BsYXlCdWZmZXIoSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKQorICAgIHsK
KyAgICAgICAgaWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZm
ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlC
dWZmZXItPnN1cmZhY2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5
QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBj
b250ZW50c1NjYWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwg
bV9jb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0
IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3Jh
cGhpY3NDb250ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJv
Y2VzcyBpbiBXZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICwgcHJpdmF0ZSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNs
aWVudAogI2VuZGlmCi0KIHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EoKTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0Nv
bnRleHRHTENvY29hOjppc1ZhbGlkKCkgJiYgbV93ZWJHTExheWVyOyB9CisKICAgICAvLyBHcmFw
aGljc0NvbnRleHRHTENvY29hIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4o
bV93ZWJHTExheWVyLmdldCgpKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJl
dHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAvLyBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudCBvdmVycmlkZXMuCiAgICAg
dm9pZCBkaXNwbGF5V2FzUmVjb25maWd1cmVkKCkgZmluYWw7CiAjZW5kaWYKLQogICAgIFdlYlBy
b2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYm
KTsKLSAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogCisgICAgUmVmPERp
c3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZTsKICAgICBmcmllbmQgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVX
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJik7CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogfTsKIAog
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OldlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAg
OiBHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpCi0gICAgLCBtX3dl
YkdMTGF5ZXIoY3JlYXRlV2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkKKyAgICAsIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRl
OjpjcmVhdGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvcjo6
c2luZ2xldG9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKQEAgLTk1LDEzICsxMzEsNyBAQCBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6fldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENv
Y29hKCkKIHZvaWQgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JE
aXNwbGF5KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxh
eSgpOwotICAgIGF1dG8gc3VyZmFjZSA9IG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJm
YWNlLmdldCgpOwotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6c3Vy
ZmFjZS0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmVlZHNEaXNw
bGF5XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKGRpc3BsYXlCdWZmZXIoKSk7CiB9CiAK
ICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRU
cmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KaW5kZXggZWIwNGUyMDY1NmY1YmJhN2JmZmUwMTNh
OGQ2YmQ5ZDE1NGU2MGM0OS4uMzM5YzZmZjlkMjQyNWJiYjcwZmZhZWM0YTI3MjIyYWRkMzkzYTMz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUlt
YWdlQXBwbGllci5tbQpAQCAtMjksNiArMjksOSBAQAogI2lmIFVTRShDT1JFX0lNQUdFKQogCiAj
aW1wb3J0ICJGRUNvbXBvbmVudFRyYW5zZmVyLmgiCisjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250
ZXh0Lmg+CisjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lGaWx0ZXIuaD4KKyNpbXBvcnQgPENvcmVJbWFn
ZS9Db3JlSW1hZ2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IGFjZjk2ZmQw
ZDU0MGFiODZlNzcwZDQ2MTNjMTkwYTIyODNiNzA1ZjAuLjMyNmYwNDMyYjQ4NjIyMTk2MmM3NWVm
YzZkZTAxZWQ4YWRjOWU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNv
bG9yU3BhY2VDRy5oIgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3Rm
L2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KaW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNj
NTQyYy4uM2UxYTRmZDI2NzkxOTUxMDk5YThiMzgwMjJmNTg1ZmRhMzllOGU1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEs
OCArODEsMTEgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJp
ZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkgJiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0
ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXRO
ZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0
KWRpcnR5UmVjdApAQCAtOTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigp
KSB7Ci0gICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSkgeworICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KCkgfHwgbGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9y
bUxheWVyLmdldCgpKSkgewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVj
dDpkaXJ0eVJlY3RdOwogCiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMDMsNiAr
MTA2LDcgQEAKICAgICAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Omlu
ZGljYXRvclJlY3RdOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAogICAgIH0K
IH0KIApAQCAtMTEzLDEwICsxMTcsMTQgQEAKICAgICAgICAgV2ViVGhyZWFkTG9jaygpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBbc3VwZXIgZGlzcGxheV07CiAg
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lciA9IGxheWVyID8gbGF5ZXItPm93bmVyKCkgOiBudWxscHRyOworICAgIGlmIChvd25l
ciAmJiBvd25lci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShsYXllci5nZXQoKSkp
CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIGVsc2UKKyAgICAgICAgW3N1cGVyIGRpc3BsYXldOworICAgIGlmIChvd25lcikKKyAg
ICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7
CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDMzMDI4YTVlOTRjOWNlNzA0YTEz
OGYwM2I5MzRkYzExZTI5ZGUzNGQuLjJmNzRkMGViYWRiN2Q4MmU5MjBkNDI4Y2Q5ZTE5Y2Y2ZGRl
MzYwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtNDQsMTYg
KzQ0LDE4IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKK25hbWVzcGFjZSB7CiBjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlIGZpbmFs
IDogcHVibGljIEltYWdlQnVmZmVyUGlwZTo6U291cmNlLCBwdWJsaWMgQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZSgpOwogICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2Uo
KTsKIAorICAgIC8vIEltYWdlQnVmZmVyUGlwZTo6U291cmNlIG92ZXJyaWRlcy4KICAgICB2b2lk
IGhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCisgICAgQ29udGVudExheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Cisg
ICAgLy8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCBvdmVycmlkZXMuCiAg
ICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q29u
dGVudExheWVyPiBtX25pY29zaWFMYXllcjsKQEAgLTYyLDE2ICs2NCwzOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKIH07CiAKLWNsYXNzIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK2NsYXNz
IFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlKCk7Ci0gICAgdmlydHVhbCB+Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpID0gZGVmYXVsdDsK
KyAgICBzdGF0aWMgUmVmPFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShSZWZQdHI8
Q29udGVudExheWVyPiYmIG5pY29zaWFMYXllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShuaWNvc2lhTGF5ZXIp
KSk7CisgICAgfQogCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
IG92ZXJyaWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRy
PEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBzb3VyY2UoKSBjb25zdCBmaW5hbDsKLSAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUGlwZVNvdXJjZURp
c3BsYXlEZWxlZ2F0ZShSZWZQdHI8Q29udGVudExheWVyPiYmIG5pY29zaWFMYXllcikKKyAgICAg
ICAgOiBtX25pY29zaWFMYXllcihXVEZNb3ZlKG5pY29zaWFMYXllcikpCisgICAgeworICAgIH0K
KworICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOworfTsKKworY2xhc3Mg
Tmljb3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgewor
cHVibGljOgorICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKQorICAgICAgICA6IG1fc291cmNl
KGFkb3B0UmVmKCpuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSkpCisgICAgICAgICwg
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU6
OmNyZWF0ZShtX3NvdXJjZS0+cGxhdGZvcm1MYXllcigpKSkKKyAgICB7CisgICAgfQogCi0gICAg
UmVmUHRyPE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U+IG1fc291cmNlOworICAgIC8vIElt
YWdlQnVmZmVyUGlwZSBvdmVycmlkZXMuCisgICAgUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291
cmNlPiBzb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZS5wdHIoKTsgfQorICAg
IFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUucHRyKCk7IH0KK3ByaXZhdGU6CisgICAgUmVmPE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2U+IG1fc291cmNlOworICAgIFJlZjxQaXBlU291cmNlRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlU291cmNlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCkKQEAgLTEzNSwzMCArMTU5
LDEwIEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgbV9pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKIH0KIAotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6cGxh
dGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOwot
fQotCiB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQoKQogewogfQogCi1OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlKCkKLXsKLSAgICBtX3NvdXJjZSA9IGFkb3B0UmVmKG5ldyBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlU291cmNlKTsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlOjpzb3VyY2UoKSBjb25zdAotewotICAgIHJldHVybiBtX3NvdXJjZTsK
LX0KLQotUGxhdGZvcm1MYXllciogTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6cGxhdGZvcm1MYXll
cigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc291cmNlKQotICAgICAgICByZXR1cm4gbV9zb3VyY2Ut
PnBsYXRmb3JtTGF5ZXIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBiYTlkNWFm
OTBkNzQ4NWE3NjQzNTY5MmRiNTYwYWJiZTlkODE1MDViLi5mMmE3OTI4ZDVlZTUyYjYwMzM2NjFj
NTkxN2U3ZTI3YjJjMjI2ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHRleEltYWdlMkRSZXNvdXJjZVNh
ZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IGFsaWdubWVudCA9IDQpOwogCisg
ICAgLy8gR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgogICAgIGJvb2wgaXNHTEVTMkNvbXBs
aWFudCgpIGNvbnN0IGZpbmFsOwogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEVudHJ5IHBv
aW50cyBmb3IgV2ViR0wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXIuY3BwCmluZGV4IDk3NmUzYWJlNWJiM2FjNDBhZjhmMjBjOWVlNGVlOGEyNTUzYjBhNDcu
Ljc1MGE4NGFmNjM4MmM1NDEzMGNmMzZlODZkOWJjOGM3NjA0Y2ZiY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHQ0dMUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNzksNiAr
ODAsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCitjbGFzcyBQ
bGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRmb3JtTGF5ZXJEaXNw
bGF5RGVsZWdhdGUocGxhdGZvcm1MYXllcikpOworICAgIH0KKworICAgIC8vIEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0
Zm9ybUxheWVyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9y
bUxheWVyKHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXIq
IG1fcGxhdGZvcm1MYXllcjsKK307CisKK30KKwogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcj4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVz
KSkpOwpAQCAtODgsNyArMTE1LDE3IEBAIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6
fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKIAogR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKICAgICA6IEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckJhc2UoV1RGTW92ZShhdHRyaWJ1dGVzKSkKKyNpZiBVU0UoTklD
T1NJQSkKKyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlOjpjcmVhdGUoJm1fbmljb3NpYUxheWVyLT5jb250ZW50TGF5ZXIoKSkp
CisjZWxzZQorICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtX3RleG1hcExheWVyLmdldCgpKSkKKyNlbmRpZgor
eworfQorCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KQogeworICAgIHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7CiB9
CiAKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKQEAg
LTEyMywxNSArMTYwLDYgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gY29u
dGV4dDsKIH0KIAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICByZXR1cm4g
Jm1fbmljb3NpYUxheWVyLT5jb250ZW50TGF5ZXIoKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fdGV4
bWFwTGF5ZXIuZ2V0KCk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBS
ZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5oCmluZGV4IGI0MGU3OTgzM2U4MTEwZjVkMDk3ZWFkM2I1
MzFmMWU2MmQ2ZDhkMWIuLjJkYjJlOGQ3ZDljZDdiOWNhYmI0YzljYTQxNzI0M2YwZTdhMGI1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
KTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVz
LgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBS
ZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29w
eVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUs
IEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOworICAgIFJlZjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDNkN2I4
NjM5NjZkN2E5NzRiMDEzNjBhM2M1MmFjY2NlMTNjNjBjNGIuLmU5OTQyNTQ0YmZlOTA5NDRjMzUw
ZDEzOWM4NTNjOTdmZDY0MDMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcApAQCAtMzQyLDYgKzM0MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihUZXh0dXJlTWFwcGVyUGxhdGZvcgog
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENsaWVudCh0aGlzKTsKIH0KIAordm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUs
IENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1M
YXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9y
bUxheWVyLCBwdXJwb3NlKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wgc2hvdykKIHsKICAgICBpZiAoaXNTaG93aW5nRGVidWdC
b3JkZXIoKSA9PSBzaG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApp
bmRleCBhMTAzNGRhNGE4YjRkMjM0YTNmNDFkMWJhMzE3Y2ZmYWExODYxMjk4Li4wYzg5YmEzYTU5
NDhjNDE4YzEyNzllZmFkN2E5NWE5NThlODBlYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgi
CkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3Qg
Q29sb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBs
YXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgYm9v
bCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNM
YXllcjsgfQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBhNzQ5MDdjZTFjYjcw
MWI3ODcwZDA4YmJjY2UwNDIzN2Q4YTRhMzlmLi4wNTQxNmE1MDAxNWI2ZmMxY2Q1NTAzMTA5MjEy
ZDM2NWViZjc5ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0
UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIk5pY29zaWFC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5pY29zaWFDb21wb3Np
dGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaCIKQEAgLTQ5OSw2ICs1MDAsMTIgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3IKICNlbmRpZgogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiBkaXNwbGF5RGVsZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJw
b3NlIHB1cnBvc2UpCit7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGRpc3Bs
YXlEZWxlZ2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsK
KyAgICBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsK
K30KKwogYm9vbCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZpbHRlcnNDYW5CZUNvbXBvc2l0
ZWQoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBpZiAoIWZp
bHRlcnMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCmluZGV4IDY4OTZjNWU1YjAyNDM4M2Q3NTk1Nzg5MWM5NWIwYzdjZmQ3
NWI0Y2QuLjk3ZGVjNTliZjE3OTE4YTJjYzgyMGQ0NjVmZTA1YjBlM2ZlMjc2YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAg
LTk3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJv
b2wpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3NpdGVJbWFnZShJbWFn
ZSopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
UGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IGMzOWMzMTI0ZTg1NDJh
Zjk1MTk3MTc4NGI4MGYyMDRjODE5NWZjZTguLmQzMGI0ZTQxMGVmYzhhNGMwNDZkNmJmNTJjOWVm
MTc5OTcxMGRhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAorI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVy
LmgiCiAjaW1wb3J0ICJMZWdhY3lUaWxlR3JpZC5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWRU
aWxlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmll
d0lPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCmlu
ZGV4IGI0ZDJmZDlkZDVjNTJlZmI5N2MzMWRkN2QwNDVkMzk5OWZlNGJmNDEuLjlhOWU2MTk1MTVl
ZTcwMmNlNzQyMTkxMTVhMzhjMzUwOTdmYmE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCkBAIC00MSw4ICs0MSw2IEBACiAjaW1wb3J0ICJXZWJD
b3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBOU1Nj
cm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4gKlNjcm9sbFZpZXc6OnNjcm9sbFZpZXco
KSBjb25zdApAQCAtMjA2LDcgKzIwNCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRD
b250ZW50c1NpemUoKQogI2Vsc2UKICAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVk
XG4iLCBkb2N1bWVudFZpZXcoKSwgTlNTdHJpbmdGcm9tQ2xhc3MoW2RvY3VtZW50VmlldygpIGNs
YXNzXSksIHcsIGgpOwogI2VuZGlmCi0gICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2Fz
dDxDR0Zsb2F0PihtYXgoMCwgdykpLCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtYXgoMCwgaCkpIH07
IC8vIHdvcmthcm91bmQgZm9yIDQyMTMzMTQKKyAgICBOU1NpemUgdGVtcFNpemUgPSB7IHN0YXRp
Y19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3Rk
OjptYXgoMCwgaCkpIH07IC8vIHdvcmthcm91bmQgZm9yIDQyMTMzMTQKICAgICBbZG9jdW1lbnRW
aWV3KCkgc2V0Qm91bmRzU2l6ZTp0ZW1wU2l6ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQpAQCAtMjIzLDcgKzIyMSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgTlNQb2ludCBmbG9hdFBvaW50ID0gc2Nyb2xsUG9p
bnQ7Ci0gICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxP
cmlnaW5dLngsIGZsb2F0UG9pbnQueCksIG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5d
LnksIGZsb2F0UG9pbnQueSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFy
b3VuZCA0MjEzMzE0LgorICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBzdGQ6Om1heCgtW3Njcm9s
bFZpZXcoKSBzY3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQueCksIHN0ZDo6bWF4KC1bc2Nyb2xs
VmlldygpIHNjcm9sbE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9OyAvLyBEb24ndCB1c2UgTlNN
YWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Ny
b2xsUG9pbnQ6dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KaW5kZXggMWJiYTRlMmFkYzlmNmEx
NmZiYzYzYzA5NjkzZTVjNjYxZjdkZDU0Yi4uNzUyMDUyMzlkNjhjYjVjYWJlMjBlM2U4N2I1MGEy
MzA2MmFlMzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQpAQCAt
MzEsOCArMzEsNiBAQAogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaAppbmRleCAxZjBjMDlmMWQ1NDUzMDg3NTU3YzFlMjBiMWE4YTUwZGY5OTEwY2FkLi40MjM0
MTE2OWVkZDBlM2U3NDhlNzcyODkwNTUzNDEyMzg3Y2Y2Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNl
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2Nh
bGl6ZWREYXRlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xv
Y2FsaXplZERhdGVDYWNoZS5tbQppbmRleCA5Mzg0ZDAyZGM3MGM0OWNjYTFjNjM1ZTVlODg2YzQz
ZWQ5M2Q5YzJiLi5lMGRiODI3ZjQwODRlNzc3MmM0ZDA1NGE5YTgzODhlYjI4ZjllZmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVD
YWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXpl
ZERhdGVDYWNoZS5tbQpAQCAtMzQsOCArMzQsNiBAQAogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTG9jYWxpemVkRGF0ZUNhY2hlJiBsb2NhbGl6
ZWREYXRlQ2FjaGUoKQpAQCAtMTY2LDcgKzE2NCw3IEBAIGZsb2F0IExvY2FsaXplZERhdGVDYWNo
ZTo6Y2FsY3VsYXRlTWF4aW11bVdpZHRoKERhdGVDb21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBN
CiAgICAgICAgIFtjb21wb25lbnRzIHNldE1vbnRoOihpICsgMSldOwogICAgICAgICBOU0RhdGUg
KmRhdGUgPSBbZ3JlZ29yaWFuIGRhdGVGcm9tQ29tcG9uZW50czpjb21wb25lbnRzLmdldCgpXTsK
ICAgICAgICAgTlNTdHJpbmcgKmZvcm1hdHRlZERhdGUgPSBbZGF0ZUZvcm1hdHRlciBzdHJpbmdG
cm9tRGF0ZTpkYXRlXTsKLSAgICAgICAgbWF4aW11bVdpZHRoID0gbWF4KG1heGltdW1XaWR0aCwg
bWVhc3VyZXIubWVhc3VyZVRleHQoU3RyaW5nKGZvcm1hdHRlZERhdGUpKSk7CisgICAgICAgIG1h
eGltdW1XaWR0aCA9IHN0ZDo6bWF4KG1heGltdW1XaWR0aCwgbWVhc3VyZXIubWVhc3VyZVRleHQo
U3RyaW5nKGZvcm1hdHRlZERhdGUpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1heGltdW1XaWR0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggYTc4NGRiYmI4MzdmN2I3ZTQxN2IyNjliNmI3MGJjOTI3MjM0ZDUxZC4uNjk1MGExZTBl
NTMyMDE4MTA3ZDVmZGY4YTVhN2JiYzUxNzA1NDAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTEwODksNyArMTA4OSw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0aW9uKGNvbnN0IFJlbmRlckxh
eWVyKiBjb21wb3NpdGluZ0FuY2VzCiAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0NhbnZhcygp
ICYmIGNhbnZhc0NvbXBvc2l0aW5nU3RyYXRlZ3kocmVuZGVyZXIoKSkgPT0gQ2FudmFzQXNMYXll
ckNvbnRlbnRzKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwogICAgICAg
ICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKQotICAgICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihjb250ZXh0
LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpD
YW52YXMpOworICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShjb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCksIEdyYXBoaWNz
TGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpOwogCiAgICAgICAgIGxheWVyQ29u
ZmlnQ2hhbmdlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhZTMx
N2IxNTIxMDg0N2U3ZWFlZjg5NzRhMDI3ODdmYjExMGQ5MjMyLi4xNTllNTA1Njc3MDQzMzAxZmQx
OTg1MGMzNDk3NDZmNzU5ODEyZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNzQsNyAr
NzQsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
LT5wbGF0Zm9ybUxheWVyKCk7IH0KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBsYXllcmluZyB2aW9s
YXRpb24gYW5kIHNob3VsZCBiZSByZW1vdmVkLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5jcHAKaW5kZXggMTBhNTM2Mjk5Y2YyM2ViOWY4NmY1NzI3ZTg1MjM4M2NlOGEw
NDAwOC4uYjhhYTlmZDU1MWE4OGE2YzNjMGE2MmE3Mjk0MGZhM2QyYzQ0MTY3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV1RGOgogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAg
ICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIElPU3VyZmFjZSogZGlzcGxh
eUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIE1hY2hTZW5kUmlnaHQg
c2VuZFJpZ2h0OworICAgIElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlciA9IG1fY29udGV4dC0+ZGlz
cGxheUJ1ZmZlcigpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIG1fY29udGV4
dC0+bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05F
UlNISVBfSURFTlRJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAppbmRleCAyMjRm
YTE4YzgxNTkyNjJmZWYzZGU4ZWU1MDdhNWI3ZDdkNzlkYjk4Li45ZGY4M2Y0NjA3Y2M5OGMwZDhm
YjdlZGY2N2VkNmY3Yjg5NzgxYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAK
QEAgLTY1LDYgKzY1LDEzIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVG
b3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKK1BsYXRmb3JtTGF5
ZXIqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRm
b3JtTGF5ZXIoKTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaAppbmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi5j
NmE3ODRkNmQxOTNkMDhhZTZjMDliNmZhN2U4OTM2OTU5OTIyNDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVk
c0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoKTsKIAorICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFj
ZUhhbmRsZSk7CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2J1ZmZlckhh
bmRsZS5oYXNfdmFsdWUoKTsKICAgICB9CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNDY2YjY2ZDc4MzZhM2QxN2Uw
NWQ0ZThmMjFkYzNiMGE1ZGEzZmZjZC4uOTM3YTk1YzU2Y2UxNzUzNGIxMWZjZmI1YTQ4ZGUxYjky
NWQ1MGYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMTAwLDYgKzEwMCw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUJhY2tpbmdTdG9yZShUeXBl
IHR5cGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKIHsKKyAgICBtX2J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2Zyb250QnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX2JhY2tCdWZmZXIuZGlz
Y2FyZCgpOwogICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5kaXNjYXJkKCk7CkBAIC0xMTIsMjYg
KzExMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIg
PDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCi0g
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKLSAgICBp
ZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewotICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlmIChhdXRvKiBi
YWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQo
KSkgewotICAgICAgICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5N
YXBCYWNraW5nU3RvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQmPigqYmFja2Vu
ZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFR5cGU6OkJpdG1hcDoKLSAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAg
ICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbmNvZGVyIDw8
IGhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVySGFuZGxlOwogCiAjaWYgRU5BQkxFKENH
X0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBkaXNwbGF5TGlzdEhhbmRsZTsKQEAgLTIyMCw2ICsyMDIs
NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVy
KCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fYnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0
OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYg
KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNDAsMTMgQEAgYm9vbCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0
dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAK
K3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRS
aWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fYnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50
cyk7CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRp
bmdSZWN0cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNw
bGF5KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAt
MjY3LDYgKzI1NywxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkK
ICAgICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRl
eHQoKSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2lu
Z1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAg
ICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1f
bGF5ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBw
cmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBk
aXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZm
ZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKQEAgLTMyNyw2ICszMjMs
MjAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1f
ZnJvbnRCdWZmZXJGbHVzaGVycy5hcHBlbmQobV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdl
QnVmZmVyLT5jcmVhdGVGbHVzaGVyKCkpOwogI2VuZGlmCiAKKyAgICBzd2l0Y2ggKG1fdHlwZSkg
eworICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAg
ICAgICAgICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5jYW5NYXBCYWNraW5nU3Rv
cmUoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlckhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpCaXRtYXA6
CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+
ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIG1fYnVmZmVySGFuZGxlID0gc3Rh
dGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNr
ZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KaW5kZXggYmQ4ZmI5YzNlMTk2ZmQxYTdmOTQ0MzI0YTBiNzNhYWViMzhlODkxYi4uY2Ex
MTM1NmUxNTExYTkyYzlmOTc5N2NmYWM5NzdlYTc2YTE0NzUyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTAzNSw5ICsxMDM1LDYgQEAgU3RyaW5nIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNl
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKICAgICAg
ICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdD
b250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKLSAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVy
Lmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAg
ICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3Rp
bmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQppbmRleCA3OTQwM2ExYmFmNjNiYzM0ZmYzYTdkZmU2ZmM3MzZkZGE4NWVj
YzljLi40MzUwZjljYWI0Y2NiY2QzYmNkMmQ2NWZkMWNlMDk2YmU5Nzk5MmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk2LDYgKzI5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBS
ZW1vdGVMCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZU1vZGVsTGF5ZXI6CiAjZW5kaWYKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gUmVtb3Rl
TGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklEKTsK
IAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAg
LTMxMiw3ICszMTMsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVt
b3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2VuZGlmCiAgICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBpZiAobV9pc0RlYnVnTGF5
ZXJUcmVlSG9zdCkKICAgICAgICAgICAgIHJldHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVh
dGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwogICAgICAgICByZXR1cm4gbWFr
ZVdpdGhMYXllcihbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpwcm9wZXJ0
aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbQppbmRleCAzNmQ1NWUzZjRkY2NmYTAzZmQzNmUxZWNkMGRjMDY4MGU2MDExOWMzLi4w
YjFiZDA0ZTBhYjQxYTU1NWUxNDIxMjIyN2IzYWNmMGZiOGVlN2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC01NSw2ICs1NSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShj
b25zdCBSZW1vdGVMCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxh
eWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXll
cjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xh
eWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyhbW1dLQ29tcG9zaXRp
bmdWaWV3IGFsbG9jXSBpbml0XSkpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKQEAgLTc0LDcgKzc1LDYgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNv
bnN0IFJlbW90ZUwKIAogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAg
ICAgICAgaWYgKCFtX2lzRGVidWdMYXllclRyZWVIb3N0KSB7CiAgICAgICAgICAgICBhdXRvIHZp
ZXcgPSBhZG9wdE5TKFtbV0tVSVJlbW90ZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybwogICAgICAgICAgICAgICAgIHBpZDptX2RyYXdpbmdBcmVhLT5wYWdlKCkucHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZGEx
NzQ5MjliMDk0NWMxNmI3NGQwODhhZjkwYzczNGEzYWQxN2Q5Li4wOWQxNGE4YTc1ZGE2NDA3NmZj
YzI0MWZjMTQ2MDE2MzA2Y2EzMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUwMjEsNiArNTAyMSw3IEBACiAJCTdCNDgzRjFDMjVD
RERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJl
Y2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFF
MjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjUzMDBFNzI3MTgyMTdBMDAwODIwODYgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMx
MjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQppbmRleCAxNDI0ZWY4YTBm
M2JkOWY2NTY2OWZmN2U4NzE2MjcyZjlhNTVhZWI1Li40YTRlMDM5M2JhNWQ3MTQ4MjM1YjYyM2Ix
NTQ0M2JmOTYwOWUxODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbQpAQCAtMzIsMjQgKzMyLDY5IEBACiAjaW1wb3J0ICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dENHLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkdMTGF5
ZXIuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BsYXRmb3JtQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNl
IHsKIAotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIGZpbmFsIDogcHVi
bGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworY2xhc3MgRGlzcGxheUJ1ZmZlckRp
c3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGljOgotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViR0xMYXllcjsgfQotICAgIFdlYkNvcmU6OklPU3VyZmFjZSogZGlzcGxheUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlci5nZXQoKTsgfQorICAgIHN0YXRp
YyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wgaXNPcGFxdWUs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50c1NjYWxlKSk7
CisgICAgfQorCisgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIu
c2V0T3BhcXVlKG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1f
Y29udGVudHNTY2FsZSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwbGF5KFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVm
ZmVyKQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobV9kaXNwbGF5QnVmZmVyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAg
fQorCisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b246OkJvdHRvbVVwOworICAgIH0KKworICAgIHZvaWQgc2V0RGlzcGxheUJ1ZmZlcihjb25zdCBN
YWNoU2VuZFJpZ2h0JiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5
QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSB7IH07CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBkaXNw
bGF5QnVmZmVyLnNlbmRSaWdodCgpID09IG1fZGlzcGxheUJ1ZmZlci5zZW5kUmlnaHQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0gZGlzcGxheUJ1ZmZl
ci5jb3B5U2VuZFJpZ2h0KCk7CisgICAgfQogCitwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAg
ICAgOiBtX2lzT3BhcXVlKGlzT3BhcXVlKQorICAgICAgICAsIG1fY29udGVudHNTY2FsZShjb250
ZW50c1NjYWxlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBib29sIG1faXNPcGFxdWU7Cisg
ICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNw
bGF5QnVmZmVyOworfTsKKworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
IGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgeworcHVibGljOgog
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgotICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3dlYkdMTGF5
ZXIuZ2V0KCk7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1
cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVw
YXJlRm9yRGlzcGxheSgpIGZpbmFsOwogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRB
VElPTikKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTgsMzAgKzEwMywyNSBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsOwogI2VuZGlmCiBwcml2YXRlOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKLSAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0
ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAg
IDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0
cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCFhdHRyaWJ1
dGVzLmFscGhhLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8pKQorICAgIHsKKyAgICB9CisK
KyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBSZWY8RGlzcGxheUJ1ZmZl
ckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZy
aWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdC
YWNrZW5kKQotewotICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fd2ViR0xMYXllciA9IGFkb3B0TlMoW1tX
ZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0cnMuZGV2aWNlUGl4
ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cnMuYWxwaGFdKTsKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKLSNlbmRpZgotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlD
b2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewogICAgIGlmICgh
bV9kaXNwbGF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihtX2Rpc3BsYXlCdWZmZXItPnN1
cmZhY2UoKSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCByZW1vdGUgTWVkaWFTYW1wbGUuCisg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KG1fZGlzcGxheUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRl
Q1ZQaXhlbEJ1ZmZlcihzdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgV2ViQ29y
ZTo6TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsK
QEAgLTEwMCwyNiArMTQwLDE2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hOjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgfQogICAgIGlmICghZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJT
ZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAg
aWYgKCFkaXNwbGF5QnVmZmVyKSB7Ci0gICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxheUJ1
ZmZlcik7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXll
ciBzZXRDb250ZW50czptX2Rpc3BsYXlCdWZmZXItPmFzTGF5ZXJDb250ZW50cygpXTsKLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92ZShk
aXNwbGF5QnVmZmVyU2VuZFJpZ2h0KTsKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAg
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5zZXREaXNwbGF5QnVmZmVyKG1fZGlzcGxh
eUJ1ZmZlci5jb3B5U2VuZFJpZ2h0KCkpOwogfQogCiB9CiAKIFJlZlB0cjxSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogewotICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmli
dXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwotICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29udGV4dDsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eVdDLmNwcAppbmRleCBlNGRjODE5OGUxOGVmM2RlNjM2YTQ2ZjI4YWQ5
ZjNkYjNkZmQ3YTYwLi44MTQ4NTA2YzgzODgxYzJhYzZmODMyMjU5ZmE0YTc1ZGJiNTk3YjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCkBA
IC0zMywzMyArMzMsNTMgQEAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV0NQbGF0Zm9ybUxheWVyR0NHTC5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVyJiYg
cGxhdGZvcm1MYXllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXRm
b3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkpOworICAgIH0K
KworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyQ29udGFpbmVy
JiYgcGxhdGZvcm1MYXllcikKKyAgICAgICAgOiBtX3BsYXRmb3JtTGF5ZXIoV1RGTW92ZShwbGF0
Zm9ybUxheWVyKSkKKyAgICB7CisgICAgfQorCisgICAgUGxhdGZvcm1MYXllckNvbnRhaW5lciBt
X3BsYXRmb3JtTGF5ZXI7Cit9OworCiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
V0MgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CiBwdWJsaWM6
CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMuCiAgICAgdm9p
ZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiBwcml2YXRlOgot
ICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1M
YXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NH
TD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKSkKKyAgICB7CisgICAgfQogCi0gICAg
UGxhdGZvcm1MYXllckNvbnRhaW5lciBtX3BsYXRmb3JtTGF5ZXI7CisgICAgUmVmPFBsYXRmb3Jt
TGF5ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAg
ICBmcmllbmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICAsIG1fcGxhdGZvcm1MYXllcihtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdD
R0w+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkKLXsKLX0KLQogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0M6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcAppbmRleCA1ZDBlYThiZGI5MWFiMTQxODc1MDA0MWI3OWVkNWZlYWU3NzIzYmEw
Li41OGI2YWU3ZmM5YmEwYzdhZjdiODZmMjA0OGRhZjEzNzM0NTI2ODIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTczLDExICsxNzMs
MTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rp
b24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICBBU1NFUlQoIW1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmUgfHwgb3duZXIoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTigmY29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIAotICAgIGlmIChtX3By
b3BlcnRpZXMuYmFja2luZ1N0b3JlICYmICghb3duZXIoKSB8fCAhb3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyRHJhd3NDb250ZW50KCkpKSB7CisgICAgYm9vbCB1c2VzQmFja2luZ1N0b3JlID0gb3du
ZXIoKSAmJiAob3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgb3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheSh0aGlzKSk7CisgICAgaWYgKG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgJiYgIXVzZXNCYWNraW5nU3RvcmUpIHsKICAgICAgICAgbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydGllcy5u
b3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdT
dG9yZUNoYW5nZWQpOwogICAgIH0KLQogICAgIGlmIChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCAmJiBtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLT5kaXNwbGF5KCkpCiAgICAgICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQp
OwogCkBAIC02ODMsOCArNjgzLDI2IEBAIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmNvbnRlbnRzKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRl
bnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKK30KKworI2lmIEhBVkUoSU9TVVJGQUNFKQor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklP
U3VyZmFjZSYgc3VyZmFjZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOwor
ICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUt
PnNldENvbnRlbnRzKHN1cmZhY2UuY3JlYXRlU2VuZFJpZ2h0KCkpOwogfQogCit2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBz
dXJmYWNlSGFuZGxlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAg
ZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0
Q29udGVudHMoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCkpOworfQorI2VuZGlmCisKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JiB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuY29udGVudHNSZWN0ID0gdmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggNDdjMzA1NTdk
NTk4Y2EyMTU0ZGI0NzA2MDQyNjUwNGJhZTBmYTY4Yy4uNzFkNDBjZTMxM2EwNmIxOWU0ODk4YjY1
YjhhOGVhY2FhNjYzYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuaApAQCAtMTI3LDcgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDb250
ZW50cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKLQorI2lm
IEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9T
dXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRNaW5pZmlj
YXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20uaAppbmRleCBlNjI0N2RhYTZkYjAwZTI1MDgyNGY2OGM5MTg1NjU3MTA2MDM0NjM0Li43YWI5
OTBiYzI1ZjE4MmU5MjkyMWMyNjM2MTg1MGFiZjJhOWE3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCkBAIC02MCw3ICs2MCw2
IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4g
bV9sYXllckhvc3RpbmdDb250ZXh0OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX3Bs
YXRmb3JtTGF5ZXI7Ci0gICAgYm9vbCBtX3Byb3ZpZGVzQ29udGVudHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tLm1tCmluZGV4IDI3YjBmYzAwNTE4NWRhZDQ1YjZjYTNiNzhkODMwMjEz
MDhlNDhmNGUuLjYyOTIzMWI2MzllYTVjMTZkNmI1NDc1ODBiZjZjMjIyNmQzMDM1YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQpAQCAtMzQsMTUgKzM0LDE2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaD4KIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxh
eWVyUG9pbnRlciA9IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOworCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0
Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7Ci0KIFJlZjxQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKFBsYXRm
b3JtTGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byBsYXllciA9IGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29h
OjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCBwbGF0Zm9ybUxheWVy
LCBvd25lciwgY29udGV4dCkpOwpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBl
LCBQbAogICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXll
ciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5
ZXJUeXBlID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRp
ZXMoKS5wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0
b21MYXllci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRp
ZXMoKS5hbmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54
LCBjdXN0b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwog
ICAgIHByb3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAg
KzEyNiw2IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBjb3B5Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExh
eWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50
bHkgY29weWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAg
ICAgICBjb3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYg
Y29udGVudHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVz
Q29udGVudHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OnJlY3RdOwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVk
c0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVk
c0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0g
ICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9H
cmFwaGljc0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2Mv
R3JhcGhpY3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYx
ZDBkMGQwNWY0Li5iZDlhY2JlOTMzM2YxOGE3Nzk3M2JlZTlhZDAxMGNmMWYwNjU3OTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVy
V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNz
TGF5ZXJXQy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMK
ICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6
OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVy
UHVycG9zZSBwdXJwb3NlKQoreworICAgIGF1dG8gcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxl
Z2F0ZSA/IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwog
Ym9vbCBHcmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4
ZDQ1NzA0YzU2NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2OTIxMWQ0NmMxNjhiMjgxZDA3Y2Yz
Y2I5MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9H
cmFwaGljc0xheWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
Yy9HcmFwaGljc0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJXQ1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3Qu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENv
bnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNM
YXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdh
dGUoUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4m
JiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0
bHlDb21wb3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVjNzE1YjkyMWU4YTE3NzUx
ODE4YmE2NDg5MjlmYjcyMWViZTc4MTUuLjIwYzhiZThjYzE4N2FlZjg0ZmY2ZjNhZjc4YjVkZjc1
MjczYmEzNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0wNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNp
ZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAg
QWRkIGEgZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMi0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dGVzdHMgZm9yIGR1cGxpY2F0ZSBzdWIgZG9tYWlucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCmluZGV4IDg3NmM3NDQ4MDhmNDM2MWUzY2Q1MmY1M2ZmZDZmNjAwM2E4
YTBmODcuLmUxOTExZGY2YzA5M2UzOGM4ZDQyZmExNzllZmQ1ZTc3MmVhNjVkYzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQwLDYgKzQwLDIxIEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAorY2xhc3MgVGVzdGVkR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENv
Y29hIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRy
aWJ1dGVzKQorICAgIHsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0
ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcykpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQ7CisgICAgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9Citwcml2YXRlOgorICAgIFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCisgICAgICAgIDogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0
dHJpYnV0ZXMpKQorICAgIHsKKyAgICB9Cit9OworCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENv
Y29hVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZSAvLyBOT0xJTlQKQEAgLTU4LDcgKzczLDcgQEAgcHJpdmF0ZToKIAogc3Rh
dGljIGNvbnN0IGludCBleHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CiAKLXN0YXRp
YyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRl
c3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNpemUpCitzdGF0aWMgUmVmUHRyPFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJD
b3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQogewogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVl
OwpAQCAtNjcsMTQgKzgyLDE0IEBAIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6CiAgICAgYXR0cmli
dXRlcy5zdGVuY2lsID0gZmFsc2U7CiAgICAgYXR0cmlidXRlcy5hbHBoYSA9IHRydWU7CiAgICAg
YXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSBmYWxzZTsKLSAgICBhdXRvIGNvbnRl
eHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV1RGTW92ZShhdHRy
aWJ1dGVzKSk7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53aWR0
aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0
YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKK3N0
YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsKICAg
ICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4cGVj
dGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6OkNv
bG9yOjp5ZWxsb3cgfTsKQEAgLTExOSwxNSArMTM0LDE1IEBAIFRFU1RfRihHcmFwaGljc0NvbnRl
eHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJlbmNl
TWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7
CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJpYnV0
ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoZGVmYXVsdENvbnRleHQs
IG51bGxwdHIpOwogCiAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7Ci0gICAgYXV0byBsb3dQ
b3dlckNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBh
dXRvIGxvd1Bvd2VyQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwog
ICAgIEFTU0VSVF9ORShsb3dQb3dlckNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgYXR0cmlidXRl
cy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6SGlnaFBlcmZvcm1hbmNlOwotICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOworICAgIGF1dG8gaGlnaFBlcmZv
cm1hbmNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFT
U0VSVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9O
RShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446713</attachid>
            <date>2021-12-10 05:27:24 -0800</date>
            <delta_ts>2021-12-10 07:17:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211210152722.patch</filename>
            <type>text/plain</type>
            <size>123323</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI1YmNiODZiMmU1NjBk
ZTkyZTM1NzI0Mzc5OWNiNTMyM2JiZmViZi4uMDc3NjNmN2E3YzM3ZWI3NWEyNWQ3ODM5YjJhZmUz
M2Q4ZGYwOWUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMS0xMi0wOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZWNv
bmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJlLgorICAg
ICAgICBTZWUgV2ViS2l0IHNpZGUgZm9yIHRoZSBkZXNjcmlwdGlvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTA5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEFkZCBzdXBwb3J0IGZvciBpbmsgb3ZlcmZsb3cgb24gYmlkaSBpbmxpbmUgYm94ZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggOWIzMWU0OTdkNTQ0YWRmOGFkYTY0OTNiMjRhMjk5NTJjMzZhNWRiMC4uODZmZDFk
ODExMjdmYWU4N2E3Mzg3MzU0NDdkMDVkMTE1N2E0MTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NSBAQAorMjAyMS0xMi0wOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgor
CisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQor
ICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNhcGFiaWxpdHkgdG8gYXNzaWduIElPU3Vy
ZmFjZXMKKyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIGNvbnRlbnRzLgorCisgICAg
ICAgIE1ha2UgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hIHVzZSB0aGUgYWRkZWQK
KyAgICAgICAgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLgorCisgICAgICAg
IFNlY29uZCB0cnksIHByZXZpb3VzIHdhcyByZXZlcnRlZCBkdWUgdG8gYSB0ZXN0IGZhaWx1cmUu
CisgICAgICAgIFRoZSB0ZXN0IGZhaWx1cmUgaGFwcGVuZWQgZHVlIHRvIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlCisgICAgICAgIHNlbmRpbmcgdGhlIHNhbWUgZHJhd24gYmFja2luZyBzdG9yZSB3
aXRoIGRpZmZlcmVudAorICAgICAgICBwcm9wZXJ0aWVzIGJ1dCBzYW1lIGltYWdlLiBUaGUgb3Jp
Z2luYWwgcGF0Y2ggdHJpZWQKKyAgICAgICAgdG8gdXNlIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjptX2J1ZmZlckhhbmRsZSBhbHNvCisgICAgICAgIG9uIHRoZSBzZW5kIHNpZGUgdG8gc3RvcmUg
dGhlIGhhbmRsZS4gVGhpcyBoYW5kbGUKKyAgICAgICAgd2FzIGVuY29kZWQgbXVsdGlwbGUgdGlt
ZXMuIFRoZSB1bmRlcmx5aW5nCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIElQQyBl
bmNvZGluZyBkZXN0cm95cyB0aGUKKyAgICAgICAgdW5kZXJseWluZyBtYWNoIHNlbmQgcmlnaHQg
ZXZlbiB0aG91Z2ggdGhlIGVuY29kaW5nCisgICAgICAgIEFQSSBzaWduYXR1cmUgd291bGQgc2ln
bmlmeSB0aGF0IHRoZSBIYW5kbGUgc3RheXMKKyAgICAgICAgaW50YWN0LiBTaGFyZWFibGVCaXRt
YXAsIFNoYXJlZE1lbW9yeSB3aWxsIGJlIGZpeGVkIGluCisgICAgICAgIGZ1dHVyZSBjb21taXRz
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9HUFVQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250
ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5
KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
ZGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
SG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0Q29udGVudHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20pOgorICAgICAgICAoV2Vi
S2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5l
ZWRzRGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5
ZXJXQy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdyYXBoaWNzTGF5ZXJXQzo6c2V0Q29udGVudHNE
aXNwbGF5RGVsZWdhdGUpOgorCiAyMDIxLTEyLTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYWJpbGl0eSB0byBpbmplY3QgbWVzc2FnZXMgaW50byB3
ZWJwdXNoZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggY2ZjNWFjYWVkZTYxNmU5MTAxM2JkNTdiZjc1
NTRhNTIzMjBmY2IyZS4uNDM4ODUyM2YzYjU3NWVjN2JhYWZlZWIzNjFlOThkMGRkMTMyNWZlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDYwLDYgKzE0NjAsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TFN0YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyVHJhbnNmb3JtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYWZjOTZh
MGI2MTIwN2E0ZGE3MzYxYzUxMzI0ZGY1Mjc2MzFlMGM5Mi4uNzgxN2Q3ZmIwNWU3MzU3MzkyODhi
Y2NiZTg1ZDBlNDgyNTFjODRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3
ICszMjcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FMYXllckV4dHJhcy5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggNTc4NDY3YWNhZjcwMTBmZjM2OGU4MDBmM2Q3ZDcwYjgyMTNiYjQzMi4uNTg4MzA4NzFhYmUx
NzZhNWYwYjYzNzFhYWEyNWEzNzc2NjY3Mjg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIwMzAsNiAr
MjAzMCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWFm
YjA4NTQ4MjE3MzFiMmQ3YzhhZTU3MmM0NDgxNTU5OGY0MWNjYS4uZDZiMzkxMmJlZDA2NThmYjNh
ZjcxZTdmODJjY2E5MDJlYTliZjQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zOTIs
NyArMzkyLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxh
eWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0
cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b24ubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCmluZGV4IDlmODVlNDk4NmM1M2ExY2M4ZDYzYjMzOTRkM2Y3Mjk1ODMyYWYzODcuLjMzYWMz
NWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRjMWNhZjc1YjA3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpA
QCAtMjA0NzIsOCArMjA0NzIsNiBAQCBfT0JKQ19DTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2Fy
bmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcK
IF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cKIF9PQkpDX01FVEFDTEFTU18k
X1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci1fT0JKQ19DTEFTU18kX1dlYkdMTGF5ZXIKLV9PQkpD
X01FVEFDTEFTU18kX1dlYkdMTGF5ZXIKIF9PQkpDX0NMQVNTXyRfV2ViTGF5ZXIKIF9PQkpDX01F
VEFDTEFTU18kX1dlYkxheWVyCiBfT0JKQ19DTEFTU18kX1dlYlNjcmlwdE9iamVjdApAQCAtMzA2
NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcuX2V4aXRXYXJuaW5nCiBfT0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhv
bGRlclZpZXcuX3RhcmdldAogX09CSkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3
Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJfJF9XZWJHTExheWVyLm1fY29udGV4dAotX09CSkNfSVZB
Ul8kX1dlYkdMTGF5ZXIubV9sYXllck93bmVyCiBfT0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLnJvb3RPYmpl
Y3QKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLm9yaWdpblJvb3RPYmplY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyNmY5ZTk1MGU1MmNjNGQ3ZGFmOGVkZGJlMjg5ZDcwMTRmZTFjZWQwLi5jOGNlNGJhMGUy
ZWIwYTIyZDA2ZDJiZjk5YjljMThhMDFlMzdhMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDM5LDcgKzE0MzksNiBAQAog
CQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFQ0VCNjYxNDk5NzkwRDAw
Q0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oICovOyB9OwogCQk0OUVFRDE0NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oICovOyB9OwotCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0Qx
MUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkE5
QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkFBMjFB
QUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwRkZBQTAxQUFGNUVBMjAwNjI4
MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjM3OCw2ICsyMzc3LDcgQEAKIAkJN0IxMDMz
OUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAw
QzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAv
KiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTky
NTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1
NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjcyMEIw
QzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIw
QTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3
MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZB
MjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAy
NkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGls
aXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
MzY1LDggKzkzNjUsNiBAQAogCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OUZDN0E0RjE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNE
MTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlG
RkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lh
dGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5
QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBMEZGQTlCMUFBRjVFNkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMTM5MSw2ICsxMTM4OSw3IEBACiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVB
QyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhp
Z2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGlsaXRpZXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTQwMiw2ICsxMTQwMSw3IEBACiAJ
CTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAy
Qjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRp
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGls
aXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAwRUIyMTI3
IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGlsaXRpZXND
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2OTgsNiArMjg2OTgsOCBA
QAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywK
IAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICovLAogCQkJ
CTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggKi8sCisJ
CQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBCMEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oICovLAogCQkJCTFBQzY5NTkyMTYxQTFF
NTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRE
NzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCkBAIC0yODk4
Nyw4ICsyODk4OSw2IEBACiAJCQkJMkQzRUY0NDcxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkNvcmVD
QUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQyNzc2MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywKIAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBB
M0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tICovLAotCQkJCTQ5RkZCRjNEMTFD
OTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggKi8sCi0JCQkJNDlGRkJGM0UxMUM5M0VFMzAw
NkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJCQkJMDdGNUNGRjQyNTgyQTRGODAwNjYyRUY1
IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggKi8sCiAJCQkJMDdGNUNGRjIyNTgyQTRGODAw
NjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tICovLAogCQkJCTdCMTYxOTEwMjcx
OTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLywK
QEAgLTMzMDc1LDYgKzMzMDc1LDcgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTdCNTgy
REQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJC
ODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNDQwNyw2ICszNDQwOCw3IEBACiAJCQkJMEY1ODBCMEQwRjEyQTI2
OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3
MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM2OTU5MzE2MUEx
RTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtMzc2MzYsNyArMzc2MzgsNiBAQAogCQkJCTVCMzA2OTVFMThC
M0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9z
ZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAv
KiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAw
MDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjc5
ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEyMjNmNTY3Yi4uNzJiMmNjZTc0ZGI5NzJiODRi
MjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50
LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmRlcmVm
KCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jhc2UoKTsKIH0KIAorUmVmUHRyPEdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
IFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnBpeGVsRm9ybWF0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDM3MjAwNzkwNDZm
ZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2UuLjVhZTc5YmYwYjllMzkwYjNhYTYxNTNkMjYw
MThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIC8v
IHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
Rm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQogICAg
IHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihib29sIGhhc0FjdGl2
ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2IyMjNiZGRlOTFjMDc4ZGJmZDg1YjkyZGU1YTU3
Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlkMjg5MWFkNTYxMzcwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgSFRNTENhbnZhc0VsZW1lbnQqIFBsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkgY29uc3QKICAgICByZXR1cm4gJmRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0KIAotUGxhdGZvcm1MYXllciogUGxhY2Vob2xk
ZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4
dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZm
ZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclBpcGUtPnBsYXRmb3JtTGF5ZXIo
KTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJQaXBlLT5sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKaW5k
ZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2NmEzODM0ZGY5OTE5OS4uMGFjM2Y3YzRmYWE3
NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUGxhY2Vob2xkZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogCiAgICAg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVy
UGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9p
bWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYWM4MWQ4YzkzMjQ0NDdjZWI3
ZmEzOGUzM2E5NjlhZmMxYTAzODRhMC4uY2UwMGU2M2E4ZmI3NGZhOGM1ZmRlMzNiOTIzYzlkNWY3
MTZjNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2Fu
dmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDUyLDkgKzY0NTMsMTEgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJlY292ZXJhYmx5TG9zdCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVzdG9yZUFsbG93ZWQ7CiB9CiAKLVBsYXRmb3Jt
TGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAor
UmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgcmV0
dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pID8g
bV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIGlmIChpc0NvbnRleHRMb3N0KCkg
fHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVtb3ZlU2hhcmVkT2JqZWN0KFdl
YkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNjUyNGM5MTczNzU3MDlh
MmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0NTdlNzEzN2Y4NDI2ZGMwMzEwNGI0YzRlNmEz
ZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKIAog
ICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdMQ29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91cC5nZXQoKTsgfQotICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggNzFhMzhhZjA2YjM1OTEyNjNjNzQ0MmJkYjY4NTBlNmY2
MzQ1NTlmOS4uYjVmNWVjZDM4MWNhOTBhMjdkOGQyYWI1MmQzZWZiMjUyYmVkMWI2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzg2LDcgKzc4Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9
IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGhhc0FscGhhKERhdGFGb3JtYXQg
Zm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1NmE4MzYxNTZjYzBkNWU1YTdkZjFiZmIwYzRi
MmIyNjJjNy4uNDkyZTQyNmI2MzA1MmY0NDhmNzU3OTA3ODMxOWVkMGJhNmYyZTZkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5o
IgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cmVzdW1l
QW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNw
bGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4m
JiwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0
RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAg
IHdpZHRoID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaAppbmRleCBiZjk1MDlmMThjY2I5NTk5MjNkZDlmNWQ1ZmIyNTJiZTE4Yjk4OTlj
Li5lYjYzNTlmZTNmMjM1YzFkMzhiZTYwYmEwNjUwMGY2NzhjZjEzMGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC01OCw2ICs1
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuaW1hdGlvbjsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5OworY2xhc3MgR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBNb2RlbDsK
IGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTUyMiw2ICs1MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8g
UGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92ZSB0aGUgY29udGVudHMgbGF5ZXIuCiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBj
b25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTk4ODk4NmEyZjdmOGRkZjZiMGQ4YzJkMzk0NmMzZmMx
M2EzNzZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5oIgorCisjaWYgVVNFKENBKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOjp+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZh
dWx0OworCisjaWYgVVNFKENBKQordm9pZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU6OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImKQoreworfQor
CitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb247Cit9
CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZTE2Y2M2OGNmOTU3YTY3YTUyMWY3MzYyZjJmNzc3NWQ0YzBhNzUwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
KyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNlbmRpZgorbmFtZXNw
YWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKyNlbmRp
ZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcmZhY2UgZm9yIGF0dGFjaGluZyBjb250ZW50
cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0
b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRpY3VsYXIgY29udGVudHMKKy8vIGluIHRoZSBw
bGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVyLgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CisKKyNpZiBVU0UoQ0Ep
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7Cisg
ICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNlCisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCmluZGV4IDZl
NmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2FlMTA5OTUwZTguLjNiZWQxZDBhZTZlMzkwMDM4
MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHByb3ZpZGUgYSBQbGF0Zm9ybUxheWVyIGZvciBh
biBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3Jl
YXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCisvLyBVc2VkIHRvIHByb3ZpZGUgR3Jh
cGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVy
OyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQgYW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVh
ZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXJQ
aXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBSZWZQdHI8U291cmNl
PiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0wOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhDYWNoZS5oCmluZGV4IDRlNjIyMzkzYzJhZGQxZmU4ZDM5ZmZiZjQwNGY1
N2QzODkzYmU2ODAuLjY2NzBkMDFiZjM3YWI5MDUwNmNkMDU2ZjU3MzJjMzFhOGY2ZjhiNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggNTE5MGEzODY1NDMwMDcyMDA1MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uYTE4
MmM1MjU0ZTgwMmNhNzlhMDRhNjc2YWFkZjFhNTFiZDYwOGU0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1
ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9y
eURpc3BsYXlMaXN0LmgiCkBAIC0xMjQ2LDYgKzEyNDcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBt
X2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CiAgICAg
ICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQorICAgIG1fY29udGVudHNEaXNw
bGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNvbnRlbnRzTGF5ZXJDaGFuZ2VkKQog
ICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtMTI3Nyw2ICsxMjc5LDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAg
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOwogICAgIH0KKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAog
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0ltYWdlQ2hhbmdlZCk7CiB9CkBA
IC0xMzA3LDYgKzEzMTAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb01v
ZGVsKFJlZlB0cjxNb2RlbD4mJiBtb2RlbCkKICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9z
ZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIg
PSBudWxscHRyOwogICAgIH0KKyAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0
cjsKIAogICAgIGlmIChjb250ZW50c0xheWVyQ2hhbmdlZCkKICAgICAgICAgbm90ZVN1YmxheWVy
c0NoYW5nZWQoKTsKQEAgLTEzNDMsNiArMTM0NywzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwg
QwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogCiAgICAgbV9jb250ZW50c0xh
eWVyUHVycG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBwdXJwb3NlIDogQ29udGVudHNMYXllclB1cnBv
c2U6Ok5vbmU7CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29u
dGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlPiYmIGRlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQor
eworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgZGVsZWdhdGUgPT0gbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29udGVudHNMYXllcikK
KyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRPd25lcihudWxscHRyKTsKKyAgICBtX2NvbnRl
bnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxs
cHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6
Tm9uZTsKKyAgICBpZiAoZGVsZWdhdGUpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3Jl
YXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92
aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdU
Rk1vdmUoZGVsZWdhdGUpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9z
ZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVnYXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVs
IHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRlbnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8v
IGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3JkaW5nbHkuCisgICAgICAgIG1fY29udGVudHNM
YXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNM
YXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRydWUpOworICAgICAgICBtX2NvbnRlbnRzRGlz
cGxheURlbGVnYXRlLT5wcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7
CisgICAgfQogCiAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKICAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7CkBAIC0xODc4LDYgKzE5
MDcsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckxvZ0ZpbGxlZFZp
c2libGVGcmVzaFRpbGUodW5zaWduZWQgYmxhbmtQaXgKICAgICBjbGllbnQoKS5sb2dGaWxsZWRW
aXNpYmxlRnJlc2hUaWxlKGJsYW5rUGl4ZWxDb3VudCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXll
ckNBOjpwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgJiYgbV9j
b250ZW50c0xheWVyID09IGxheWVyOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZv
cm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgQVNT
RVJUKG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUpOworICAgIEFTU0VSVChsYXllciA9PSBtX2Nv
bnRlbnRzTGF5ZXIpOworICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPmRpc3BsYXkoKmxh
eWVyKTsKK30KKwogc3RhdGljIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZUZv
ckN1c3RvbUJhY2tkcm9wQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNl
IGFwcGVhcmFuY2UpCiB7CiAgICAgcmV0dXJuIGFwcGVhcmFuY2UgPT0gR3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJvcCA/IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDogUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVE
YXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKQEAgLTI3OTIsNyArMjgzMyw4IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3JtTGF5ZXIoKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBQbGF0Zm9ybSBsYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5k
IHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgotICAgIHNldHVwQ29u
dGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgIGF1dG8gb3JpZW50YXRpb24g
PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID8gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+
b3JpZW50YXRpb24oKSA6IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uOworICAgIHNldHVwQ29u
dGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCksIG9yaWVudGF0aW9uKTsKIAogICAgIGlm
IChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMp
CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CkBAIC00NDEyLDE5
ICs0NDU0LDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpjaGFuZ2VMYXllclR5cGVUbyhQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBuZXdMYXllclR5cGUpCiAgICAgICAgIGNsaWVudCgpLnRp
bGVkQmFja2luZ1VzYWdlQ2hhbmdlZCh0aGlzLCBpc1RpbGVkTGF5ZXIpOwogfQogCi1HcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNB
OjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5
ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FM
YXllciogY29udGVudHNMYXllciwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQogewogICAgIC8vIFR1cm4gb2ZmIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhl
IGlubmVyIGxheWVyLgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNvbnRlbnRzTGF5
ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAjZW5kaWYKLQotICAgIGlmIChkZWZhdWx0Q29u
dGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6
Qm90dG9tVXApIHsKKyAgICBpZiAob3JpZW50YXRpb24gPT0gQ29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uOjpCb3R0b21VcCkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBm
bGlwcGVyKAogICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKICAgICAgICAgICAg
IDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCA5ZDQ0ZjZhYjM4MGM4ODY2
NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3Li5mNmIyYzk0Y2IzZDZmZmFkMDM1ZWI3NDkyYTI1NTgy
MjU5MmEwMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUwLDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRz
TGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChS
ZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAtMTkzLDYgKzE5NSw4IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2Nl
bGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAgICBjb25zdGV4
cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVu
dHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93
bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIsNiArMjE2LDggQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0Nv
bnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkcmF3c0NvbnRlbnQoKTsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9y
bUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
KSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKQEAgLTMwMCwxMCArMzA2LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcikg
Y29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENv
bnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQotICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3Jt
Q0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250
ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRl
Q2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2
NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxN
b2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlmCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAg
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9y
PExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFzZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3ZWQ2M2M4YWIxODg4ZTlkZGE5MmQxNTgzNC4u
OGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBmOTYyMDYxMWFiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAg
LTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQbGF5ZXJMYXllcjsKIHR5cGVkZWYgc3RydWN0
IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgeworI2lm
IEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNlbmRSaWdodDsKKyNlbmRpZgorfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUG9vbDsKQEAgLTQ4LDYgKzU0LDEwIEBAIGNs
YXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkK
K2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9y
bUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyLCBX
VEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNvY29hOwpAQCAtMTkwLDYgKzIwMCwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgPSAwOwogCisjaWYgSEFWRShJT1NV
UkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3Vy
ZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNo
U2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5n
U3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCmluZGV4IDY3Nzhk
ZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJhZDEzMDYuLjFlNzJjNDU2NmU3YWZlYWI2NGQ2
NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCkBAIC01MSw2ICs1
MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29u
dGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXll
ckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxh
eWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRm
b3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIwMTM0Y2Q4NTVlYzVjZDExNDhjMTExZWZmN2Uw
NmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2FmYWU4NGFjZjdlMDQ5YjJiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRl
bnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92
ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQorICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5MGY1NzcyOTZiMjIzOWJmMjg2ODJmYzc1NmFj
NjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAxYTU3ZWRmYjJiOWFiOTUzMDMwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQg
IlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVn
YXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXllckV4dHJhcy5oIgotI2ltcG9ydCAiV2ViR0xM
YXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250YWluZXJMYXllci5oIgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
QEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3
dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTIxMSw5ICsyMTEsNiBAQCBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZv
cm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVy
IHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAK
LSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAg
ICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHJldHVybiBM
YXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2ICsyMzEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVNpbXBsZUxheWVyOgog
ICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgorICAgIGNhc2UgTGF5ZXJU
eXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICBsYXllckNsYXNzID0gW1dlYlNpbXBs
ZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zv
cm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAgUGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRm
b3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAg
ICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAg
ICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAg
ICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3Vu
ZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJy
ZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxM
YXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKQEAgLTMxMCw3ICsz
MDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICB9CiAg
ICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxh
eWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9s
YXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVy
VHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXll
ciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTY3JvbGxDb250YWluZXJMYXllciB8fCBtX2xh
eWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAgICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxl
QWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAgICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlIHNoYXJlZF1dOwpAQCAtNzk3LDYgKzc5MSwx
OSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFs
dWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCisjaWYgSEFWRShJT1NVUkZB
Q0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3Jl
OjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAgc2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVy
Q29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRz
KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFjZUhhbmRsZSkKK3sKKyAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoc3VyZmFjZUhh
bmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFjZSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TENvY29hLmgKaW5kZXggYTY0OGZjZDJlYzRmMGI5YjUxZTMwMjM2OWUwMTI0OWI1MmQ5YjRlNC4u
OTEzYzBmNGE1MmQwZDFhZTAzOWJkOGUzMjY2ODc4ZmE1MTJmYWYzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
b3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVk
aWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5h
bDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggNWFmMzVjYzM4
YThiMjcyZjg4MTZmZmViYWMzYmQ3MzdjYjA1MGQyZS4uNGQwMWVmMzhlOTNjNGI2MTBiNzViOTVl
MGYyZGIyNTUzZTE1NWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00
NjYsMTEgKzQ2Niw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0KIAotUGxhdGZvcm1MYXllciogR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50
KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTc5OCw2ICs3OTMsMTEgQEAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9y
bUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29uZmlnT2JqOwogfQogCitSZWZQdHI8R3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0vLyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25l
IElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5
ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJh
dGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQg
IldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3Jh
cGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVu
dGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9h
dClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17
Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNm
b3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRlbnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7
Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4g
c2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJT1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMs
IHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVyIHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQg
dGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRo
YXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5saWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEg
Y29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9pbnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0v
LyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zvcm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0K
LS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5zZm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0
VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lk
KXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsKLSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6
Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsKLX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0g
ICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBhcyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5n
IGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNl
bGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93
bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0K
LQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAyNTQyNjIzMGRmZWRhZDJjNWViOTEw
NDI0YTA4YTcyZTM3MTdiMmQ3Li4zMTM4NThiOGY1N2RhYjhkMTBhNmFiNjI4MTdlODc1NDBlZjM4
MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bQpAQCAtMjksOCArMjksNyBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuaCIgLy8gTk9MSU5UCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTE1hbmFnZXIuaCIKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKIAogI2lmIFBM
QVRGT1JNKE1BQykKICNpbXBvcnQgIkRpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvci5oIgpAQCAt
MzksNDYgKzM4LDgzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgewogCi1zdGF0
aWMgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IGNyZWF0ZVdlYkdMTGF5ZXIoY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQotewotICAgIFJldGFpblB0cjxXZWJHTExh
eWVyPiBsYXllcjsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBsYXllciA9
IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aERldmljZVBpeGVsUmF0aW86YXR0
cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRyaWJ1dGVzLmFscGhh
XSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtsYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsK
LSNlbmRpZgotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbGF5ZXI7
Ci19CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwg
ZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsK
KyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3Zl
cnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXll
ciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1
ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGRpc3BsYXkoUGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRD
b250ZW50cygqbV9kaXNwbGF5QnVmZmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5
ZXIuc2V0Q29udGVudHMobnVsbHB0cik7CisgICAgfQorCisgICAgR3JhcGhpY3NMYXllcjo6Q29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzT3JpZW50YXRpb246OkJvdHRvbVVwOworICAgIH0KKworICAgIHZvaWQgc2V0RGlzcGxheUJ1
ZmZlcihJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAgICBpZiAoIWRpc3Bs
YXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlci5yZXNldCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYg
ZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpID09IG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TdXJmYWNlKGRpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVy
RGlzcGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAg
ICAgIDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29u
dGVudHNTY2FsZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOwor
ICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7Cit9OwogCiAvLyBHcmFwaGljc0NvbnRleHRHTCB0eXBl
IHRoYXQgaXMgdXNlZCB3aGVuIFdlYkdMIGlzIHJ1biBpbi1wcm9jZXNzIGluIFdlYkNvbnRlbnQg
cHJvY2Vzcy4KIGNsYXNzIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hIGZpbmFsIDog
cHVibGljIEdyYXBoaWNzQ29udGV4dEdMQ29jb2EKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBw
cml2YXRlIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvcjo6Q2xpZW50CiAjZW5kaWYKLQogewog
cHVibGljOgogICAgIH5XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpOwotICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmlzVmFs
aWQoKSAmJiBtX3dlYkdMTGF5ZXI7IH0KKwogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQ29jb2Eg
b3ZlcnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkp
OyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBm
aW5hbDsKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIERpc3BsYXlDb25maWd1
cmF0aW9uTW9uaXRvcjo6Q2xpZW50IG92ZXJyaWRlcy4KICAgICB2b2lkIGRpc3BsYXlXYXNSZWNv
bmZpZ3VyZWQoKSBmaW5hbDsKICNlbmRpZgotCiAgICAgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwotICAgIFJldGFpblB0cjxX
ZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CiAKKyAgICBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlE
ZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IFdlYkNvcmU6OmNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKKyAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiB9OwogCiBXZWJQcm9jZXNzR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKICAgICA6IEdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLSAgICAsIG1fd2ViR0xMYXllcihjcmVhdGVXZWJH
TExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQorICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRl
cy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKIHsKICNpZiBQTEFURk9STShN
QUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpzaW5nbGV0b24oKS5hZGRDbGll
bnQoKnRoaXMpOwpAQCAtOTUsMTMgKzEzMSw3IEBAIFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EoKQogdm9pZCBXZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogICAgIEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCk7Ci0gICAgYXV0byBzdXJm
YWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2UuZ2V0KCk7Ci0gICAgaWYg
KCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNlLT5hc0xheWVyQ29udGVu
dHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXldOwotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNl
dERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
RUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBw
bGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZiZDlkMTU0ZTYwYzQ5Li4z
MzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNhMzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2Zl
ckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0y
OSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBvcnQgIkZFQ29tcG9uZW50
VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQgPENv
cmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQwYWI4NmU3NzBkNDYxM2Mx
OTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRp
ZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRp
ZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCiAjaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4K
ICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQppbmRl
eCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJjLi4zN2UwZjU0YmI2MDAx
MjM0ZmI2ZmU0YWQ5MmU1NzhkYjhmMzAzZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4MSwxMSBAQAogLSAodm9p
ZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0g
ICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07
CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSAmJiAh
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0
KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07CiB9CiAK
IC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGlydHlSZWN0CkBAIC05NCw3
ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVu
dCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsKLSAgICAgICAgaWYgKGxh
eWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7CisgICAgICAgIGlmIChs
YXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBsYXllck93bmVyLT5w
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CiAg
ICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRpcnR5UmVjdF07CiAKICAg
ICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTExMywxMCArMTE2LDE0IEBACiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgW3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKLSAg
ICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxheWVyLT5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxheWVyLT5vd25lcigpIDog
bnVsbHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRl
c0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5
ZXJEaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIFtzdXBlciBkaXNwbGF5
XTsKKyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29u
dGV4dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRl
eCAzMzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRkLi4yZjc0ZDBlYmFkYjdk
ODJlOTIwZDQyOGNkOWUxOWNmNmRkZTM2MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVm
ZmVyUGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xhc3MgTmljb3NpYUltYWdl
QnVmZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZSwg
cHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgewogcHVibGljOgog
ICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2aXJ0dWFsIH5OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGU6OlNvdXJj
ZSBvdmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmKSBmaW5h
bDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKLQorICAgIENv
bnRlbnRMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbmljb3NpYUxheWVy
LmdldCgpOyB9CiBwcml2YXRlOgorICAgIC8vIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
OjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJy
aWRlOwogCiAgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CkBAIC02Miwx
NiArNjQsMzggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZm
ZXI7CiB9OwogCi1jbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDogcHVibGljIElt
YWdlQnVmZmVyUGlwZSB7CitjbGFzcyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlIGZpbmFsIDog
cHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0g
ICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpOwotICAgIHZpcnR1YWwgfk5pY29zaWFJbWFnZUJ1
ZmZlclBpcGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNlRGlzcGxheURlbGVnYXRl
KFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0KIAorICAgIC8vIEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmljb3NpYUxheWVyLmdldCgpOyB9
CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkg
Y29uc3QgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsOworICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4m
JiBuaWNvc2lhTGF5ZXIpCisgICAgICAgIDogbV9uaWNvc2lhTGF5ZXIoV1RGTW92ZShuaWNvc2lh
TGF5ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29udGVudExheWVyPiBtX25pY29z
aWFMYXllcjsKK307CisKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUgZmluYWwgOiBwdWJs
aWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
KCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBsYXRmb3JtTGF5ZXIoKSkp
CisgICAgeworICAgIH0KIAotICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
PiBtX3NvdXJjZTsKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJpZGVzLgorICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9Citwcml2YXRlOgorICAgIFJl
ZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICBSZWY8UGlwZVNv
dXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsK
IAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZSgpCkBAIC0xMzUsMzAgKzE1OSwxMCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVT
b3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIG1faW1hZ2VC
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBt
X25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmljb3NpYUltYWdlQnVmZmVyUGlw
ZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9zb3VyY2UgPSBhZG9wdFJlZihu
ZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZl
clBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291cmNlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlmIChtX3NvdXJjZSkKLSAg
ICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2MGFiYmU5ZDgxNTA1Yi4u
ZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4K
ICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsKICAgICAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzZlM2FiZTViYjNhYzQwYWY4
ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li43NTBhODRhZjYzODJjNTQxMzBjZjM2ZTg2ZDliYzhjNzYw
NGNmYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
bmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKHBsYXRmb3JtTGF5ZXIpKTsKKyAgICB9
CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVz
LgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICB9
CisKKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCit9CisKIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg4LDcgKzExNSwxNyBAQCBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKSA9
IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0
ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlKFdURk1vdmUoYXR0
cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKCZtX25pY29zaWFM
YXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV90ZXhtYXBM
YXllci5nZXQoKSkpCisjZW5kaWYKK3sKK30KKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLnB0cigpOwogfQogCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0
ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMpCkBAIC0xMjMsMTUgKzE2MCw2IEBAIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNz
Q29udGV4CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0jaWYgVVNF
KE5JQ09TSUEpCi0gICAgcmV0dXJuICZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCk7Ci0j
ZWxzZQotICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOwotI2VuZGlmCi19Ci0KICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaAppbmRleCBiNDBl
Nzk4MzNlODExMGY1ZDA5N2VhZDNiNTMxZjFlNjJkNmQ4ZDFiLi4yZGIyZThkN2Q5Y2Q3YjljYWJi
NGM5Y2E0MTcyNDNmMGU3YTBiNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7CiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsOwogI2lmIEVOQUJM
RShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAjZW5kaWYKQEAgLTYwLDYg
KzYwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKKyAgICBS
ZWY8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNjNTJhY2NjZTEzYzYwYzRi
Li5lOTk0MjU0NGJmZTkwOTQ0YzM1MGQxMzljODUzYzk3ZmQ2NDAzMGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2ICszNDIsMTIgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
VGV4dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRDbGllbnQo
dGhpcyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQorewor
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNw
bGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihib29sIHNob3cpCiB7CiAg
ICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIzNGEzZjQxZDFiYTMxN2Nm
ZmFhMTg2MTI5OC4uMGM4OWJhM2E1OTQ4YzQxOGMxMjc5ZWZhZDdhOTVhOTU4ZTgwZWEwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRl
bnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2Up
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdy
YXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBv
c2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdkOGE0YTM5Zi4uMDU0MTZh
NTAwMTViNmZjMWNkNTUwMzEwOTIxMmQzNjVlYmY3OWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3Rvcnku
aCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCIKICNp
bmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgiCkBAIC00
OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAjZW5kaWYKIH0KIAordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJl
ZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVn
YXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRm
b3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxh
dGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMp
IGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2ODk2YzVlNWIwMjQz
ODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi45N2RlYzU5YmYxNzkxOGEyY2M4MjBkNDY1ZmUw
NWIwZTNmZTI3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZERpcmVj
dGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldENv
bnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9z
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoUmVmUHRyPEdy
YXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0YzgxOTVmY2U4Li5kMzBiNGU0
MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBkYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkNvbG9yLmgiCiAjaW1wb3J0ICJGb250
QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2ltcG9ydCAiTGVnYWN5VGlsZUdyaWQuaCIKICNp
bXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQyZmQ5ZGQ1YzUyZWZiOTdjMzFkZDdkMDQ1ZDM5
OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0MjE5MTE1YTM4YzM1MDk3ZmJhOTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQpAQCAtNDEsOCAr
NDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFtZVNjcm9sbFZpZXc+ICpT
Y3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QKQEAgLTIwNiw3ICsyMDQsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplKCkKICNlbHNlCiAgICAgTE9HKEZyYW1l
cywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCksIE5TU3RyaW5nRnJvbUNs
YXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3LCBoKTsKICNlbmRpZgotICAgIE5TU2l6ZSB0
ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIHcpKSwgc3RhdGljX2Nhc3Q8
Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0MjEzMzE0CisgICAgTlNT
aXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6Om1heCgwLCB3KSksIHN0
YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0
MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNldEJvdW5kc1NpemU6dGVtcFNpemVdOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTIyMyw3ICsyMjEsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9s
bFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIE5TUG9pbnQg
ZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgo
LVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3Jv
bGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2Ug
TlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2lu
dCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50
LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQu
eSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCiAg
ICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1t
CmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3ZGQ1NGIuLjc1MjA1MjM5
ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBvcnQgPHBhbC9pb3MvVUlL
aXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhlbWUmIFRoZW1lOjpzaW5n
bGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFkNTQ1MzA4NzU1N2MxZTIw
YjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5MDU1MzQxMjM4N2NmNmNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsRGVmYXVsdFN5
c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxE
ZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KaW5kZXggOTM4NGQwMmRj
NzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMyYi4uZTBkYjgyN2Y0MDg0ZTc3NzJjNGQwNTRh
OWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0LDggKzM0LDYgQEAKICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2Fs
aXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNhY2hlKCkKQEAgLTE2Niw3ICsxNjQsNyBAQCBm
bG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9u
ZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAgICBbY29tcG9uZW50cyBzZXRNb250aDooaSAr
IDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0gW2dyZWdvcmlhbiBkYXRlRnJvbUNvbXBvbmVu
dHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAgIE5TU3RyaW5nICpmb3JtYXR0ZWREYXRlID0g
W2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6ZGF0ZV07Ci0gICAgICAgIG1heGltdW1XaWR0
aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0
ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtV2lkdGgs
IG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOwogICAgIH0KIAog
ICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3ZjdiN2U0MTdiMjY5YjZiNzBi
YzkyNzIzNGQ1MWQuLjY5NTBhMWUwZTUzMjAxODEwN2Q1ZmRmOGE1YTdiYmM1MTcwNTQwMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBA
IC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmln
dXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlcwogICAgIGVsc2UgaWYg
KHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGluZ1N0cmF0ZWd5KHJlbmRl
cmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAgICBjb25zdCBIVE1MQ2Fu
dmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KHJlbmRlcmVy
KCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXMtPnJlbmRl
cmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpD
b250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFz
KTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0YTAyNzg3ZmIxMTBkOTIz
Mi4uMTU5ZTUwNTY3NzA0MzMwMWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0Uo
R1JBUEhJQ1NfTEFZRVJfV0MpCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOyB9CisgICAgLy8gRklYTUU6
IFRoaXMgaXMgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDEwYTUzNjI5OWNmMjNl
YjlmODZmNTcyN2U4NTIzODNjZThhMDQwMDguLmI4YWE5ZmQ1NTFhODhhNmMzYzBhNjJhNzI5NDBm
YTNkMmM0NDE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTc4
LDggKzc4LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9y
RGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAgICBhc3NlcnRJc0N1cnJl
bnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsK
LSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIo
KTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1cmZhY2UqIGRpc3BsYXlC
dWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZl
cikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKICNpZiBI
QVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFdpbi5jcHAKaW5kZXggMjI0ZmExOGM4MTU5MjYyZmVmM2RlOGVlNTA3YTViN2Q3ZDc5ZGI5
OC4uOWRmODNmNDYwN2NjOThjMGQ4ZmI3ZWRmNjdlZDZmN2I4OTc4MWE0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xXaW4uY3BwCkBAIC02NSw2ICs2NSwxMyBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKKyNpZiBVU0UoR1JBUEhJQ1Nf
TEFZRVJfV0MpCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGxhdGZv
cm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisjZW5kaWYKKwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggN2Q5ZTg2N2Y5OGViOTUzMTdmOWY0
YTNiZTk5NmFkNDUxZDAxMDk5Zi4uNmJlMTE0ODkyMmQ1ZDdkMTU2MTE1NGYxNTcxOGUwOTJhMTIy
YTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QpOwog
ICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAKKyAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6
TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUpOwogICAgIGJvb2wgZGlzcGxheSgpOwogCiAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAg
LTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyOworICAg
ICAgICByZXR1cm4gbV9jb250ZW50c0J1ZmZlckhhbmRsZSB8fCAhIW1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXI7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpU
aHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygpOwpAQCAt
MTM1LDYgKzEzNiw5IEBAIHByaXZhdGU6CiAgICAgQnVmZmVyIG1fYmFja0J1ZmZlcjsKICAgICBC
dWZmZXIgbV9zZWNvbmRhcnlCYWNrQnVmZmVyOwogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlPiBtX2J1ZmZlckhhbmRsZTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgcmVtb3ZlZCBhbmQgbV9idWZmZXJIYW5kbGUgc2hvdWxkIGJlIHVzZWQgdG8gcmVmIHRo
ZSBidWZmZXIgb25jZSBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZQorICAgIC8vIGNhbiBiZSBlbmNv
ZGVkIG11bHRpcGxlIHRpbWVzLgorICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gbV9j
b250ZW50c0J1ZmZlckhhbmRsZTsKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIpCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+
IG1fZGlzcGxheUxpc3RCdWZmZXJIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQppbmRleCA0NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi40
ZTk0NjI3MGM3ZTUxOWFjMGY4MzBkZjhmZDI2ZDkyNDliOWYyZWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tCkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgp
OwogICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVy
LmRpc2NhcmQoKTsKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0Owog
fQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdApAQCAtMTEyLDkgKzExMywxMyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7CiAgICAgZW5jb2RlciA8PCBt
X2luY2x1ZGVEaXNwbGF5TGlzdDsKLQorICAgIC8vIEZJWE1FOiBGb3Igc2ltcGxpY2l0eSB0aGlz
IHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgZW5kIG9mIGRpc3BsYXkoKSBvbmNlIHRoZSBidWZmZXIg
aGFuZGxlcyBjYW4gYmUgY3JlYXRlZCBvbmNlCisgICAgLy8gYW5kIHN0b3JlZCBpbiBtX2J1ZmZl
ckhhbmRsZS4KICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFu
ZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7CisgICAgaWYgKG1fY29u
dGVudHNCdWZmZXJIYW5kbGUpIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpJT1N1
cmZhY2UpOworICAgICAgICBoYW5kbGUgPSBtX2NvbnRlbnRzQnVmZmVySGFuZGxlOworICAgIH0g
ZWxzZSBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewogICAgICAgICBzd2l0Y2ggKG1f
dHlwZSkgewogICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAgICAgICAgICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSkgewpAQCAtMjIwLDYgKzIyNSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAgfQogCisgICAgbV9j
b250ZW50c0J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBzdGQ6OnN3YXAobV9mcm9u
dEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyKSB7CkBAIC0yNTcsNiArMjYzLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2luY2x1ZGVEaXNwbGF5TGlz
dCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBjb250ZW50cykKK3sKKyAg
ICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7CisgICAgbV9kaXJ0
eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdSZWN0cy5jbGVhcigp
OworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKICAgICBB
U1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3LDYgKzI4MCwxMiBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBpZiAoUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQoKSkKICAgICAgICAg
bmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0b3JlV2lsbEJlRGlz
cGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5ZXItPm93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAgICAgbV9sYXllci0+
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5ZXIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBmcm9udCBi
dWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUg
bGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1
ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIzOGU4OTFiLi5jYTEx
MzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJpbmcgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAg
ICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0Nv
bnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVy
OgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIu
aG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAg
ICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGlu
Z0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZmYzczNmRkYTg1ZWNj
OWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJl
bW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJldHVybiBSZW1vdGVM
YXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVzLmxheWVySUQpOwog
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAt
MzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1v
dGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5kaWYKICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmIChtX2lzRGVidWdMYXll
clRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0
ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAgIHJldHVybiBtYWtl
V2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOnByb3BlcnRp
ZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0
SU9TLm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMwNjgwZTYwMTE5YzMuLjBi
MWJkMDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNv
bnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5
ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ0xheWVy
OgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5
ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRM
YXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtbV0tDb21wb3NpdGlu
Z1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29u
c3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToK
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjoKLSAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAg
ICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAgIGF1dG8gdmll
dyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3Ra
ZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2UoKS5wcm9jZXNzSWRl
bnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0SURdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0NWQ0
ZDM2OTMxNzg0NDcwNGQ0NzE4MGZjNGRhZDZmMWI5NjYyMzYuLmVjZTkxZmViYmE2MWY1MjQ3NGJh
MmNkNTJkNGYzZWU1ZjYxZDQyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA0OCw2ICs1MDQ4LDcgQEAKIAkJN0I0ODNGMUMyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUy
NUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEy
MzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAzOSw3ICsxMzA0MCw2IEBA
CiAJCQkJNTMyMTU5NTYxREJBRTcyRDAwNTRBQTNDIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4Mzk5MDIwMzFCRTlBMDJCMDAwRjM2NTMgLyogTmV0d29ya0xv
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDQ1NEQ3MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3
b3JrTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE3QjVGOTcyNzVFQzVFNTAwMkRD
MjJEIC8qIFdlYlB1c2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzkxNDk2NTFCRUE4
Mzg1MDBEMkQ5NTMgLyogTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDdGQzhBMDI1QjgzMzFDMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNDUyNkVEMjcxRTE2NDcwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzEyNyw2ICsxMzEyNyw3IEBACiAJ
CQkJMkQyNzlFMTkyNjk1NTc2ODAwNEIzRUVCIC8qIFByb3RvdHlwZVRvb2xzU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTdCNUY4MTI3NUU5N0I2MDAyREMyMkQgLyogUHVzaEFwcEJ1bmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QjVGN0QyNzVFOTdCNjAwMkRDMjJEIC8qIFB1c2hDbGll
bnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMy
MkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUU2ODg3
MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEwQzIyN0UyNDUxMTMwQTAwRUQ2MTREIC8qIFF1aWNrTG9va1RodW1ibmFpbGluZ1NvZnRMaW5r
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVFNTcyNTI0MDlGMTQyMDAyMDA1RDYgLyogUXVpY2tM
b29rVGh1bWJuYWlsTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNTEzLDYgKzEzNTE0LDcg
QEAKIAkJCQk1MTdCNUYyRTI3NTczODJBMDAyREMyMkQgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rp
b25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJDRDY5QTI3MjFGMEE5MDBG
N0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3
QjVGNzMyNzVFOTYwOTAwMkRDMjJEIC8qIFdlYlB1c2hEYWVtb25NYWluLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2MUNDQ0E2MjMxNDg1QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NjBFNzEyMzBGNjdGQzAwNDYxQUFF
IC8qIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzNTQ3LDcgKzEzNTQ5LDYgQEAKIAkJCQk5MzU2RjJEQzIxNTJCNkI1MDBFNkQ1
REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTMx
MDFGNDdBODYyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE3QjVGOTUyNzVFQkE2MzAw
MkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYw
RjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNDMjE0MDM1RjgwMENGQjIwQSAvKiBX
ZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTZGMkRFMjE1MkI3
MTAwMEU2RDVERiAvKiBXZWJTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MTE2
LDkgKzE1MTE3LDkgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKIAkJCQk1MTdCNUY5QTI3NUYzQTg2MDAyREMyMkQgLyogQXJndW1lbnRDb2RlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE3QjVGNjgyNzVBOUE3ODAwMkRDMjJEIC8qIFdlYlB1c2hU
b29sQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJE
QzIyRCAvKiBEYWVtb25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY5QzI3
NUYzQzM3MDAyREMyMkQgLyogRGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTdCNUY5QjI3NUYzQTk4MDAyREMyMkQgLyogRGFlbW9uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE3QjVGNjgyNzVBOUE3ODAwMkRDMjJEIC8qIFdlYlB1c2hUb29sQ29ubmVjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1RjY1Mjc1QThEN0YwMDJEQzIyRCAvKiBXZWJQ
dXNoVG9vbE1haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTE1MjE0LDcgKzE1MjE1LDYgQEAKIAkJCQlDREE5
M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljUGFyYW1l
dGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMUExNTJENzI0RTVBMjlBMDA5NzhDOEIgLyog
SGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlGNjQ0
MjE0NjU2MUIwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTE3QjVGOTkyNzVFQzYwMTAwMkRDMjJEIC8qIFdlYlB1c2hNZXNzYWdlQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QkY1RUM2NDI1
NDExNDU2MDA5ODRFNzcgLyogSlNJUENCaW5kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMx
NEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWFuYWdlci5t
bSBpbiBTb3VyY2VzICovLApAQCAtMTU1NzQsNiArMTU1NzQsNyBAQAogCQkJCUJDRUU3QUQwMTI4
MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE3QjVGN0EyNzVFOTdBNDAwMkRDMjJEIC8qIFdlYlB1c2hEYWVtb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY3OTI3NUU5N0ExMDAyREMyMkQgLyogV2ViUHVz
aERhZW1vbk1haW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY5OTI3NUVDNjAxMDAyREMy
MkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUYgLyogV2ViUlRDTW9u
aXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQz
MTg1MDBGMzI4MkMgLyogV2ViUlRDUmVzb2x2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tCmluZGV4IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFl
YjUuLjRhNGUwMzkzYmE1ZDcxNDgyMzViNjIzYjE1NDQzYmY5NjA5ZTE4MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBA
IC0zMiwyNCArMzIsNjkgQEAKICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRp
ZXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eSB7CitjbGFzcyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6
Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAg
V2ViQ29yZTo6SU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5QnVmZmVyLmdldCgpOyB9CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlPiBjcmVhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdh
dGUoaXNPcGFxdWUsIGNvbnRlbnRzU2NhbGUpKTsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQg
cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAg
ICAgIGxheWVyLnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAg
ICB7CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRD
b250ZW50cyhtX2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXll
ci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorCisgICAg
dm9pZCBzZXREaXNwbGF5QnVmZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIp
CisgICAgeworICAgICAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlz
cGxheUJ1ZmZlciA9IHsgfTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobV9kaXNwbGF5QnVmZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9k
aXNwbGF5QnVmZmVyLnNlbmRSaWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2Rpc3BsYXlCdWZmZXIgPSBkaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAgICB9CiAK
K3ByaXZhdGU6CisgICAgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVl
LCBmbG9hdCBjb250ZW50c1NjYWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisg
ICAgICAgICwgbV9jb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2Nh
bGU7CisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7Cit9OworCitjbGFzcyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eSB7CitwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fd2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwzMCAr
MTAzLDI1IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6
Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdM
TGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5
QnVmZmVyOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQor
ICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlz
cGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNl
UGl4ZWxSYXRpbykpCisgICAgeworICAgIH0KKworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5
QnVmZmVyOworICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFj
a2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9
IGNvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbV93ZWJHTExheWVyID0gYWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzphdHRycy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRy
cy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJX
ZWJHTCBMYXllciJdOwotI2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQot
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZSgpCiB7CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBp
eGVsQnVmZmVyKG1fZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHJlbW90ZSBNZWRpYVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmln
aHQoKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZh
Y2UoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUo
V1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVv
Um90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwpAQCAtMTAwLDI2ICsxNDAsMTYgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAg
ICB9CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0g
ICAgYXV0byBkaXNwbGF5QnVmZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNw
bGF5QnVmZmVyID0gV1RGTW92ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLSAgICBbbV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZl
ci0+YXNMYXllckNvbnRlbnRzKCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAg
IG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUtPnNldERpc3BsYXlCdWZmZXIobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9
CiAKIH0KIAogUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmQpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0g
ICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBjb250ZXh0OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4
IGU0ZGM4MTk4ZTE4ZWYzZGU2MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLjgxNDg1MDZjODM4ODFj
MmFjNmY4MzIyNTlmYTRhNzVkYmI1OTdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAKQEAgLTMzLDMzICszMyw1MyBAQAogI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3Jt
TGF5ZXJHQ0dMLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
bmFtZXNwYWNlIHsKIAorY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3Jl
YXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZN
b3ZlKHBsYXRmb3JtTGF5ZXIpKSk7CisgICAgfQorCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZv
cm1MYXllcigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxh
eWVyLmdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURl
bGVnYXRlKFBsYXRmb3JtTGF5ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6
IG1fcGxhdGZvcm1MYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQorICAgIHsKKyAgICB9CisK
KyAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKK307CisKIGNsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5IHsKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5IG92ZXJyaWRlcy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7
Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
KSBmaW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0K
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBs
ZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eVdDKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkK
KyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUo
bWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikpKQorICAgIHsKKyAgICB9CiAKLSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxh
dGZvcm1MYXllcjsKKyAgICBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OwogfTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0
aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9ybUxheWVy
KG1ha2VVbmlxdWU8V0NQbGF0Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpKQotewotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJl
cGFyZUZvckRpc3BsYXkoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkx
YWIxNDE4NzUwMDQxYjc5ZWQ1ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4NmYyMDQ4
ZGFmMTM3MzQ1MjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwCkBAIC0xNzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBj
bwogICAgIEFTU0VSVCghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1f
Y29udGV4dCk7CiAgICAgCi0gICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFv
d25lcigpIHx8ICFvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAg
ICBib29sIHVzZXNCYWNraW5nU3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0Zm9ybUNB
TGF5ZXJEcmF3c0NvbnRlbnQoKSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNE
aXNwbGF5KHRoaXMpKTsKKyAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAhdXNl
c0JhY2tpbmdTdG9yZSkgewogICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVs
bHB0cjsKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQotCiAgICAg
aWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZUF0dGFjaGVkICYmIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkKICAgICAg
ICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYgQEAgQ0ZU
eXBlUmVmIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogeworICAg
IGlmICghdmFsdWUpCisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRy
OworfQorCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIEFT
U0VSVChtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7Cisg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5jcmVhdGVT
ZW5kUmlnaHQoKSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50
cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgQVNTRVJU
KG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxlLmNvcHlT
ZW5kUmlnaHQoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJvcGVydGll
cy5jb250ZW50c1JlY3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaAppbmRleCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0YmFlMGZh
NjhjLi43MWQ0MGNlMzEzYTA2YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyArMTI3LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Q0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50
cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBz
ZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlm
CiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI6OkZpbHRlclR5cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRiMDBlMjUw
ODI0ZjY4YzkxODU2NTcxMDYwMzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYxODUwYWJm
MmE5YTc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlQ3VzdG9tLmgKQEAgLTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAg
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29sIG1fcHJv
dmlkZXNDb250ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMjdi
MGZjMDA1MTg1ZGFkNDViNmNhM2I3OGQ4MzAyMTMwOGU0OGY0ZS4uMTEyZjI3OGI3ZTNkOWYwY2E4
ZTYwNmI2ZTIxYjA0OTI0OTdmMTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
CiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KQEAgLTgyLDggKzgz
LDYgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBjdXN0
b21MYXllcjsKICAgICBbY3VzdG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAotICAg
IG1fcHJvdmlkZXNDb250ZW50cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXI7Ci0KICAgICBwcm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBvaW50M0QoY3Vz
dG9tTGF5ZXIucG9zaXRpb24ueCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3VzdG9tTGF5ZXIu
elBvc2l0aW9uKTsKICAgICBwcm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0Qo
Y3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueSwgY3Vz
dG9tTGF5ZXIuYW5jaG9yUG9pbnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRzID0gY3VzdG9t
TGF5ZXIuYm91bmRzOwpAQCAtMTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRmb3JtQ0FMYXll
cgogICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5p
dF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7Ci0gICAgfSBl
bHNlIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIpIHsK
LSAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwot
ICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVudHMgYnJlYWtz
IHRoZSBvcmlnaW5hbCBsYXllci4KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAg
fQogCkBAIC0xNTUsMTggKzE1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxh
eWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBp
ZiAobV9wcm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRz
RGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5l
ZWRzRGlzcGxheSgpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5kZXggMGY3ZmMx
YjU5MGVmYTAzZWI0ZjYwNmFjY2MwNGM2MWQwZDBkMDVmNC4uYmQ5YWNiZTkzMzNmMThhNzc5NzNi
ZWU5YWQwMTBjZjFmMDY1Nzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCkBAIC0yOTAsNiArMjkwLDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3Bs
YXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBhdXRvIHBs
YXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3Jt
TGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZv
cm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2VzQ29udGVu
dHNMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgK
aW5kZXggOTYyNzQxZmRkMDE1YTIzOGQ0OGQ0NTcwNGM1NjZmNmEwOTg1ZWJlNS4uMzZhNjg4YzYw
MmI2NjkyMTFkNDZjMTY4YjI4MWQwN2NmM2NiOTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV0NVcGF0ZUluZm8uaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1
ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzYs
NiArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIo
UGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlk
ZTsKICAgICBib29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgdXNlc0NvbnRlbnRz
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29s
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA0YTIyZWMyMzM4YTg5YjZlZjQzNDY2M2VjYzM5ODA3MmM3ZWEyMjAxLi4xMjk1YzJm
ZGE0MDUyNWQzNmRjNmYyODBjOTM4NThkYzdhYjY4ZDc1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDkg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBX
ZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84
MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW06CisgICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcg
bWVtYmVyIGZ1bmN0aW9uIGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTIt
MDkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgQnJpbmcg
dXAgYW5vdGhlciBpT1MgR1BVIFByb2Nlc3NlcyB0ZXN0ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA4NzZjNzQ0ODA4ZjQzNjFlM2NkNTJmNTNmZmQ2ZjYw
MDNhOGEwZjg3Li5lMTkxMWRmNmMwOTNlMzhjOGQ0MmZhMTc5ZWZkNWU3NzJlYTY1ZGM0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00MCw2ICs0MCwyMSBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NsYXNzIFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xDb2NvYSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRl
eHRHTENvY29hPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYg
YXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0OworICAgIH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorcHJpdmF0ZToKKyAgICBUZXN0ZWRHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
aWJ1dGVzKQorICAgICAgICA6IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV1RGTW92
ZShhdHRyaWJ1dGVzKSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0xDb2NvYVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OCw3ICs3Myw3IEBAIHByaXZhdGU6CiAK
IHN0YXRpYyBjb25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemUgPSAzOwogCi1z
dGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1
bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQorc3RhdGljIFJlZlB0
cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQo
V2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0g
dHJ1ZTsKQEAgLTY3LDE0ICs4MiwxNCBAQCBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOgogICAgIGF0
dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOwog
ICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7Ci0gICAgYXV0byBj
b250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUo
YXR0cmlidXRlcykpOworICAgIGF1dG8gY29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKICAgICBpZiAoIWNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUu
d2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwogfQog
Ci1zdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRz
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24p
CitzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRz
KFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCiB7
CiAgICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICBXZWJDb3JlOjpDb2xvciBl
eHBlY3RlZCB7IGl0ZXJhdGlvbiAlIDIgPyBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4gOiBXZWJDb3Jl
OjpDb2xvcjo6eWVsbG93IH07CkBAIC0xMTksMTUgKzEzNCwxNSBAQCBURVNUX0YoR3JhcGhpY3ND
b250ZXh0R0xDb2NvYVRlc3QsIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVy
ZW5jZU1ldAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzOwogICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOwogICAgIEVYUEVDVF9FUShhdHRy
aWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2U6OkRlZmF1bHQpOwotICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNTRVJUX05FKGRlZmF1bHRDb250
ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOwotICAgIGF1dG8g
bG93UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRl
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7Cisg
ICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpj
cmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9
KTsKICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclBy
ZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRl
eHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKKyAgICBhdXRvIGhpZ2hQ
ZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAg
ICBBU1NFUlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBFWFBF
Q1RfTkUobG93UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0w6OlJFTkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446723</attachid>
            <date>2021-12-10 07:17:31 -0800</date>
            <delta_ts>2021-12-10 07:36:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211210171729.patch</filename>
            <type>text/plain</type>
            <size>123466</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjOTg2ZDgyNjE5Y2I4
MjlkNmUyYjY4NTI4ZWZkZWY5YTliZjZhYi4uNDA0OWNlMzcxODg4Y2EzNTA5Njk2ODY4ZGY1YjI4
N2E3ODE0ODg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMS0xMi0wOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZWNv
bmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJlLgorICAg
ICAgICBTZWUgV2ViS2l0IHNpZGUgZm9yIHRoZSBkZXNjcmlwdGlvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTEwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEVuYWJsZSBiaWRpIGhhbmRsaW5nIGZvciBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDY1OGE0ZDJlMjQxNTZmNDQzYWI4NTZkMmFjNGJhYTkyZDc0ODgwM2UuLjA1YTAz
OWI3YmFmNDJlZjlkNzQyOGFhNzg0MDg5MTNhMjVkZWJjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjUgQEAKKzIwMjEtMTItMDkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5IHRvIGFzc2lnbiBJT1N1
cmZhY2VzCisgICAgICAgIHRvIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjb250ZW50cy4KKworICAg
ICAgICBNYWtlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSB1c2UgdGhlIGFkZGVk
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKworICAgICAg
ICBTZWNvbmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJl
LgorICAgICAgICBUaGUgdGVzdCBmYWlsdXJlIGhhcHBlbmVkIGR1ZSB0byBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZQorICAgICAgICBzZW5kaW5nIHRoZSBzYW1lIGRyYXduIGJhY2tpbmcgc3RvcmUg
d2l0aCBkaWZmZXJlbnQKKyAgICAgICAgcHJvcGVydGllcyBidXQgc2FtZSBpbWFnZS4gVGhlIG9y
aWdpbmFsIHBhdGNoIHRyaWVkCisgICAgICAgIHRvIHVzZSBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6bV9idWZmZXJIYW5kbGUgYWxzbworICAgICAgICBvbiB0aGUgc2VuZCBzaWRlIHRvIHN0b3Jl
IHRoZSBoYW5kbGUuIFRoaXMgaGFuZGxlCisgICAgICAgIHdhcyBlbmNvZGVkIG11bHRpcGxlIHRp
bWVzLiBUaGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBJUEMg
ZW5jb2RpbmcgZGVzdHJveXMgdGhlCisgICAgICAgIHVuZGVybHlpbmcgbWFjaCBzZW5kIHJpZ2h0
IGV2ZW4gdGhvdWdoIHRoZSBlbmNvZGluZworICAgICAgICBBUEkgc2lnbmF0dXJlIHdvdWxkIHNp
Z25pZnkgdGhhdCB0aGUgSGFuZGxlIHN0YXlzCisgICAgICAgIGludGFjdC4gU2hhcmVhYmxlQml0
bWFwLCBTaGFyZWRNZW1vcnkgd2lsbCBiZSBmaXhlZCBpbgorICAgICAgICBmdXR1cmUgY29tbWl0
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6Omhhc0Zyb250QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29u
dGVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogU2FmYXJpIGxvc2VzIE5l
dHdvcmsgYWNjZXNzIHdoZW4gZXN0YWJsaXNoaW5nIFdlYlJUQyBzZXNzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3ZjNjY2NlYmVkMjllMTM1N2JiODk4Yjc5MTQwNDM0NzVjYjQ0YmYzLi5kMTY2
ZDAxYjRkZGQwNDE2YjlmZjBmNmUyYjY1YzlhNTkxMWZmN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0NjEsNiArMTQ2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckZhY3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0u
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZmM5NmEwYjYxMjA3YTRkYTczNjFjNTEz
MjRkZjUyNzYzMWUwYzkyLi43ODE3ZDdmYjA1ZTczNTczOTI4OGJjY2JlODVkMGU0ODI1MWM4NGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlv
bkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhYjUzNDlhYThhMjhjNjJi
ZTA4YTgwOWVkMmY2MDJmMzdlYTE0NWE3Li4zN2EyNTJjODRkNzMyN2UxMmMxNTcwNzY4NTVmZjQw
YTExMDE3NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxNTY2YjIwNzkyNDc4NGZlZWRkOGE2
NzYzZmI5NmI5NjFkNzM1NzVhLi4xYTU0N2Q3MTRlNGE0N2NmM2FhZGFiYmNmMGRkMTJlYjBkMzVk
ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MSw3ICszOTEsNiBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggOWY4NWU0OTg2
YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgzYzg2ZDI3NTY1
NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4ICsyMDQ3Miw2
IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfTUVU
QUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xBU1NfJF9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5X
aW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNTXyRfV2ViR0xM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRfV2ViTGF5ZXIK
IF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0MSw2IEBAIF9P
QkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhpdFdhcm5pbmcK
IF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fdGFyZ2V0CiBf
T0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2FjdGlvbgogX09C
SkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVsZAotX09CSkNf
SVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2xh
eWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmltcAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNfSVZBUl8kX1dl
YlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NGIzOWU1N2NmNTNl
OGFhMzJhNmNiZDhmNTFhNzRhZGY0ZjAxNzEuLjQyYTdjNGNjYzk2ZmZmNzQ2MWM1MTI5NTBlODFh
NDU5NjVjNDNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0NDQsNyArMTQ0NCw2IEBACiAJCTQ5RUNFQjcwMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3Bl
cmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
M0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07
CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNDEx
MDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87IH07Ci0JCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZE
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFBQUY1RTdFMDA2
MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMwMDYyODAzQiAv
KiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yMzg0LDYgKzIzODMsNyBAQAogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1
MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8q
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyog
Q1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkzNzgsOCArOTM3OCw2IEBACiAJ
CTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3
QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZD
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
RkZBOUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDA2LDYg
KzExNDA0LDcgQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVE
MjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExNDE3LDYgKzExNDE2LDcgQEAKIAkJN0JCMzRBNDcyNTM3NzZDNzAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0No
ZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVC
QTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
Q0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBTkdMRVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCQ0Q0MkRBMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkNENDJEQzI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXND
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODY4NCw2ICsyODY4NCw4IEBACiAJCQkJMEY1ODBCMDkwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuY3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEy
NjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0
MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywK
KwkJCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmggKi8sCiAJCQkJMUFDNjk1OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBo
aWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJCQkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdy
YXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLywKIAkJCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLywKQEAgLTI4OTY5LDggKzI4OTcxLDYgQEAKIAkJ
CQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8s
CiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdl
YkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovLApAQCAtMzMwNDIsNiArMzMwNDIs
NyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQw
IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAv
KiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdE
NjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTM0
Mzc0LDYgKzM0Mzc1LDcgQEAKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhp
Y3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIw
QjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFw
aGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAw
QTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEw
MTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzYwNiw3ICszNzYwOCw2IEBACiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdl
YkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERC
MTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQy
RDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkVDMzYyRDkyNUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJk
NWMyNWI2YmFlYTIyM2Y1NjdiLi43MmIyY2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZj
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDEx
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRl
cmVmQ2FudmFzQmFzZSgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhl
bEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGVi
OTk3OGU4MDIzZS4uNWFlNzliZjBiOWUzOTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRp
bmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkg
eyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBo
YXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNB
Y3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcikgeyBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3Rp
dmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1
Nzg2OGIwYTIzYjIyM2JkZGU5MWMwNzhkYmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5
YzQyYTRlZjBmOWQyODkxYWQ1NjEzNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEw
ICs1MSwxMCBAQCBIVE1MQ2FudmFzRWxlbWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
OjpjYW52YXMoKSBjb25zdAogICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGJhc2UpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlclBpcGUtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDlj
YmU0OTc2MGE2YzY2YTM4MzRkZjk5MTk5Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0
Mjk5NzRkMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGJvb2wgaXNQbGFjZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBp
c0dQVUJhc2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCBhYzgxZDhjOTMyNDQ0N2NlYjdmYTM4ZTMzYTk2OWFmYzFhMDM4
NGEwLi5jZTAwZTYzYThmYjc0ZmE4YzVmZGUzM2I5MjNjOWQ1ZjcxNmM0Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
QEAgLTY0NTIsOSArNjQ1MywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omlz
Q29udGV4dFVucmVjb3ZlcmFibHlMb3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9z
dCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsKIH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0
KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3Jt
TGF5ZXIoKSA6IDA7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGlj
eVJlc29sdXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpyZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAppbmRleCA2NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUw
NTgxNjA4Li5iNTQ1N2U3MTM3Zjg0MjZkYzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCkBAIC0zODYsNyArMzg2LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAgICAgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dEdyb3VwLmdldCgpOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCA3MWEzOGFmMDZiMzU5MTI2M2M3NDQyYmRiNjg1MGU2ZjYzNDU1OWY5Li5iNWY1ZWNkMzgx
Y2E5MGEyN2Q4ZDJhYjUyZDNlZmIyNTJiZWQxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwx
MiBAQAogI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC03ODYsNyArNzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAg
ICB9OwogCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaGFzQWxwaGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApp
bmRleCBjNzVkYTU2YTgzNjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li40OTJlNDI2YjYz
MDUyZjQ0OGY3NTc5MDc4MzE5ZWQwYmE2ZjJlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2
ICs2MTMsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0K
IAordm9pZCBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29s
b3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJm
OTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLmViNjM1OWZlM2YyMzVjMWQz
OGJlNjBiYTA2NTAwZjY3OGNmMTMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
R3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5n
OwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29s
b3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXll
clB1cnBvc2UpOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXJJRCBjb250ZW50c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk5OTg4OTg2YTJmN2Y4ZGRmNmIwZDhjMmQzOTQ2YzNmYzEzYTM3NmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0Uo
Q0EpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0Ep
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6cHJlcGFyZVRvRGVs
ZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NM
YXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMTZj
YzY4Y2Y5NTdhNjdhNTIxZjczNjJmMmY3Nzc1ZDRjMGE3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYg
VVNFKENBKQorY2xhc3MgUGxhdGZvcm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNw
ZWNpZmljIGludGVyZmFjZSBmb3IgYXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIu
CisvLyBSZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hv
dyB0aGUgcGFydGljdWxhciBjb250ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdy
YXBoaWNzTGF5ZXIuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJmM2Zh
Y2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2N2U3
ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKLS8v
IFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdl
ZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBh
IFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRlbnRz
IGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZm
ZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1ZmZl
clBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoKICAg
ICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7CkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3MGQw
MWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21t
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4
NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li5hMTgyYzUyNTRlODAyY2E3OWEwNGE2
NzZhYWRmMWE1MWJkNjA4ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAg
LTEyNDYsNiArMTI0Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29s
aWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKICAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gbnVsbHB0cjsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxw
dHI7CiAKICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCiAgICAgICAgIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7CkBAIC0xMjc3LDYgKzEyNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgaWYgKG1fY29udGVudHNM
YXllcikKICAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgfQorICAgIG1f
Y29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KQEAgLTEzMDcsNiArMTMxMCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYm
IG1vZGVsKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1
cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQor
ICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNvbnRl
bnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtMTM0
Myw2ICsxMzQ3LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgICAgIG1fY29udGVu
dHNMYXllciA9IG51bGxwdHI7CiAKICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcGxhdGZv
cm1MYXllciA/IHB1cnBvc2UgOiBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBtX2Nv
bnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJD
aGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGVs
ZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVu
dHNMYXllciAmJiBkZWxlZ2F0ZSA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50
c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChkZWxl
Z2F0ZSkgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOwor
ICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShkZWxlZ2F0ZSk7Cisg
ICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJy
ZW50bHkgZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2Fs
bHMgc2V0Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0
aW5ncyBhY2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3Rv
cmVBdHRhY2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRl
c0RyYXdpbmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnByZXBh
cmVUb0RlbGVnYXRlRGlzcGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CiAKICAgICBub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50
c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKQEAgLTE4NzgsNiArMTkwNywxOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNp
Z25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUoYmxh
bmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5
ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09IG1fY29udGVudHNMYXllcik7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworfQorCiBzdGF0aWMg
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBl
YXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAg
ICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpM
aWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tk
cm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExh
eWVyOwpAQCAtMjc5Miw3ICsyODMzLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRmb3Jt
IGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQg
aW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDogZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllclB1
cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NTQsMTMgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFu
Z2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVy
LCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAg
Ly8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAgIGlm
IChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRv
bVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAgICAg
ICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYs
IDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdmMzli
NDhkODcuLmY2YjJjOTRjYjNkNmZmYWQwMzVlYjc0OTJhMjU1ODIyNTkyYTAwY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3Zl
cnJpZGU7CkBAIC0xOTMsNiArMTk1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGFjY2VsZXJhdGVkQW5pbWF0aW9uc0Zv
clRlc3RpbmcoKSBjb25zdCBmaW5hbDsKIAorICAgIGNvbnN0ZXhwciBzdGF0aWMgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uID0gQ29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworCiBwcml2YXRlOgogICAg
IGJvb2wgaXNHcmFwaGljc0xheWVyQ0EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKQEAgLTIxMiw2ICsyMTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVl
KCk7IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGRyYXdzQ29udGVudCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVy
TGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJu
IGxheWVyRGlkRGlzcGxheShsYXllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJD
T1JFX0VYUE9SVCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzAwLDEwICszMDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1
aXJlc1RpbGVkTGF5ZXIoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNo
YW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0OwotCi0gICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7
CisgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwog
ICAgIFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBs
YXRmb3JtQ0FMYXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwpAQCAtNjQ0LDYgKzY0Nyw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9k
ZWw7CiAjZW5kaWYKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYx
YTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRkYTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgz
YTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JK
Q19DTEFTUyBBVlBsYXllckxheWVyOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRl
eHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitj
bGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiArNTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVy
Q2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZv
cm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOwor
I2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7Cisj
ZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZk
NzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5
KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRl
eCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1
ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJ
T1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpp
bmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4
ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMwMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAj
aW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJX
ZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAg
ICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAg
ICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNL
aW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0K
IApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVU
aWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEw
ICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FW
Rm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9
IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVh
dGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXllclR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXll
ckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpAQCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBh
bGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xs
Q29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlm
IChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09
IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBl
bHNlCiAgICAgICAgIFttX2xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxh
eWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFj
ZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQo
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRl
bnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCA5MWU2
NDcwODAzYTU0OGM2MWI5NTg2Nzc0YmNhOTU1MTVkOTVkZDg4Li4zMDg5ODAwN2VmMmZmNjY5MjY5
YWY2NGY2OTEyYzkwOTY4Zjc5NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA5YWIyZDc0NDEwYTA2YmMwZGU2NDE1MGU4ZTEy
MDNlMDUzYWQ1OTRiLi5lMjY4OTU3MjY5NDk4OGY0ZTJiOTg3OTUyMWQ5ZDI4ZDc1MWVlZWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQ3MCwxMSArNDcwLDYgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gbV90
ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9j
b250ZXh0T2JqKQpAQCAtODAzLDYgKzc5OCwxMSBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdM
Q29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb25maWdPYmo7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZGEw
ZmUwZjQ0YTNhODQ0MGU2NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0KLS8vIEEgbGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJmYWNlLgotV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5MDMxNTU2
OTExMTM2YzMxZjVkNjhlZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotCi0j
aW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKLSNp
bXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR0xMYXllcgot
Ci0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAg
IHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRlbnRz
U2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwotfQotCi0vLyBXaGVu
IHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVlZCB0byBmbGlwIHRo
ZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9TdXJmYWNlIHByb3Zp
ZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkgaW5jb21pbmcgdHJh
bnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50cyBsYXllcikgYW5k
IGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFuZCBtYWtlIHN1cmUg
dGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9pZClzZXRUcmFuc2Zv
cm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zv
cm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5jaG9yUG9pbnQ6KENH
UG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngsIDEu
MCAtIHAueSldOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBTaG93IHRoZSBzZWxm
LmNvbnRlbnRzIGFzIHRoZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhpbmcgaW4gdGhpcyBm
dW5jdGlvbi4KLSAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVy
ICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5kCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCmluZGV4IDhkNWQyNWFiMTBiNDVlM2Y5YTZlODM4YWUxMDk0MWU2ZmMwZTVlMzgu
LjhmNmYzNzUwZjQyM2EyZTA4ZmY5YWM3NDgxYWM5YTE5MWM0NWNjMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0yOSw5ICsyOSw5IEBA
CiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAv
LyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKICNp
bXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0
b3IuaCIKQEAgLTQwLDQ2ICs0MCw4MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExheWVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cmli
dXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIGxheWVyOwotfQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50
c1NjYWxlKSk7CisgICAgfQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVl
KG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNT
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMoKm1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKworICAgIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNl
dERpc3BsYXlCdWZmZXIoSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIucmVzZXQo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5
QnVmZmVyICYmIGRpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlCdWZmZXItPnN1
cmZhY2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50
c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGJvb2wgbV9p
c09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250
ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBX
ZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICwgcHJpdmF0ZSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudAogI2Vu
ZGlmCi0KIHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTENv
Y29hOjppc1ZhbGlkKCkgJiYgbV93ZWJHTExheWVyOyB9CisKICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTENvY29hIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExh
eWVyLmdldCgpKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5KCkgZmluYWw7CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBEaXNw
bGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaXNw
bGF5V2FzUmVjb25maWd1cmVkKCkgZmluYWw7CiAjZW5kaWYKLQogICAgIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKLSAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogCisgICAgUmVmPERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBm
cmllbmQgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogfTsKIAogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29h
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcyksIHsgfSkKLSAgICAsIG1fd2ViR0xM
YXllcihjcmVhdGVXZWJHTExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQorICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNy
ZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKIHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpzaW5n
bGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwpAQCAtOTYsMTMgKzEzMyw3IEBAIFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KQogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCk7
Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2Uu
Z2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNl
LT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5z
ZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZi
ZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNhMzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVD
b21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VB
cHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBv
cnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQu
aD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0Nv
cmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQw
YWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRl
MDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JT
cGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJj
Li4zN2UwZjU0YmI2MDAxMjM0ZmI2ZmU0YWQ5MmU1NzhkYjhmMzAzZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4
MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ug
dm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRz
RGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGly
dHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsK
LSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7
CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8
fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5
ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRp
cnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJT
aG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTExMywxMCArMTE2
LDE0IEBACiAgICAgICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgW3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2
b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxh
eWVyLT5vd25lcigpIDogbnVsbHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3Jt
Q0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxh
dGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IFtzdXBlciBkaXNwbGF5XTsKKyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJ
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlLmNwcAppbmRleCAzMzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRk
Li4yZjc0ZDBlYmFkYjdkODJlOTIwZDQyOGNkOWUxOWNmNmRkZTM2MDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2Ug
Tmljb3NpYSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xh
c3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZl
clBpcGU6OlNvdXJjZSwgcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGll
bnQgewogcHVibGljOgogICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2
aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1
ZmZlclBpcGU6OlNvdXJjZSBvdmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmKSBmaW5hbDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKLQorICAgIENvbnRlbnRMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgorICAgIC8vIENvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJ
Zk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lh
TGF5ZXI7CkBAIC02MiwxNiArNjQsMzggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCi1jbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZp
bmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitjbGFzcyBQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSB7CiBwdWJsaWM6Ci0gICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpOwotICAgIHZpcnR1YWwg
fk5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNv
c2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0KIAorICAgIC8v
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmljb3Np
YUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNv
dXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgICAgIDogbV9uaWNvc2lhTGF5ZXIo
V1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29udGVu
dExheWVyPiBtX25pY29zaWFMYXllcjsKK307CisKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KIAotICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJp
ZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9Citw
cml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsK
KyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1OSwxMCBAQCB2b2lkIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVy
KQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5
ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9zb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJl
ZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291
cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIq
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlm
IChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2
MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsK
ICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzZl
M2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li43NTBhODRhZjYzODJjNTQxMzBj
ZjM2ZTg2ZDliYzhjNzYwNGNmYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDMyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0
ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKHBsYXRmb3Jt
TGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9
OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg4LDcgKzExNSwx
NyBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJC
YXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpj
cmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKK3sKK30KKworUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKKyAgICByZXR1cm4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOwogfQogCiBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCkBAIC0xMjMsMTUgKzE2MCw2IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVBsYXRmb3Jt
TGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1MYXllcigpIGNv
bnN0Ci17Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgcmV0dXJuICZtX25pY29zaWFMYXllci0+Y29u
dGVudExheWVyKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOwotI2Vu
ZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAppbmRleCBiNDBlNzk4MzNlODExMGY1ZDA5N2VhZDNiNTMxZjFlNjJkNmQ4ZDFiLi4yZGIy
ZThkN2Q5Y2Q3YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7CiAKICAgICAvLyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAj
ZW5kaWYKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKTsKKyAgICBSZWY8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNj
NTJhY2NjZTEzYzYwYzRiLi5lOTk0MjU0NGJmZTkwOTQ0YzM1MGQxMzljODUzYzk3ZmQ2NDAzMGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2
ICszNDIsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMGM4OWJhM2E1OTQ4YzQxOGMxMjc5ZWZhZDdhOTVh
OTU4ZTgwZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdk
OGE0YTM5Zi4uMDU0MTZhNTAwMTViNmZjMWNkNTUwMzEwOTIxMmQzNjVlYmY3OWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAj
ZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRl
eCA2ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi45N2RlYzU5YmYxNzkx
OGEyY2M4MjBkNDY1ZmUwNWIwZTNmZTI3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250
ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBD
b250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVm
UHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5
TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0Yzgx
OTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBkYThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkNvbG9yLmgi
CiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2ltcG9ydCAiTGVnYWN5
VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQyZmQ5ZGQ1YzUyZWZi
OTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0MjE5MTE1YTM4YzM1
MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xs
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lP
Uy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFt
ZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QKQEAgLTIwNiw3ICsy
MDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplKCkKICNlbHNl
CiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCks
IE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3LCBoKTsKICNlbmRp
ZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIHcp
KSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0
MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6
Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIGgpKSB9OyAvLyB3
b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNldEJvdW5kc1NpemU6
dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTIyMyw3ICsy
MjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAgIE5TUG9pbnQgdGVt
cFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50
LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07
ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBO
U1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5d
LnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJv
dW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3
ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBv
cnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhl
bWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFk
NTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5
MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
aW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMyYi4uZTBkYjgyN2Y0
MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0
LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNhY2hlKCkKQEAgLTE2
Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAgICBbY29tcG9uZW50
cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0gW2dyZWdvcmlhbiBk
YXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAgIE5TU3RyaW5nICpm
b3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6ZGF0ZV07Ci0gICAg
ICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0
KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lkdGggPSBzdGQ6Om1h
eChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRl
KSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3Zjdi
N2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjY5NTBhMWUwZTUzMjAxODEwN2Q1ZmRmOGE1YTdi
YmM1MTcwNTQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
cwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGlu
Z1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAg
ICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQg
PSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0
YTAyNzg3ZmIxMTBkOTIzMi4uMTU5ZTUwNTY3NzA0MzMwMWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOyB9
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUg
cmVtb3ZlZC4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4
IDlkNzY3ZWMyMTY1M2U3MGVlNDk4YjRlODkzZWYzZDc3OGEzMDA0ZGEuLjZjOTA2MWI1ZTJlZmU1
YjJmY2RjMGY4NTAxOGZjYzFiOTY0N2VlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFy
ZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQt
PmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1
cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBp
ZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsKICAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJp
Z2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAppbmRleCAyMjRmYTE4YzgxNTky
NjJmZWYzZGU4ZWU1MDdhNWI3ZDdkNzlkYjk4Li45ZGY4M2Y0NjA3Y2M5OGMwZDhmYjdlZGY2N2Vk
NmY3Yjg5NzgxYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKQEAgLTY1LDYg
KzY1LDEzIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRmb3JtTGF5ZXIo
KTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi42YmUxMTQ4OTIy
ZDVkN2QxNTYxMTU0ZjE1NzE4ZTA5MmExMjJhNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7
CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2NvbnRlbnRzQnVmZmVySGFu
ZGxlIHx8ICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKICAgICB9CiAKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0
YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CkBAIC0xMzUsNiArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBC
dWZmZXIgbV9iYWNrQnVmZmVyOwogICAgIEJ1ZmZlciBtX3NlY29uZGFyeUJhY2tCdWZmZXI7CiAg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFuZGxl
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCBtX2J1ZmZlckhhbmRs
ZSBzaG91bGQgYmUgdXNlZCB0byByZWYgdGhlIGJ1ZmZlciBvbmNlIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlCisgICAgLy8gY2FuIGJlIGVuY29kZWQgbXVsdGlwbGUgdGltZXMuCisgICAgc3RkOjpv
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBtX2NvbnRlbnRzQnVmZmVySGFuZGxlOwogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9kaXNwbGF5TGlzdEJ1ZmZlckhhbmRsZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdl
MDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjRlOTQ2MjcwYzdlNTE5YWMwZjgzMGRmOGZkMjZkOTI0
OWI5ZjJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMyw2ICsxMDMs
NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiAg
ICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsK
ICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOworICAgIG1fY29udGVudHNCdWZm
ZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0xMTIsOSArMTEzLDEz
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9p
c09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCisgICAgLy8g
RklYTUU6IEZvciBzaW1wbGljaXR5IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2Yg
ZGlzcGxheSgpIG9uY2UgdGhlIGJ1ZmZlciBoYW5kbGVzIGNhbiBiZSBjcmVhdGVkIG9uY2UKKyAg
ICAvLyBhbmQgc3RvcmVkIGluIG1fYnVmZmVySGFuZGxlLgogICAgIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIpIHsKKyAgICBpZiAobV9jb250ZW50c0J1ZmZlckhhbmRsZSkgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CisgICAgICAgIGhhbmRsZSA9IG1fY29u
dGVudHNCdWZmZXJIYW5kbGU7CisgICAgfSBlbHNlIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyKSB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgVHlwZTo6SU9T
dXJmYWNlOgogICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CkBAIC0yMjAsNiArMjI1LDcgQEAg
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxs
b3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAg
aWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNjMsMTMgQEAgYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAg
cmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9
CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNl
bmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBXVEZN
b3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7Cisg
ICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNp
emUoKSk7CkBAIC0yNjcsNiArMjgwLDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9s
YXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250
ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsK
KyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1f
bGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8v
IE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRo
YXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5Lgog
ICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0
NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmEx
NDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSAr
MTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24o
KSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAi
IDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29u
dGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1p
ZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYz
YmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFj
ZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsy
OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlm
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxh
eWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0
b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0g
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
ICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4g
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXll
cklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJM
YXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2Zk
MzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUwYWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBm
YjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhW
aWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03
NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9z
dCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3
aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMu
aG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTQ1ZDRkMzY5MzE3ODQ0NzA0ZDQ3MTgwZmM0ZGFkNmYxYjk2
NjIzNi4uZWNlOTFmZWJiYTYxZjUyNDc0YmEyY2Q1MmQ0ZjNlZTVmNjFkNDJlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDQ4LDYg
KzUwNDgsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3
QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMDM5LDcgKzEzMDQwLDYgQEAKIAkJCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0Mg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTkwMjAzMUJF
OUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0
RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0NTI2RUQyNzFFMTY0
NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzMTI3LDYgKzEzMTI3LDcgQEAKIAkJCQkyRDI3OUUxOTI2OTU1NzY4MDA0QjNFRUIgLyog
UHJvdG90eXBlVG9vbHNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgxMjc1RTk3QjYw
MDJEQzIyRCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3RDI3
NUU5N0I2MDAyREMyMkQgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxN0I1Rjk1Mjc1RUJBNjMwMDJEQzIyRCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5l
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyogUXVp
Y2tMb29rVGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1NzI1
MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM1MTMsNiArMTM1MTQsNyBAQAogCQkJCTUxN0I1RjJFMjc1NzM4MkEwMDJEQzIy
RCAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3MzI3NUU5NjA5MDAyREMyMkQgLyogV2ViUHVz
aERhZW1vbk1haW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIy
RCAvKiBXZWJQdXNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxQ0NDQTYyMzE0ODVB
QTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg2MEU3MTIzMEY2N0ZDMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2Vi
UmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM1NDcsNyArMTM1NDksNiBAQAog
CQkJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUxN0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVu
dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2QkMwM0MxRkEyNjZE
QTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzEx
QTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM1NkYyREUyMTUyQjcxMDAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTUxMTYsOSArMTUxMTcsOSBAQAogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTUxN0I1RjlBMjc1RjNBODYwMDJE
QzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY2ODI3
NUE5QTc4MDAyREMyMkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxN0I1RjlDMjc1RjNDMzcwMDJEQzIyRCAvKiBEYWVtb25FbmNvZGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJEQzIyRCAvKiBEYWVt
b25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY2ODI3NUE5QTc4MDAyREMy
MkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVG
NjUyNzVBOEQ3RjAwMkRDMjJEIC8qIFdlYlB1c2hUb29sTWFpbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTUy
MTQsNyArMTUyMTUsNiBAQAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMx
QTE1MkQ3MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY5OTI3NUVDNjAxMDAy
REMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlG
NjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCRjVFQzY0MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU3NCw2ICsx
NTU3NCw3IEBACiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY3QTI3NUU5N0E0
MDAyREMyMkQgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjc5
Mjc1RTk3QTEwMDJEQzIyRCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUxN0I1Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNl
TG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1
NDMxODUwMEYzMjgxRiAvKiBXZWJSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyQyAvKiBXZWJSVENSZXNvbHZlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNi
ZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uNGE0ZTAzOTNiYTVkNzE0ODIzNWI2MjNiMTU0
NDNiZjk2MDllMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2OSBAQAogI2ltcG9ydCAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVy
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7
CiAKLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1Ymxp
YyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNw
bGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMg
UmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBm
bG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOwor
ICAgIH0KKworICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNl
dE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworICAgIH0KKworICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZl
cikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0K
KworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
OjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3QgTWFj
aFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1
ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxh
eUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZmZXIu
Y29weVNlbmRSaWdodCgpOworICAgIH0KIAorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlz
cGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAg
IDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAg
IGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxh
eUJ1ZmZlcjsKK307CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBm
aW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVy
LmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJu
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMwICsxMDMsMjUgQEAgcHVibGljOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
KSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJp
YnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRl
cy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorCisg
ICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmll
bmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2Vi
R0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVs
UmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAg
IFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1f
ZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodCht
X2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNW
UGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBA
IC0xMDAsMjYgKzE0MCwxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlm
ICghZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZm
ZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIg
c2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlC
dWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0
ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVu
ZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYz
ZGIzZGZkN2E2MC4uODE0ODUwNmM4Mzg4MWMyYWM2ZjgzMjI1OWZhNGE3NWRiYjU5N2I1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAt
MzMsMzMgKzMzLDUzIEBACiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldDUGxhdGZvcm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBs
YXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9CisK
KyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZv
cm1MYXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9w
bGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
IGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGljOgog
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogcHJpdmF0ZToKLSAg
ICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tl
bmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+
KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0KIAotICAgIFBs
YXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlZjxQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhH
UFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dM
PihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4u
NThiNmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDEx
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9u
KFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVy
KCkgJiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3Rv
cmVDaGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXND
aGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsK
IApAQCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
b250ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50
cyhDRlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3Zv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1
cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAg
ICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5z
ZXRDb250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3Vy
ZmFjZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVu
c3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENv
bnRlbnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
dmFsdWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5
OGNhMjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4
YThlYWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVu
dHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBI
QVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3Vy
ZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0
aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
LmgKaW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkw
YmMyNWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1f
bGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0
Zm9ybUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4
ZTQ4ZjRlLi4xMTJmMjc4YjdlM2Q5ZjBjYThlNjA2YjZlMjFiMDQ5MjQ5N2YxNjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0K
QEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAog
ICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJf
ZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBl
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5w
b3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXll
ci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5h
bmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0
b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHBy
b3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2
IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5
Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMo
W1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29w
eWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBj
b3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVu
dHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3Rd
OwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpz
ZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQw
NWY0Li5iZDlhY2JlOTMzM2YxOGE3Nzk3M2JlZTlhZDAxMGNmMWYwNjU3OTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJX
Qy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENv
bnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIGF1dG8gcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBH
cmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0
YzU2NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFw
aGljc0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJXQ1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21w
b3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkNTdmYTM1MGMxOGMxZmQ1MmU1OWMw
MGNjMzdjNWU5MjQzZWM1NGIuLjQzNmI3NjM1NDliYjg4NDIzOTBkNTIyMzkzMjk1MjFlMzZhNzMx
NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMS0xMi0wOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29t
cG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgQWRkIGEg
ZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMi0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIElPU3VyZmFjZSBtZW1vcnkgYXR0cmlidXRpb24gaXMgaGFy
ZCB0byB1c2UgaW4gY29uc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW0KaW5kZXggYTkxNjI3OThlNmYwN2Y0NzhiYzEyYmJkODNmYzA0NWI0MzIzNzM3NC4u
Y2JlNmJhNzk4ZjI3MGJiZWIwODQ2OTI2M2I1YzFlZmEzOTFmYmYyNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9U
ZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDEsNiArNDEsMjEgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2Egewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4g
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMp
CisgICAgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4g
Y29udGV4dDsKKyAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAg
ICAgICAgOiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRl
cykpCisgICAgeworICAgIH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlIC8vIE5PTElOVApAQCAtNTksNyArNzQsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29u
c3QgaW50IGV4cGVjdGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRl
eHQoV2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6Oklu
dFNpemUgY29udGV4dFNpemUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02
OCwxNCArODMsMTQgQEAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENv
Y29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0
ZW5jaWwgPSBmYWxzZTsKICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1
dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMp
LCB7IH0pOworICAgIGF1dG8gY29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB7IH0pOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53
aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
LXN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikK
K3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMo
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsK
ICAgICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4
cGVjdGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6
OkNvbG9yOjp5ZWxsb3cgfTsKQEAgLTEyMCwxNSArMTM1LDE1IEBAIFRFU1RfRihHcmFwaGljc0Nv
bnRleHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJl
bmNlTWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsgfSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9
IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsgfSk7CiAgICAgQVNTRVJUX05FKGRl
ZmF1bHRDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNl
ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOwot
ICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0
ZXMgfSwgeyB9KTsKKyAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
eyBhdHRyaWJ1dGVzIH0sIHsgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2VyQ29udGV4dCwgbnVs
bHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7Ci0gICAgYXV0byBo
aWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMg
fSwgeyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIHsgYXR0cmlidXRlcyB9LCB7IH0pOwogICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VD
b250ZXh0LCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0
cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFu
Y2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVS
KSk7Cg==
</data>
<flag name="commit-queue"
          id="472194"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446726</attachid>
            <date>2021-12-10 07:29:00 -0800</date>
            <delta_ts>2021-12-10 08:02:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211210172858.patch</filename>
            <type>text/plain</type>
            <size>123466</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjOTg2ZDgyNjE5Y2I4
MjlkNmUyYjY4NTI4ZWZkZWY5YTliZjZhYi4uNDA0OWNlMzcxODg4Y2EzNTA5Njk2ODY4ZGY1YjI4
N2E3ODE0ODg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMS0xMi0wOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZWNv
bmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJlLgorICAg
ICAgICBTZWUgV2ViS2l0IHNpZGUgZm9yIHRoZSBkZXNjcmlwdGlvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTEwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEVuYWJsZSBiaWRpIGhhbmRsaW5nIGZvciBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDY1OGE0ZDJlMjQxNTZmNDQzYWI4NTZkMmFjNGJhYTkyZDc0ODgwM2UuLjA1YTAz
OWI3YmFmNDJlZjlkNzQyOGFhNzg0MDg5MTNhMjVkZWJjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjUgQEAKKzIwMjEtMTItMDkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5IHRvIGFzc2lnbiBJT1N1
cmZhY2VzCisgICAgICAgIHRvIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjb250ZW50cy4KKworICAg
ICAgICBNYWtlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSB1c2UgdGhlIGFkZGVk
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKworICAgICAg
ICBTZWNvbmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJl
LgorICAgICAgICBUaGUgdGVzdCBmYWlsdXJlIGhhcHBlbmVkIGR1ZSB0byBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZQorICAgICAgICBzZW5kaW5nIHRoZSBzYW1lIGRyYXduIGJhY2tpbmcgc3RvcmUg
d2l0aCBkaWZmZXJlbnQKKyAgICAgICAgcHJvcGVydGllcyBidXQgc2FtZSBpbWFnZS4gVGhlIG9y
aWdpbmFsIHBhdGNoIHRyaWVkCisgICAgICAgIHRvIHVzZSBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6bV9idWZmZXJIYW5kbGUgYWxzbworICAgICAgICBvbiB0aGUgc2VuZCBzaWRlIHRvIHN0b3Jl
IHRoZSBoYW5kbGUuIFRoaXMgaGFuZGxlCisgICAgICAgIHdhcyBlbmNvZGVkIG11bHRpcGxlIHRp
bWVzLiBUaGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBJUEMg
ZW5jb2RpbmcgZGVzdHJveXMgdGhlCisgICAgICAgIHVuZGVybHlpbmcgbWFjaCBzZW5kIHJpZ2h0
IGV2ZW4gdGhvdWdoIHRoZSBlbmNvZGluZworICAgICAgICBBUEkgc2lnbmF0dXJlIHdvdWxkIHNp
Z25pZnkgdGhhdCB0aGUgSGFuZGxlIHN0YXlzCisgICAgICAgIGludGFjdC4gU2hhcmVhYmxlQml0
bWFwLCBTaGFyZWRNZW1vcnkgd2lsbCBiZSBmaXhlZCBpbgorICAgICAgICBmdXR1cmUgY29tbWl0
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6Omhhc0Zyb250QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29u
dGVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogU2FmYXJpIGxvc2VzIE5l
dHdvcmsgYWNjZXNzIHdoZW4gZXN0YWJsaXNoaW5nIFdlYlJUQyBzZXNzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3ZjNjY2NlYmVkMjllMTM1N2JiODk4Yjc5MTQwNDM0NzVjYjQ0YmYzLi5kMTY2
ZDAxYjRkZGQwNDE2YjlmZjBmNmUyYjY1YzlhNTkxMWZmN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0NjEsNiArMTQ2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckZhY3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0u
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZmM5NmEwYjYxMjA3YTRkYTczNjFjNTEz
MjRkZjUyNzYzMWUwYzkyLi43ODE3ZDdmYjA1ZTczNTczOTI4OGJjY2JlODVkMGU0ODI1MWM4NGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlv
bkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhYjUzNDlhYThhMjhjNjJi
ZTA4YTgwOWVkMmY2MDJmMzdlYTE0NWE3Li4zN2EyNTJjODRkNzMyN2UxMmMxNTcwNzY4NTVmZjQw
YTExMDE3NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxNTY2YjIwNzkyNDc4NGZlZWRkOGE2
NzYzZmI5NmI5NjFkNzM1NzVhLi4xYTU0N2Q3MTRlNGE0N2NmM2FhZGFiYmNmMGRkMTJlYjBkMzVk
ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MSw3ICszOTEsNiBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggOWY4NWU0OTg2
YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgzYzg2ZDI3NTY1
NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4ICsyMDQ3Miw2
IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfTUVU
QUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xBU1NfJF9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5X
aW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNTXyRfV2ViR0xM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRfV2ViTGF5ZXIK
IF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0MSw2IEBAIF9P
QkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhpdFdhcm5pbmcK
IF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fdGFyZ2V0CiBf
T0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2FjdGlvbgogX09C
SkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVsZAotX09CSkNf
SVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2xh
eWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmltcAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNfSVZBUl8kX1dl
YlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NGIzOWU1N2NmNTNl
OGFhMzJhNmNiZDhmNTFhNzRhZGY0ZjAxNzEuLjQyYTdjNGNjYzk2ZmZmNzQ2MWM1MTI5NTBlODFh
NDU5NjVjNDNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0NDQsNyArMTQ0NCw2IEBACiAJCTQ5RUNFQjcwMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3Bl
cmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
M0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07
CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNDEx
MDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87IH07Ci0JCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZE
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFBQUY1RTdFMDA2
MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMwMDYyODAzQiAv
KiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yMzg0LDYgKzIzODMsNyBAQAogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1
MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8q
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyog
Q1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkzNzgsOCArOTM3OCw2IEBACiAJ
CTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3
QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZD
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
RkZBOUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDA2LDYg
KzExNDA0LDcgQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVE
MjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExNDE3LDYgKzExNDE2LDcgQEAKIAkJN0JCMzRBNDcyNTM3NzZDNzAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0No
ZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVC
QTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
Q0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBTkdMRVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCQ0Q0MkRBMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkNENDJEQzI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXND
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODY4NCw2ICsyODY4NCw4IEBACiAJCQkJMEY1ODBCMDkwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuY3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEy
NjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0
MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywK
KwkJCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmggKi8sCiAJCQkJMUFDNjk1OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBo
aWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJCQkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdy
YXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLywKIAkJCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLywKQEAgLTI4OTY5LDggKzI4OTcxLDYgQEAKIAkJ
CQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8s
CiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdl
YkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovLApAQCAtMzMwNDIsNiArMzMwNDIs
NyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQw
IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAv
KiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdE
NjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTM0
Mzc0LDYgKzM0Mzc1LDcgQEAKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhp
Y3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIw
QjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFw
aGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAw
QTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEw
MTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzYwNiw3ICszNzYwOCw2IEBACiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdl
YkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERC
MTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQy
RDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkVDMzYyRDkyNUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJk
NWMyNWI2YmFlYTIyM2Y1NjdiLi43MmIyY2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZj
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDEx
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRl
cmVmQ2FudmFzQmFzZSgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhl
bEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGVi
OTk3OGU4MDIzZS4uNWFlNzliZjBiOWUzOTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRp
bmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkg
eyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBo
YXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNB
Y3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcikgeyBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3Rp
dmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1
Nzg2OGIwYTIzYjIyM2JkZGU5MWMwNzhkYmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5
YzQyYTRlZjBmOWQyODkxYWQ1NjEzNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEw
ICs1MSwxMCBAQCBIVE1MQ2FudmFzRWxlbWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
OjpjYW52YXMoKSBjb25zdAogICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGJhc2UpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlclBpcGUtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDlj
YmU0OTc2MGE2YzY2YTM4MzRkZjk5MTk5Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0
Mjk5NzRkMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGJvb2wgaXNQbGFjZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBp
c0dQVUJhc2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCBhYzgxZDhjOTMyNDQ0N2NlYjdmYTM4ZTMzYTk2OWFmYzFhMDM4
NGEwLi5jZTAwZTYzYThmYjc0ZmE4YzVmZGUzM2I5MjNjOWQ1ZjcxNmM0Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
QEAgLTY0NTIsOSArNjQ1MywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omlz
Q29udGV4dFVucmVjb3ZlcmFibHlMb3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9z
dCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsKIH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0
KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3Jt
TGF5ZXIoKSA6IDA7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGlj
eVJlc29sdXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpyZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAppbmRleCA2NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUw
NTgxNjA4Li5iNTQ1N2U3MTM3Zjg0MjZkYzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCkBAIC0zODYsNyArMzg2LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAgICAgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dEdyb3VwLmdldCgpOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCA3MWEzOGFmMDZiMzU5MTI2M2M3NDQyYmRiNjg1MGU2ZjYzNDU1OWY5Li5iNWY1ZWNkMzgx
Y2E5MGEyN2Q4ZDJhYjUyZDNlZmIyNTJiZWQxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwx
MiBAQAogI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC03ODYsNyArNzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAg
ICB9OwogCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaGFzQWxwaGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApp
bmRleCBjNzVkYTU2YTgzNjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li40OTJlNDI2YjYz
MDUyZjQ0OGY3NTc5MDc4MzE5ZWQwYmE2ZjJlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2
ICs2MTMsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0K
IAordm9pZCBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29s
b3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJm
OTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLmViNjM1OWZlM2YyMzVjMWQz
OGJlNjBiYTA2NTAwZjY3OGNmMTMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
R3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5n
OwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29s
b3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXll
clB1cnBvc2UpOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXJJRCBjb250ZW50c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk5OTg4OTg2YTJmN2Y4ZGRmNmIwZDhjMmQzOTQ2YzNmYzEzYTM3NmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0Uo
Q0EpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0Ep
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6cHJlcGFyZVRvRGVs
ZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NM
YXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMTZj
YzY4Y2Y5NTdhNjdhNTIxZjczNjJmMmY3Nzc1ZDRjMGE3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYg
VVNFKENBKQorY2xhc3MgUGxhdGZvcm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNw
ZWNpZmljIGludGVyZmFjZSBmb3IgYXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIu
CisvLyBSZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hv
dyB0aGUgcGFydGljdWxhciBjb250ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdy
YXBoaWNzTGF5ZXIuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJmM2Zh
Y2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2N2U3
ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKLS8v
IFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdl
ZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBh
IFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRlbnRz
IGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZm
ZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1ZmZl
clBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoKICAg
ICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7CkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3MGQw
MWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21t
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4
NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li5hMTgyYzUyNTRlODAyY2E3OWEwNGE2
NzZhYWRmMWE1MWJkNjA4ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAg
LTEyNDYsNiArMTI0Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29s
aWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKICAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gbnVsbHB0cjsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxw
dHI7CiAKICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCiAgICAgICAgIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7CkBAIC0xMjc3LDYgKzEyNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgaWYgKG1fY29udGVudHNM
YXllcikKICAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgfQorICAgIG1f
Y29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KQEAgLTEzMDcsNiArMTMxMCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYm
IG1vZGVsKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1
cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQor
ICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNvbnRl
bnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtMTM0
Myw2ICsxMzQ3LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgICAgIG1fY29udGVu
dHNMYXllciA9IG51bGxwdHI7CiAKICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcGxhdGZv
cm1MYXllciA/IHB1cnBvc2UgOiBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBtX2Nv
bnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJD
aGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGVs
ZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVu
dHNMYXllciAmJiBkZWxlZ2F0ZSA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50
c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChkZWxl
Z2F0ZSkgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOwor
ICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShkZWxlZ2F0ZSk7Cisg
ICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJy
ZW50bHkgZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2Fs
bHMgc2V0Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0
aW5ncyBhY2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3Rv
cmVBdHRhY2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRl
c0RyYXdpbmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnByZXBh
cmVUb0RlbGVnYXRlRGlzcGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CiAKICAgICBub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50
c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKQEAgLTE4NzgsNiArMTkwNywxOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNp
Z25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUoYmxh
bmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5
ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09IG1fY29udGVudHNMYXllcik7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworfQorCiBzdGF0aWMg
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBl
YXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAg
ICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpM
aWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tk
cm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExh
eWVyOwpAQCAtMjc5Miw3ICsyODMzLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRmb3Jt
IGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQg
aW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDogZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllclB1
cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NTQsMTMgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFu
Z2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVy
LCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAg
Ly8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAgIGlm
IChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRv
bVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAgICAg
ICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYs
IDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdmMzli
NDhkODcuLmY2YjJjOTRjYjNkNmZmYWQwMzVlYjc0OTJhMjU1ODIyNTkyYTAwY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3Zl
cnJpZGU7CkBAIC0xOTMsNiArMTk1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGFjY2VsZXJhdGVkQW5pbWF0aW9uc0Zv
clRlc3RpbmcoKSBjb25zdCBmaW5hbDsKIAorICAgIGNvbnN0ZXhwciBzdGF0aWMgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uID0gQ29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworCiBwcml2YXRlOgogICAg
IGJvb2wgaXNHcmFwaGljc0xheWVyQ0EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKQEAgLTIxMiw2ICsyMTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVl
KCk7IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGRyYXdzQ29udGVudCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVy
TGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJu
IGxheWVyRGlkRGlzcGxheShsYXllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJD
T1JFX0VYUE9SVCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzAwLDEwICszMDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1
aXJlc1RpbGVkTGF5ZXIoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNo
YW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0OwotCi0gICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7
CisgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwog
ICAgIFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBs
YXRmb3JtQ0FMYXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwpAQCAtNjQ0LDYgKzY0Nyw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9k
ZWw7CiAjZW5kaWYKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYx
YTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRkYTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgz
YTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JK
Q19DTEFTUyBBVlBsYXllckxheWVyOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRl
eHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitj
bGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiArNTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVy
Q2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZv
cm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOwor
I2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7Cisj
ZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZk
NzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5
KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRl
eCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1
ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJ
T1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpp
bmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4
ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMwMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAj
aW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJX
ZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAg
ICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAg
ICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNL
aW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0K
IApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVU
aWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEw
ICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FW
Rm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9
IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVh
dGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXllclR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXll
ckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpAQCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBh
bGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xs
Q29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlm
IChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09
IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBl
bHNlCiAgICAgICAgIFttX2xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxh
eWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFj
ZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQo
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRl
bnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCA5MWU2
NDcwODAzYTU0OGM2MWI5NTg2Nzc0YmNhOTU1MTVkOTVkZDg4Li4zMDg5ODAwN2VmMmZmNjY5MjY5
YWY2NGY2OTEyYzkwOTY4Zjc5NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA5YWIyZDc0NDEwYTA2YmMwZGU2NDE1MGU4ZTEy
MDNlMDUzYWQ1OTRiLi5lMjY4OTU3MjY5NDk4OGY0ZTJiOTg3OTUyMWQ5ZDI4ZDc1MWVlZWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQ3MCwxMSArNDcwLDYgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gbV90
ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9j
b250ZXh0T2JqKQpAQCAtODAzLDYgKzc5OCwxMSBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdM
Q29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb25maWdPYmo7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZGEw
ZmUwZjQ0YTNhODQ0MGU2NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0KLS8vIEEgbGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJmYWNlLgotV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5MDMxNTU2
OTExMTM2YzMxZjVkNjhlZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotCi0j
aW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKLSNp
bXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR0xMYXllcgot
Ci0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAg
IHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRlbnRz
U2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwotfQotCi0vLyBXaGVu
IHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVlZCB0byBmbGlwIHRo
ZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9TdXJmYWNlIHByb3Zp
ZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkgaW5jb21pbmcgdHJh
bnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50cyBsYXllcikgYW5k
IGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFuZCBtYWtlIHN1cmUg
dGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9pZClzZXRUcmFuc2Zv
cm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zv
cm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5jaG9yUG9pbnQ6KENH
UG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngsIDEu
MCAtIHAueSldOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBTaG93IHRoZSBzZWxm
LmNvbnRlbnRzIGFzIHRoZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhpbmcgaW4gdGhpcyBm
dW5jdGlvbi4KLSAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVy
ICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5kCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCmluZGV4IDhkNWQyNWFiMTBiNDVlM2Y5YTZlODM4YWUxMDk0MWU2ZmMwZTVlMzgu
LmMzM2JiODkxOGQ4OTllYWJjOGZmNGRjNWU5ODUwMGUwNjRmMjg1MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0yOSw5ICsyOSw4IEBA
CiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAv
LyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKLSNp
bXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0
b3IuaCIKQEAgLTQwLDQ2ICszOSw4MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExheWVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cmli
dXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIGxheWVyOwotfQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50
c1NjYWxlKSk7CisgICAgfQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVl
KG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNT
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMoKm1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKworICAgIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNl
dERpc3BsYXlCdWZmZXIoSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIucmVzZXQo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5
QnVmZmVyICYmIGRpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlCdWZmZXItPnN1
cmZhY2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50
c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGJvb2wgbV9p
c09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250
ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBX
ZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICwgcHJpdmF0ZSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudAogI2Vu
ZGlmCi0KIHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTENv
Y29hOjppc1ZhbGlkKCkgJiYgbV93ZWJHTExheWVyOyB9CisKICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTENvY29hIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExh
eWVyLmdldCgpKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5KCkgZmluYWw7CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBEaXNw
bGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaXNw
bGF5V2FzUmVjb25maWd1cmVkKCkgZmluYWw7CiAjZW5kaWYKLQogICAgIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKLSAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogCisgICAgUmVmPERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBm
cmllbmQgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogfTsKIAogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29h
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcyksIHsgfSkKLSAgICAsIG1fd2ViR0xM
YXllcihjcmVhdGVXZWJHTExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQorICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNy
ZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKIHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpzaW5n
bGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwpAQCAtOTYsMTMgKzEzMiw3IEBAIFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KQogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCk7
Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2Uu
Z2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNl
LT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5z
ZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZi
ZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNhMzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVD
b21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VB
cHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBv
cnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQu
aD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0Nv
cmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQw
YWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRl
MDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JT
cGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJj
Li4zN2UwZjU0YmI2MDAxMjM0ZmI2ZmU0YWQ5MmU1NzhkYjhmMzAzZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4
MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ug
dm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRz
RGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGly
dHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsK
LSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7
CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8
fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5
ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRp
cnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJT
aG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTExMywxMCArMTE2
LDE0IEBACiAgICAgICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgW3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2
b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxh
eWVyLT5vd25lcigpIDogbnVsbHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3Jt
Q0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxh
dGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IFtzdXBlciBkaXNwbGF5XTsKKyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJ
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlLmNwcAppbmRleCAzMzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRk
Li4yZjc0ZDBlYmFkYjdkODJlOTIwZDQyOGNkOWUxOWNmNmRkZTM2MDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2Ug
Tmljb3NpYSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xh
c3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZl
clBpcGU6OlNvdXJjZSwgcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGll
bnQgewogcHVibGljOgogICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2
aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1
ZmZlclBpcGU6OlNvdXJjZSBvdmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmKSBmaW5hbDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKLQorICAgIENvbnRlbnRMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgorICAgIC8vIENvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJ
Zk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lh
TGF5ZXI7CkBAIC02MiwxNiArNjQsMzggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCi1jbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZp
bmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitjbGFzcyBQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSB7CiBwdWJsaWM6Ci0gICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpOwotICAgIHZpcnR1YWwg
fk5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNv
c2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0KIAorICAgIC8v
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmljb3Np
YUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNv
dXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgICAgIDogbV9uaWNvc2lhTGF5ZXIo
V1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29udGVu
dExheWVyPiBtX25pY29zaWFMYXllcjsKK307CisKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KIAotICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJp
ZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9Citw
cml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsK
KyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1OSwxMCBAQCB2b2lkIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVy
KQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5
ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9zb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJl
ZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291
cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIq
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlm
IChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2
MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsK
ICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzZl
M2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li43NTBhODRhZjYzODJjNTQxMzBj
ZjM2ZTg2ZDliYzhjNzYwNGNmYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDMyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0
ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKHBsYXRmb3Jt
TGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9
OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg4LDcgKzExNSwx
NyBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJC
YXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpj
cmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKK3sKK30KKworUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKKyAgICByZXR1cm4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOwogfQogCiBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCkBAIC0xMjMsMTUgKzE2MCw2IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVBsYXRmb3Jt
TGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1MYXllcigpIGNv
bnN0Ci17Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgcmV0dXJuICZtX25pY29zaWFMYXllci0+Y29u
dGVudExheWVyKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOwotI2Vu
ZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAppbmRleCBiNDBlNzk4MzNlODExMGY1ZDA5N2VhZDNiNTMxZjFlNjJkNmQ4ZDFiLi4yZGIy
ZThkN2Q5Y2Q3YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7CiAKICAgICAvLyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAj
ZW5kaWYKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKTsKKyAgICBSZWY8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNj
NTJhY2NjZTEzYzYwYzRiLi5lOTk0MjU0NGJmZTkwOTQ0YzM1MGQxMzljODUzYzk3ZmQ2NDAzMGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2
ICszNDIsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMGM4OWJhM2E1OTQ4YzQxOGMxMjc5ZWZhZDdhOTVh
OTU4ZTgwZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdk
OGE0YTM5Zi4uMDU0MTZhNTAwMTViNmZjMWNkNTUwMzEwOTIxMmQzNjVlYmY3OWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAj
ZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRl
eCA2ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi45N2RlYzU5YmYxNzkx
OGEyY2M4MjBkNDY1ZmUwNWIwZTNmZTI3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250
ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBD
b250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVm
UHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5
TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0Yzgx
OTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBkYThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkNvbG9yLmgi
CiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2ltcG9ydCAiTGVnYWN5
VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQyZmQ5ZGQ1YzUyZWZi
OTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0MjE5MTE1YTM4YzM1
MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xs
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lP
Uy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFt
ZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QKQEAgLTIwNiw3ICsy
MDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplKCkKICNlbHNl
CiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCks
IE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3LCBoKTsKICNlbmRp
ZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIHcp
KSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0
MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6
Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIGgpKSB9OyAvLyB3
b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNldEJvdW5kc1NpemU6
dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTIyMyw3ICsy
MjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAgIE5TUG9pbnQgdGVt
cFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50
LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07
ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBO
U1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5d
LnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJv
dW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3
ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBv
cnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhl
bWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFk
NTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5
MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
aW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMyYi4uZTBkYjgyN2Y0
MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0
LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNhY2hlKCkKQEAgLTE2
Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAgICBbY29tcG9uZW50
cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0gW2dyZWdvcmlhbiBk
YXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAgIE5TU3RyaW5nICpm
b3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6ZGF0ZV07Ci0gICAg
ICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0
KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lkdGggPSBzdGQ6Om1h
eChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRl
KSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3Zjdi
N2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjY5NTBhMWUwZTUzMjAxODEwN2Q1ZmRmOGE1YTdi
YmM1MTcwNTQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
cwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGlu
Z1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAg
ICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQg
PSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0
YTAyNzg3ZmIxMTBkOTIzMi4uMTU5ZTUwNTY3NzA0MzMwMWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOyB9
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUg
cmVtb3ZlZC4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4
IDlkNzY3ZWMyMTY1M2U3MGVlNDk4YjRlODkzZWYzZDc3OGEzMDA0ZGEuLjZjOTA2MWI1ZTJlZmU1
YjJmY2RjMGY4NTAxOGZjYzFiOTY0N2VlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFy
ZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQt
PmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1
cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBp
ZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsKICAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJp
Z2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAppbmRleCAyMjRmYTE4YzgxNTky
NjJmZWYzZGU4ZWU1MDdhNWI3ZDdkNzlkYjk4Li45ZGY4M2Y0NjA3Y2M5OGMwZDhmYjdlZGY2N2Vk
NmY3Yjg5NzgxYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKQEAgLTY1LDYg
KzY1LDEzIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRmb3JtTGF5ZXIo
KTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi42YmUxMTQ4OTIy
ZDVkN2QxNTYxMTU0ZjE1NzE4ZTA5MmExMjJhNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7
CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2NvbnRlbnRzQnVmZmVySGFu
ZGxlIHx8ICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKICAgICB9CiAKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0
YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CkBAIC0xMzUsNiArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBC
dWZmZXIgbV9iYWNrQnVmZmVyOwogICAgIEJ1ZmZlciBtX3NlY29uZGFyeUJhY2tCdWZmZXI7CiAg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFuZGxl
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCBtX2J1ZmZlckhhbmRs
ZSBzaG91bGQgYmUgdXNlZCB0byByZWYgdGhlIGJ1ZmZlciBvbmNlIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlCisgICAgLy8gY2FuIGJlIGVuY29kZWQgbXVsdGlwbGUgdGltZXMuCisgICAgc3RkOjpv
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBtX2NvbnRlbnRzQnVmZmVySGFuZGxlOwogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9kaXNwbGF5TGlzdEJ1ZmZlckhhbmRsZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdl
MDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjRlOTQ2MjcwYzdlNTE5YWMwZjgzMGRmOGZkMjZkOTI0
OWI5ZjJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMyw2ICsxMDMs
NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiAg
ICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsK
ICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOworICAgIG1fY29udGVudHNCdWZm
ZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0xMTIsOSArMTEzLDEz
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9p
c09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCisgICAgLy8g
RklYTUU6IEZvciBzaW1wbGljaXR5IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2Yg
ZGlzcGxheSgpIG9uY2UgdGhlIGJ1ZmZlciBoYW5kbGVzIGNhbiBiZSBjcmVhdGVkIG9uY2UKKyAg
ICAvLyBhbmQgc3RvcmVkIGluIG1fYnVmZmVySGFuZGxlLgogICAgIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIpIHsKKyAgICBpZiAobV9jb250ZW50c0J1ZmZlckhhbmRsZSkgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CisgICAgICAgIGhhbmRsZSA9IG1fY29u
dGVudHNCdWZmZXJIYW5kbGU7CisgICAgfSBlbHNlIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyKSB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgVHlwZTo6SU9T
dXJmYWNlOgogICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CkBAIC0yMjAsNiArMjI1LDcgQEAg
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxs
b3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAg
aWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNjMsMTMgQEAgYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAg
cmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9
CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNl
bmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBXVEZN
b3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7Cisg
ICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNp
emUoKSk7CkBAIC0yNjcsNiArMjgwLDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9s
YXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250
ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsK
KyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1f
bGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8v
IE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRo
YXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5Lgog
ICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0
NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmEx
NDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSAr
MTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24o
KSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAi
IDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29u
dGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1p
ZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYz
YmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFj
ZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsy
OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlm
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxh
eWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0
b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0g
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
ICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4g
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXll
cklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJM
YXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2Zk
MzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUwYWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBm
YjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhW
aWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03
NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9z
dCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3
aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMu
aG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTQ1ZDRkMzY5MzE3ODQ0NzA0ZDQ3MTgwZmM0ZGFkNmYxYjk2
NjIzNi4uZWNlOTFmZWJiYTYxZjUyNDc0YmEyY2Q1MmQ0ZjNlZTVmNjFkNDJlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDQ4LDYg
KzUwNDgsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3
QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMDM5LDcgKzEzMDQwLDYgQEAKIAkJCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0Mg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTkwMjAzMUJF
OUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0
RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0NTI2RUQyNzFFMTY0
NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzMTI3LDYgKzEzMTI3LDcgQEAKIAkJCQkyRDI3OUUxOTI2OTU1NzY4MDA0QjNFRUIgLyog
UHJvdG90eXBlVG9vbHNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgxMjc1RTk3QjYw
MDJEQzIyRCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3RDI3
NUU5N0I2MDAyREMyMkQgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxN0I1Rjk1Mjc1RUJBNjMwMDJEQzIyRCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5l
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyogUXVp
Y2tMb29rVGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1NzI1
MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM1MTMsNiArMTM1MTQsNyBAQAogCQkJCTUxN0I1RjJFMjc1NzM4MkEwMDJEQzIy
RCAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3MzI3NUU5NjA5MDAyREMyMkQgLyogV2ViUHVz
aERhZW1vbk1haW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIy
RCAvKiBXZWJQdXNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxQ0NDQTYyMzE0ODVB
QTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg2MEU3MTIzMEY2N0ZDMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2Vi
UmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM1NDcsNyArMTM1NDksNiBAQAog
CQkJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUxN0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVu
dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2QkMwM0MxRkEyNjZE
QTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzEx
QTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM1NkYyREUyMTUyQjcxMDAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTUxMTYsOSArMTUxMTcsOSBAQAogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTUxN0I1RjlBMjc1RjNBODYwMDJE
QzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY2ODI3
NUE5QTc4MDAyREMyMkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxN0I1RjlDMjc1RjNDMzcwMDJEQzIyRCAvKiBEYWVtb25FbmNvZGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJEQzIyRCAvKiBEYWVt
b25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY2ODI3NUE5QTc4MDAyREMy
MkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVG
NjUyNzVBOEQ3RjAwMkRDMjJEIC8qIFdlYlB1c2hUb29sTWFpbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTUy
MTQsNyArMTUyMTUsNiBAQAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMx
QTE1MkQ3MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY5OTI3NUVDNjAxMDAy
REMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlG
NjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCRjVFQzY0MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU3NCw2ICsx
NTU3NCw3IEBACiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY3QTI3NUU5N0E0
MDAyREMyMkQgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjc5
Mjc1RTk3QTEwMDJEQzIyRCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUxN0I1Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNl
TG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1
NDMxODUwMEYzMjgxRiAvKiBXZWJSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyQyAvKiBXZWJSVENSZXNvbHZlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNi
ZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uNGE0ZTAzOTNiYTVkNzE0ODIzNWI2MjNiMTU0
NDNiZjk2MDllMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2OSBAQAogI2ltcG9ydCAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVy
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7
CiAKLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1Ymxp
YyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNw
bGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMg
UmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBm
bG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOwor
ICAgIH0KKworICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNl
dE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworICAgIH0KKworICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZl
cikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0K
KworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
OjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3QgTWFj
aFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1
ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxh
eUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZmZXIu
Y29weVNlbmRSaWdodCgpOworICAgIH0KIAorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlz
cGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAg
IDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAg
IGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxh
eUJ1ZmZlcjsKK307CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBm
aW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVy
LmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJu
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMwICsxMDMsMjUgQEAgcHVibGljOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
KSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJp
YnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRl
cy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorCisg
ICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmll
bmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2Vi
R0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVs
UmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAg
IFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1f
ZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodCht
X2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNW
UGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBA
IC0xMDAsMjYgKzE0MCwxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlm
ICghZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZm
ZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIg
c2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlC
dWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0
ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVu
ZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYz
ZGIzZGZkN2E2MC4uODE0ODUwNmM4Mzg4MWMyYWM2ZjgzMjI1OWZhNGE3NWRiYjU5N2I1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAt
MzMsMzMgKzMzLDUzIEBACiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldDUGxhdGZvcm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBs
YXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9CisK
KyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZv
cm1MYXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9w
bGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
IGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGljOgog
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogcHJpdmF0ZToKLSAg
ICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tl
bmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+
KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0KIAotICAgIFBs
YXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlZjxQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhH
UFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dM
PihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4u
NThiNmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDEx
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9u
KFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVy
KCkgJiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3Rv
cmVDaGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXND
aGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsK
IApAQCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
b250ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50
cyhDRlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3Zv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1
cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAg
ICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5z
ZXRDb250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3Vy
ZmFjZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVu
c3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENv
bnRlbnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
dmFsdWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5
OGNhMjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4
YThlYWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVu
dHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBI
QVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3Vy
ZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0
aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
LmgKaW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkw
YmMyNWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1f
bGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0
Zm9ybUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4
ZTQ4ZjRlLi4xMTJmMjc4YjdlM2Q5ZjBjYThlNjA2YjZlMjFiMDQ5MjQ5N2YxNjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0K
QEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAog
ICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJf
ZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBl
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5w
b3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXll
ci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5h
bmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0
b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHBy
b3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2
IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5
Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMo
W1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29w
eWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBj
b3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVu
dHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3Rd
OwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpz
ZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQw
NWY0Li5iZDlhY2JlOTMzM2YxOGE3Nzk3M2JlZTlhZDAxMGNmMWYwNjU3OTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJX
Qy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENv
bnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIGF1dG8gcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBH
cmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0
YzU2NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFw
aGljc0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJXQ1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21w
b3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkNTdmYTM1MGMxOGMxZmQ1MmU1OWMw
MGNjMzdjNWU5MjQzZWM1NGIuLjQzNmI3NjM1NDliYjg4NDIzOTBkNTIyMzkzMjk1MjFlMzZhNzMx
NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMS0xMi0wOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29t
cG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgQWRkIGEg
ZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMi0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIElPU3VyZmFjZSBtZW1vcnkgYXR0cmlidXRpb24gaXMgaGFy
ZCB0byB1c2UgaW4gY29uc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW0KaW5kZXggYTkxNjI3OThlNmYwN2Y0NzhiYzEyYmJkODNmYzA0NWI0MzIzNzM3NC4u
Y2JlNmJhNzk4ZjI3MGJiZWIwODQ2OTI2M2I1YzFlZmEzOTFmYmYyNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9U
ZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDEsNiArNDEsMjEgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2Egewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4g
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMp
CisgICAgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4g
Y29udGV4dDsKKyAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAg
ICAgICAgOiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRl
cykpCisgICAgeworICAgIH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlIC8vIE5PTElOVApAQCAtNTksNyArNzQsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29u
c3QgaW50IGV4cGVjdGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRl
eHQoV2ViQ29yZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6Oklu
dFNpemUgY29udGV4dFNpemUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02
OCwxNCArODMsMTQgQEAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENv
Y29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0
ZW5jaWwgPSBmYWxzZTsKICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1
dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMp
LCB7IH0pOworICAgIGF1dG8gY29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6
OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB7IH0pOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53
aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
LXN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikK
K3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMo
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsK
ICAgICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4
cGVjdGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6
OkNvbG9yOjp5ZWxsb3cgfTsKQEAgLTEyMCwxNSArMTM1LDE1IEBAIFRFU1RfRihHcmFwaGljc0Nv
bnRleHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJl
bmNlTWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsgfSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9
IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsgfSk7CiAgICAgQVNTRVJUX05FKGRl
ZmF1bHRDb250ZXh0LCBudWxscHRyKTsKIAogICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNl
ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6Okxvd1Bvd2VyOwot
ICAgIGF1dG8gbG93UG93ZXJDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0
ZXMgfSwgeyB9KTsKKyAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMg
eyBhdHRyaWJ1dGVzIH0sIHsgfSk7CiAgICAgQVNTRVJUX05FKGxvd1Bvd2VyQ29udGV4dCwgbnVs
bHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7Ci0gICAgYXV0byBo
aWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMg
fSwgeyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIHsgYXR0cmlidXRlcyB9LCB7IH0pOwogICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VD
b250ZXh0LCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0
cmluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFu
Y2VDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVS
KSk7Cg==
</data>
<flag name="commit-queue"
          id="472199"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446730</attachid>
            <date>2021-12-10 08:02:20 -0800</date>
            <delta_ts>2021-12-10 13:00:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231009-20211210180218.patch</filename>
            <type>text/plain</type>
            <size>123451</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjOTg2ZDgyNjE5Y2I4
MjlkNmUyYjY4NTI4ZWZkZWY5YTliZjZhYi4uNDA0OWNlMzcxODg4Y2EzNTA5Njk2ODY4ZGY1YjI4
N2E3ODE0ODg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMS0xMi0wOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZWNv
bmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJlLgorICAg
ICAgICBTZWUgV2ViS2l0IHNpZGUgZm9yIHRoZSBkZXNjcmlwdGlvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTEwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEVuYWJsZSBiaWRpIGhhbmRsaW5nIGZvciBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDY1OGE0ZDJlMjQxNTZmNDQzYWI4NTZkMmFjNGJhYTkyZDc0ODgwM2UuLjA1YTAz
OWI3YmFmNDJlZjlkNzQyOGFhNzg0MDg5MTNhMjVkZWJjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjUgQEAKKzIwMjEtMTItMDkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5IHRvIGFzc2lnbiBJT1N1
cmZhY2VzCisgICAgICAgIHRvIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjb250ZW50cy4KKworICAg
ICAgICBNYWtlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSB1c2UgdGhlIGFkZGVk
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKworICAgICAg
ICBTZWNvbmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJl
LgorICAgICAgICBUaGUgdGVzdCBmYWlsdXJlIGhhcHBlbmVkIGR1ZSB0byBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZQorICAgICAgICBzZW5kaW5nIHRoZSBzYW1lIGRyYXduIGJhY2tpbmcgc3RvcmUg
d2l0aCBkaWZmZXJlbnQKKyAgICAgICAgcHJvcGVydGllcyBidXQgc2FtZSBpbWFnZS4gVGhlIG9y
aWdpbmFsIHBhdGNoIHRyaWVkCisgICAgICAgIHRvIHVzZSBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6bV9idWZmZXJIYW5kbGUgYWxzbworICAgICAgICBvbiB0aGUgc2VuZCBzaWRlIHRvIHN0b3Jl
IHRoZSBoYW5kbGUuIFRoaXMgaGFuZGxlCisgICAgICAgIHdhcyBlbmNvZGVkIG11bHRpcGxlIHRp
bWVzLiBUaGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBJUEMg
ZW5jb2RpbmcgZGVzdHJveXMgdGhlCisgICAgICAgIHVuZGVybHlpbmcgbWFjaCBzZW5kIHJpZ2h0
IGV2ZW4gdGhvdWdoIHRoZSBlbmNvZGluZworICAgICAgICBBUEkgc2lnbmF0dXJlIHdvdWxkIHNp
Z25pZnkgdGhhdCB0aGUgSGFuZGxlIHN0YXlzCisgICAgICAgIGludGFjdC4gU2hhcmVhYmxlQml0
bWFwLCBTaGFyZWRNZW1vcnkgd2lsbCBiZSBmaXhlZCBpbgorICAgICAgICBmdXR1cmUgY29tbWl0
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6Omhhc0Zyb250QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29u
dGVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogU2FmYXJpIGxvc2VzIE5l
dHdvcmsgYWNjZXNzIHdoZW4gZXN0YWJsaXNoaW5nIFdlYlJUQyBzZXNzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3ZjNjY2NlYmVkMjllMTM1N2JiODk4Yjc5MTQwNDM0NzVjYjQ0YmYzLi5kMTY2
ZDAxYjRkZGQwNDE2YjlmZjBmNmUyYjY1YzlhNTkxMWZmN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0NjEsNiArMTQ2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckZhY3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0u
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZmM5NmEwYjYxMjA3YTRkYTczNjFjNTEz
MjRkZjUyNzYzMWUwYzkyLi43ODE3ZDdmYjA1ZTczNTczOTI4OGJjY2JlODVkMGU0ODI1MWM4NGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlv
bkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhYjUzNDlhYThhMjhjNjJi
ZTA4YTgwOWVkMmY2MDJmMzdlYTE0NWE3Li4zN2EyNTJjODRkNzMyN2UxMmMxNTcwNzY4NTVmZjQw
YTExMDE3NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxNTY2YjIwNzkyNDc4NGZlZWRkOGE2
NzYzZmI5NmI5NjFkNzM1NzVhLi4xYTU0N2Q3MTRlNGE0N2NmM2FhZGFiYmNmMGRkMTJlYjBkMzVk
ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MSw3ICszOTEsNiBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggOWY4NWU0OTg2
YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgzYzg2ZDI3NTY1
NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4ICsyMDQ3Miw2
IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfTUVU
QUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xBU1NfJF9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5X
aW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNTXyRfV2ViR0xM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRfV2ViTGF5ZXIK
IF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0MSw2IEBAIF9P
QkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhpdFdhcm5pbmcK
IF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fdGFyZ2V0CiBf
T0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2FjdGlvbgogX09C
SkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVsZAotX09CSkNf
SVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2xh
eWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmltcAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNfSVZBUl8kX1dl
YlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NGIzOWU1N2NmNTNl
OGFhMzJhNmNiZDhmNTFhNzRhZGY0ZjAxNzEuLjQyYTdjNGNjYzk2ZmZmNzQ2MWM1MTI5NTBlODFh
NDU5NjVjNDNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0NDQsNyArMTQ0NCw2IEBACiAJCTQ5RUNFQjcwMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3Bl
cmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
M0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07
CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNDEx
MDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87IH07Ci0JCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZE
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFBQUY1RTdFMDA2
MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMwMDYyODAzQiAv
KiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yMzg0LDYgKzIzODMsNyBAQAogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1
MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8q
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyog
Q1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkzNzgsOCArOTM3OCw2IEBACiAJ
CTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3
QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZD
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
RkZBOUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDA2LDYg
KzExNDA0LDcgQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVE
MjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExNDE3LDYgKzExNDE2LDcgQEAKIAkJN0JCMzRBNDcyNTM3NzZDNzAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0No
ZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVC
QTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
Q0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBTkdMRVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCQ0Q0MkRBMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkNENDJEQzI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXND
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODY4NCw2ICsyODY4NCw4IEBACiAJCQkJMEY1ODBCMDkwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuY3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEy
NjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0
MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywK
KwkJCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmggKi8sCiAJCQkJMUFDNjk1OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBo
aWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJCQkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdy
YXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLywKIAkJCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLywKQEAgLTI4OTY5LDggKzI4OTcxLDYgQEAKIAkJ
CQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8s
CiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdl
YkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovLApAQCAtMzMwNDIsNiArMzMwNDIs
NyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQw
IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAv
KiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdE
NjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTM0
Mzc0LDYgKzM0Mzc1LDcgQEAKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhp
Y3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIw
QjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFw
aGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAw
QTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEw
MTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzYwNiw3ICszNzYwOCw2IEBACiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdl
YkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERC
MTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQy
RDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkVDMzYyRDkyNUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJk
NWMyNWI2YmFlYTIyM2Y1NjdiLi43MmIyY2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZj
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDEx
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRl
cmVmQ2FudmFzQmFzZSgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhl
bEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGVi
OTk3OGU4MDIzZS4uNWFlNzliZjBiOWUzOTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRp
bmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkg
eyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBo
YXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNB
Y3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcikgeyBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3Rp
dmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1
Nzg2OGIwYTIzYjIyM2JkZGU5MWMwNzhkYmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5
YzQyYTRlZjBmOWQyODkxYWQ1NjEzNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEw
ICs1MSwxMCBAQCBIVE1MQ2FudmFzRWxlbWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
OjpjYW52YXMoKSBjb25zdAogICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGJhc2UpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlclBpcGUtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDlj
YmU0OTc2MGE2YzY2YTM4MzRkZjk5MTk5Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0
Mjk5NzRkMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGJvb2wgaXNQbGFjZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBp
c0dQVUJhc2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCBhYzgxZDhjOTMyNDQ0N2NlYjdmYTM4ZTMzYTk2OWFmYzFhMDM4
NGEwLi5jZTAwZTYzYThmYjc0ZmE4YzVmZGUzM2I5MjNjOWQ1ZjcxNmM0Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
QEAgLTY0NTIsOSArNjQ1MywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omlz
Q29udGV4dFVucmVjb3ZlcmFibHlMb3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9z
dCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsKIH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0
KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3Jt
TGF5ZXIoKSA6IDA7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGlj
eVJlc29sdXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpyZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAppbmRleCA2NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUw
NTgxNjA4Li5iNTQ1N2U3MTM3Zjg0MjZkYzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCkBAIC0zODYsNyArMzg2LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAgICAgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dEdyb3VwLmdldCgpOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCA3MWEzOGFmMDZiMzU5MTI2M2M3NDQyYmRiNjg1MGU2ZjYzNDU1OWY5Li5iNWY1ZWNkMzgx
Y2E5MGEyN2Q4ZDJhYjUyZDNlZmIyNTJiZWQxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwx
MiBAQAogI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC03ODYsNyArNzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAg
ICB9OwogCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaGFzQWxwaGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApp
bmRleCBjNzVkYTU2YTgzNjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li40OTJlNDI2YjYz
MDUyZjQ0OGY3NTc5MDc4MzE5ZWQwYmE2ZjJlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2
ICs2MTMsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0K
IAordm9pZCBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29s
b3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJm
OTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLmViNjM1OWZlM2YyMzVjMWQz
OGJlNjBiYTA2NTAwZjY3OGNmMTMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
R3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5n
OwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29s
b3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXll
clB1cnBvc2UpOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXJJRCBjb250ZW50c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk5OTg4OTg2YTJmN2Y4ZGRmNmIwZDhjMmQzOTQ2YzNmYzEzYTM3NmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0Uo
Q0EpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0Ep
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6cHJlcGFyZVRvRGVs
ZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NM
YXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMTZj
YzY4Y2Y5NTdhNjdhNTIxZjczNjJmMmY3Nzc1ZDRjMGE3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYg
VVNFKENBKQorY2xhc3MgUGxhdGZvcm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNw
ZWNpZmljIGludGVyZmFjZSBmb3IgYXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIu
CisvLyBSZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hv
dyB0aGUgcGFydGljdWxhciBjb250ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdy
YXBoaWNzTGF5ZXIuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJmM2Zh
Y2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2N2U3
ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKLS8v
IFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdl
ZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBh
IFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRlbnRz
IGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZm
ZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1ZmZl
clBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoKICAg
ICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7CkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3MGQw
MWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21t
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4
NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li5hMTgyYzUyNTRlODAyY2E3OWEwNGE2
NzZhYWRmMWE1MWJkNjA4ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAg
LTEyNDYsNiArMTI0Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29s
aWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKICAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gbnVsbHB0cjsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxw
dHI7CiAKICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCiAgICAgICAgIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7CkBAIC0xMjc3LDYgKzEyNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgaWYgKG1fY29udGVudHNM
YXllcikKICAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgfQorICAgIG1f
Y29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KQEAgLTEzMDcsNiArMTMxMCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYm
IG1vZGVsKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1
cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQor
ICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNvbnRl
bnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtMTM0
Myw2ICsxMzQ3LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgICAgIG1fY29udGVu
dHNMYXllciA9IG51bGxwdHI7CiAKICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcGxhdGZv
cm1MYXllciA/IHB1cnBvc2UgOiBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBtX2Nv
bnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJD
aGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGVs
ZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVu
dHNMYXllciAmJiBkZWxlZ2F0ZSA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50
c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChkZWxl
Z2F0ZSkgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOwor
ICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShkZWxlZ2F0ZSk7Cisg
ICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJy
ZW50bHkgZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2Fs
bHMgc2V0Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0
aW5ncyBhY2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3Rv
cmVBdHRhY2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRl
c0RyYXdpbmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnByZXBh
cmVUb0RlbGVnYXRlRGlzcGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CiAKICAgICBub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50
c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKQEAgLTE4NzgsNiArMTkwNywxOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNp
Z25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUoYmxh
bmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5
ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09IG1fY29udGVudHNMYXllcik7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworfQorCiBzdGF0aWMg
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBl
YXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAg
ICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpM
aWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tk
cm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExh
eWVyOwpAQCAtMjc5Miw3ICsyODMzLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRmb3Jt
IGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQg
aW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDogZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllclB1
cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NTQsMTMgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFu
Z2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVy
LCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAg
Ly8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAgIGlm
IChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRv
bVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAgICAg
ICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYs
IDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdmMzli
NDhkODcuLmY2YjJjOTRjYjNkNmZmYWQwMzVlYjc0OTJhMjU1ODIyNTkyYTAwY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3Zl
cnJpZGU7CkBAIC0xOTMsNiArMTk1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGFjY2VsZXJhdGVkQW5pbWF0aW9uc0Zv
clRlc3RpbmcoKSBjb25zdCBmaW5hbDsKIAorICAgIGNvbnN0ZXhwciBzdGF0aWMgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uID0gQ29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworCiBwcml2YXRlOgogICAg
IGJvb2wgaXNHcmFwaGljc0xheWVyQ0EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKQEAgLTIxMiw2ICsyMTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVl
KCk7IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGRyYXdzQ29udGVudCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVy
TGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJu
IGxheWVyRGlkRGlzcGxheShsYXllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJD
T1JFX0VYUE9SVCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzAwLDEwICszMDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1
aXJlc1RpbGVkTGF5ZXIoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNo
YW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0OwotCi0gICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7
CisgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwog
ICAgIFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBs
YXRmb3JtQ0FMYXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwpAQCAtNjQ0LDYgKzY0Nyw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9k
ZWw7CiAjZW5kaWYKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYx
YTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRkYTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgz
YTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JK
Q19DTEFTUyBBVlBsYXllckxheWVyOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRl
eHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitj
bGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiArNTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVy
Q2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZv
cm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOwor
I2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7Cisj
ZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZk
NzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5
KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRl
eCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1
ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJ
T1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpp
bmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4
ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMwMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAj
aW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJX
ZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAg
ICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAg
ICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNL
aW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0K
IApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVU
aWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEw
ICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FW
Rm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9
IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVh
dGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXllclR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXll
ckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpAQCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBh
bGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xs
Q29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlm
IChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09
IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBl
bHNlCiAgICAgICAgIFttX2xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxh
eWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFj
ZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQo
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRl
bnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCA5MWU2
NDcwODAzYTU0OGM2MWI5NTg2Nzc0YmNhOTU1MTVkOTVkZDg4Li4zMDg5ODAwN2VmMmZmNjY5MjY5
YWY2NGY2OTEyYzkwOTY4Zjc5NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA5YWIyZDc0NDEwYTA2YmMwZGU2NDE1MGU4ZTEy
MDNlMDUzYWQ1OTRiLi5lMjY4OTU3MjY5NDk4OGY0ZTJiOTg3OTUyMWQ5ZDI4ZDc1MWVlZWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQ3MCwxMSArNDcwLDYgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gbV90
ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9j
b250ZXh0T2JqKQpAQCAtODAzLDYgKzc5OCwxMSBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdM
Q29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb25maWdPYmo7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZGEw
ZmUwZjQ0YTNhODQ0MGU2NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0KLS8vIEEgbGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJmYWNlLgotV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5MDMxNTU2
OTExMTM2YzMxZjVkNjhlZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotCi0j
aW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKLSNp
bXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR0xMYXllcgot
Ci0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAg
IHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRlbnRz
U2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwotfQotCi0vLyBXaGVu
IHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVlZCB0byBmbGlwIHRo
ZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9TdXJmYWNlIHByb3Zp
ZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkgaW5jb21pbmcgdHJh
bnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50cyBsYXllcikgYW5k
IGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFuZCBtYWtlIHN1cmUg
dGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9pZClzZXRUcmFuc2Zv
cm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zv
cm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5jaG9yUG9pbnQ6KENH
UG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngsIDEu
MCAtIHAueSldOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBTaG93IHRoZSBzZWxm
LmNvbnRlbnRzIGFzIHRoZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhpbmcgaW4gdGhpcyBm
dW5jdGlvbi4KLSAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVy
ICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5kCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCmluZGV4IDhkNWQyNWFiMTBiNDVlM2Y5YTZlODM4YWUxMDk0MWU2ZmMwZTVlMzgu
LmMzM2JiODkxOGQ4OTllYWJjOGZmNGRjNWU5ODUwMGUwNjRmMjg1MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0yOSw5ICsyOSw4IEBA
CiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAv
LyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKLSNp
bXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0
b3IuaCIKQEAgLTQwLDQ2ICszOSw4MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExheWVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cmli
dXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIGxheWVyOwotfQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50
c1NjYWxlKSk7CisgICAgfQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVl
KG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNT
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMoKm1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKworICAgIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNl
dERpc3BsYXlCdWZmZXIoSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIucmVzZXQo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5
QnVmZmVyICYmIGRpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlCdWZmZXItPnN1
cmZhY2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgICAgICwgbV9jb250ZW50
c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IGJvb2wgbV9p
c09wYXF1ZTsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworfTsKIAogLy8gR3JhcGhpY3NDb250
ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBX
ZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICwgcHJpdmF0ZSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudAogI2Vu
ZGlmCi0KIHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTENv
Y29hOjppc1ZhbGlkKCkgJiYgbV93ZWJHTExheWVyOyB9CisKICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTENvY29hIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExh
eWVyLmdldCgpKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5KCkgZmluYWw7CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBEaXNw
bGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaXNw
bGF5V2FzUmVjb25maWd1cmVkKCkgZmluYWw7CiAjZW5kaWYKLQogICAgIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKLSAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogCisgICAgUmVmPERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBm
cmllbmQgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogfTsKIAogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29h
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcyksIHsgfSkKLSAgICAsIG1fd2ViR0xM
YXllcihjcmVhdGVXZWJHTExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQorICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNy
ZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKIHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpzaW5n
bGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwpAQCAtOTYsMTMgKzEzMiw3IEBAIFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KQogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCk7
Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2Uu
Z2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNl
LT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5z
ZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZi
ZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNhMzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVD
b21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VB
cHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBv
cnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQu
aD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0Nv
cmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQw
YWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRl
MDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JT
cGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJj
Li4zN2UwZjU0YmI2MDAxMjM0ZmI2ZmU0YWQ5MmU1NzhkYjhmMzAzZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4
MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ug
dm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRz
RGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGly
dHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsK
LSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7
CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8
fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5
ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRp
cnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJT
aG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTExMywxMCArMTE2
LDE0IEBACiAgICAgICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgW3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2
b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxh
eWVyLT5vd25lcigpIDogbnVsbHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3Jt
Q0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxh
dGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IFtzdXBlciBkaXNwbGF5XTsKKyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJ
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlLmNwcAppbmRleCAzMzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRk
Li4yZjc0ZDBlYmFkYjdkODJlOTIwZDQyOGNkOWUxOWNmNmRkZTM2MDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2Ug
Tmljb3NpYSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xh
c3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZl
clBpcGU6OlNvdXJjZSwgcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGll
bnQgewogcHVibGljOgogICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2
aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1
ZmZlclBpcGU6OlNvdXJjZSBvdmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmKSBmaW5hbDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKLQorICAgIENvbnRlbnRMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgorICAgIC8vIENvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJ
Zk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lh
TGF5ZXI7CkBAIC02MiwxNiArNjQsMzggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCi1jbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZp
bmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitjbGFzcyBQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSB7CiBwdWJsaWM6Ci0gICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpOwotICAgIHZpcnR1YWwg
fk5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNv
c2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0KIAorICAgIC8v
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmljb3Np
YUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNv
dXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgICAgIDogbV9uaWNvc2lhTGF5ZXIo
V1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29udGVu
dExheWVyPiBtX25pY29zaWFMYXllcjsKK307CisKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KIAotICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJp
ZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9Citw
cml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsK
KyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1OSwxMCBAQCB2b2lkIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVy
KQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5
ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9zb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJl
ZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291
cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIq
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlm
IChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2
MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsK
ICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzZl
M2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li43NTBhODRhZjYzODJjNTQxMzBj
ZjM2ZTg2ZDliYzhjNzYwNGNmYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDMyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0
ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKHBsYXRmb3Jt
TGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9
OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg4LDcgKzExNSwx
NyBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJC
YXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpj
cmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKK3sKK30KKworUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKKyAgICByZXR1cm4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOwogfQogCiBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCkBAIC0xMjMsMTUgKzE2MCw2IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVBsYXRmb3Jt
TGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1MYXllcigpIGNv
bnN0Ci17Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgcmV0dXJuICZtX25pY29zaWFMYXllci0+Y29u
dGVudExheWVyKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOwotI2Vu
ZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAppbmRleCBiNDBlNzk4MzNlODExMGY1ZDA5N2VhZDNiNTMxZjFlNjJkNmQ4ZDFiLi4yZGIy
ZThkN2Q5Y2Q3YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7CiAKICAgICAvLyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAj
ZW5kaWYKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKTsKKyAgICBSZWY8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNj
NTJhY2NjZTEzYzYwYzRiLi5lOTk0MjU0NGJmZTkwOTQ0YzM1MGQxMzljODUzYzk3ZmQ2NDAzMGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2
ICszNDIsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMGM4OWJhM2E1OTQ4YzQxOGMxMjc5ZWZhZDdhOTVh
OTU4ZTgwZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdk
OGE0YTM5Zi4uMDU0MTZhNTAwMTViNmZjMWNkNTUwMzEwOTIxMmQzNjVlYmY3OWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAj
ZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRl
eCA2ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi45N2RlYzU5YmYxNzkx
OGEyY2M4MjBkNDY1ZmUwNWIwZTNmZTI3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250
ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBD
b250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVm
UHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5
TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0Yzgx
OTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBkYThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkNvbG9yLmgi
CiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2ltcG9ydCAiTGVnYWN5
VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQyZmQ5ZGQ1YzUyZWZi
OTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0MjE5MTE1YTM4YzM1
MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xs
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lP
Uy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFt
ZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QKQEAgLTIwNiw3ICsy
MDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplKCkKICNlbHNl
CiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCks
IE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3LCBoKTsKICNlbmRp
ZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIHcp
KSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0
MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6
Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIGgpKSB9OyAvLyB3
b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNldEJvdW5kc1NpemU6
dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTIyMyw3ICsy
MjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAgIE5TUG9pbnQgdGVt
cFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50
LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07
ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBO
U1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5d
LnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJv
dW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3
ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBv
cnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhl
bWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFk
NTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5
MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
aW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMyYi4uZTBkYjgyN2Y0
MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0
LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNhY2hlKCkKQEAgLTE2
Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAgICBbY29tcG9uZW50
cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0gW2dyZWdvcmlhbiBk
YXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAgIE5TU3RyaW5nICpm
b3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6ZGF0ZV07Ci0gICAg
ICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0
KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lkdGggPSBzdGQ6Om1h
eChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRl
KSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3Zjdi
N2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjY5NTBhMWUwZTUzMjAxODEwN2Q1ZmRmOGE1YTdi
YmM1MTcwNTQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
cwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGlu
Z1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAg
ICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQg
PSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0
YTAyNzg3ZmIxMTBkOTIzMi4uMTU5ZTUwNTY3NzA0MzMwMWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOyB9
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUg
cmVtb3ZlZC4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4
IDlkNzY3ZWMyMTY1M2U3MGVlNDk4YjRlODkzZWYzZDc3OGEzMDA0ZGEuLjZjOTA2MWI1ZTJlZmU1
YjJmY2RjMGY4NTAxOGZjYzFiOTY0N2VlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFy
ZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQt
PmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1
cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBp
ZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsKICAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJp
Z2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAppbmRleCAyMjRmYTE4YzgxNTky
NjJmZWYzZGU4ZWU1MDdhNWI3ZDdkNzlkYjk4Li45ZGY4M2Y0NjA3Y2M5OGMwZDhmYjdlZGY2N2Vk
NmY3Yjg5NzgxYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKQEAgLTY1LDYg
KzY1LDEzIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRmb3JtTGF5ZXIo
KTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi42YmUxMTQ4OTIy
ZDVkN2QxNTYxMTU0ZjE1NzE4ZTA5MmExMjJhNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7
CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2NvbnRlbnRzQnVmZmVySGFu
ZGxlIHx8ICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKICAgICB9CiAKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0
YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CkBAIC0xMzUsNiArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBC
dWZmZXIgbV9iYWNrQnVmZmVyOwogICAgIEJ1ZmZlciBtX3NlY29uZGFyeUJhY2tCdWZmZXI7CiAg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFuZGxl
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCBtX2J1ZmZlckhhbmRs
ZSBzaG91bGQgYmUgdXNlZCB0byByZWYgdGhlIGJ1ZmZlciBvbmNlIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlCisgICAgLy8gY2FuIGJlIGVuY29kZWQgbXVsdGlwbGUgdGltZXMuCisgICAgc3RkOjpv
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBtX2NvbnRlbnRzQnVmZmVySGFuZGxlOwogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9kaXNwbGF5TGlzdEJ1ZmZlckhhbmRsZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdl
MDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjRlOTQ2MjcwYzdlNTE5YWMwZjgzMGRmOGZkMjZkOTI0
OWI5ZjJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEwMyw2ICsxMDMs
NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiAg
ICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsK
ICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlzY2FyZCgpOworICAgIG1fY29udGVudHNCdWZm
ZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0xMTIsOSArMTEzLDEz
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9p
c09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5jbHVkZURpc3BsYXlMaXN0OwotCisgICAgLy8g
RklYTUU6IEZvciBzaW1wbGljaXR5IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2Yg
ZGlzcGxheSgpIG9uY2UgdGhlIGJ1ZmZlciBoYW5kbGVzIGNhbiBiZSBjcmVhdGVkIG9uY2UKKyAg
ICAvLyBhbmQgc3RvcmVkIGluIG1fYnVmZmVySGFuZGxlLgogICAgIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIpIHsKKyAgICBpZiAobV9jb250ZW50c0J1ZmZlckhhbmRsZSkgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CisgICAgICAgIGhhbmRsZSA9IG1fY29u
dGVudHNCdWZmZXJIYW5kbGU7CisgICAgfSBlbHNlIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyKSB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgVHlwZTo6SU9T
dXJmYWNlOgogICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CkBAIC0yMjAsNiArMjI1LDcgQEAg
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxs
b3B0OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAg
aWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNjMsMTMgQEAgYm9v
bCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAg
cmV0dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9
CiAKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNl
bmRSaWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBXVEZN
b3ZlKGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7Cisg
ICAgbV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNp
emUoKSk7CkBAIC0yNjcsNiArMjgwLDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmRpc3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9s
YXllci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250
ZXh0LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsK
KyAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1f
bGF5ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8v
IE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRo
YXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5Lgog
ICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0
NDMyNGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmEx
NDc1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSAr
MTAzNSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24o
KSBjb25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAi
IDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29u
dGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1p
ZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYz
YmMzNGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFj
ZTA5NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsy
OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJU
cmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlm
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXll
cjoKICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxh
eWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0
IFJlbW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0
b206CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0g
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
ICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4g
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXll
cklEKTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJM
YXllcldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2Zk
MzZlMWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUwYWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBm
YjhlZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NTUsNiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhW
aWV3KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03
NCw3ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVM
YXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVD
b250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9z
dCkgewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3
aW5nQXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMu
aG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTQ1ZDRkMzY5MzE3ODQ0NzA0ZDQ3MTgwZmM0ZGFkNmYxYjk2
NjIzNi4uZWNlOTFmZWJiYTYxZjUyNDc0YmEyY2Q1MmQ0ZjNlZTVmNjFkNDJlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDQ4LDYg
KzUwNDgsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3
QTAwMDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMDM5LDcgKzEzMDQwLDYgQEAKIAkJCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0Mg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTkwMjAzMUJF
OUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0
RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0NTI2RUQyNzFFMTY0
NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzMTI3LDYgKzEzMTI3LDcgQEAKIAkJCQkyRDI3OUUxOTI2OTU1NzY4MDA0QjNFRUIgLyog
UHJvdG90eXBlVG9vbHNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgxMjc1RTk3QjYw
MDJEQzIyRCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3RDI3
NUU5N0I2MDAyREMyMkQgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxN0I1Rjk1Mjc1RUJBNjMwMDJEQzIyRCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5l
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyogUXVp
Y2tMb29rVGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1NzI1
MjQwOUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM1MTMsNiArMTM1MTQsNyBAQAogCQkJCTUxN0I1RjJFMjc1NzM4MkEwMDJEQzIy
RCAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3MzI3NUU5NjA5MDAyREMyMkQgLyogV2ViUHVz
aERhZW1vbk1haW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIy
RCAvKiBXZWJQdXNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxQ0NDQTYyMzE0ODVB
QTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg2MEU3MTIzMEY2N0ZDMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2Vi
UmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM1NDcsNyArMTM1NDksNiBAQAog
CQkJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUxN0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVu
dENvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2QkMwM0MxRkEyNjZE
QTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzEx
QTlFQ0MyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM1NkYyREUyMTUyQjcxMDAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTUxMTYsOSArMTUxMTcsOSBAQAogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTUxN0I1RjlBMjc1RjNBODYwMDJE
QzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY2ODI3
NUE5QTc4MDAyREMyMkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxN0I1RjlDMjc1RjNDMzcwMDJEQzIyRCAvKiBEYWVtb25FbmNvZGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJEQzIyRCAvKiBEYWVt
b25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY2ODI3NUE5QTc4MDAyREMy
MkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVG
NjUyNzVBOEQ3RjAwMkRDMjJEIC8qIFdlYlB1c2hUb29sTWFpbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTUy
MTQsNyArMTUyMTUsNiBAQAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2Ny
ZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMx
QTE1MkQ3MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY5OTI3NUVDNjAxMDAy
REMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlG
NjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCRjVFQzY0MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5j
aFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU3NCw2ICsx
NTU3NCw3IEBACiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY3QTI3NUU5N0E0
MDAyREMyMkQgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjc5
Mjc1RTk3QTEwMDJEQzIyRCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUxN0I1Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNl
TG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1
NDMxODUwMEYzMjgxRiAvKiBXZWJSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyQyAvKiBXZWJSVENSZXNvbHZlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNi
ZDlmNjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uNGE0ZTAzOTNiYTVkNzE0ODIzNWI2MjNiMTU0
NDNiZjk2MDllMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2OSBAQAogI2ltcG9ydCAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVy
Lmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7
CiAKLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1Ymxp
YyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNw
bGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMg
UmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBm
bG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOwor
ICAgIH0KKworICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZSBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNl
dE9wYXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworICAgIH0KKworICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZl
cikKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0K
KworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9u
OjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3QgTWFj
aFNlbmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1
ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxh
eUJ1ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZmZXIu
Y29weVNlbmRSaWdodCgpOworICAgIH0KIAorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlz
cGxheURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAg
IDogbV9pc09wYXF1ZShpc09wYXF1ZSkKKyAgICAgICAgLCBtX2NvbnRlbnRzU2NhbGUoY29udGVu
dHNTY2FsZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworICAg
IGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBNYWNoU2VuZFJpZ2h0IG1fZGlzcGxh
eUJ1ZmZlcjsKK307CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBm
aW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAg
ICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVy
LmdldCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJu
IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFy
ZUZvckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KQEAgLTU4LDMwICsxMDMsMjUgQEAgcHVibGljOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUo
KSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0
YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJp
YnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRl
cy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorCisg
ICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmll
bmQgY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFj
a2VuZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2Vi
R0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVs
UmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAg
IFttX3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29j
b2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1f
ZGlzcGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJm
YWNlKCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodCht
X2Rpc3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNW
UGl4ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVB
VkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBA
IC0xMDAsMjYgKzE0MCwxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2Nv
YTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlm
ICghZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZm
ZXIpOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIg
c2V0Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlC
dWZmZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRl
eHQgPSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0
ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVu
ZGVyaW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYz
ZGIzZGZkN2E2MC4uODE0ODUwNmM4Mzg4MWMyYWM2ZjgzMjI1OWZhNGE3NWRiYjU5N2I1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAt
MzMsMzMgKzMzLDUzIEBACiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldDUGxhdGZvcm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBs
YXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9y
bUxheWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9CisK
KyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYm
IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZv
cm1MYXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9w
bGF0Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdD
IGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGljOgog
ICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogcHJpdmF0ZToKLSAg
ICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tl
bmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5
ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+
KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0KIAotICAgIFBs
YXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlZjxQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhH
UFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dM
PihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4u
NThiNmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDEx
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9u
KFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVy
KCkgJiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3Rv
cmVDaGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAm
JiBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXND
aGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsK
IApAQCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
b250ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50
cyhDRlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3Zv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1
cmZhY2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAg
ICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5z
ZXRDb250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3Vy
ZmFjZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVu
c3VyZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENv
bnRlbnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
dmFsdWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5
OGNhMjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4
YThlYWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVu
dHMoKSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBI
QVZFKElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3Vy
ZmFjZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0
aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
LmgKaW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkw
YmMyNWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1f
bGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0
Zm9ybUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4
ZTQ4ZjRlLi4xMTJmMjc4YjdlM2Q5ZjBjYThlNjA2YjZlMjFiMDQ5MjQ5N2YxNjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0K
QEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAog
ICAgIG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJf
ZGlzYWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBl
ID09IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5w
b3NpdGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXll
ci5wb3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5h
bmNob3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0
b21MYXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHBy
b3BlcnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2
IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5
Q29udGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlw
ZUNvbnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMo
W1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29w
eWluZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBj
b3B5Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVu
dHMpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVu
dHMpCi0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3Rd
OwotICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpz
ZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAg
IFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQw
NWY0Li5iZDlhY2JlOTMzM2YxOGE3Nzk3M2JlZTlhZDAxMGNmMWYwNjU3OTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJX
Qy5jcHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENv
bnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIGF1dG8gcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/
IGRpc3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250
ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBH
cmFwaGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0
YzU2NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFw
aGljc0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJXQ1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21w
b3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkNTdmYTM1MGMxOGMxZmQ1MmU1OWMw
MGNjMzdjNWU5MjQzZWM1NGIuLjQzNmI3NjM1NDliYjg4NDIzOTBkNTIyMzkzMjk1MjFlMzZhNzMx
NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMS0xMi0wOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29t
cG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgQWRkIGEg
ZHVtbXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS4KKwogMjAyMS0xMi0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIElPU3VyZmFjZSBtZW1vcnkgYXR0cmlidXRpb24gaXMgaGFy
ZCB0byB1c2UgaW4gY29uc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW0KaW5kZXggYTkxNjI3OThlNmYwN2Y0NzhiYzEyYmJkODNmYzA0NWI0MzIzNzM3NC4u
ZDBmMGE2MjMxZGJjMTJlNjkxOTAwMTNhODljZjczZDY4NTkxZWE1NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9U
ZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDEsNiArNDEsMjEgQEAgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTENvY29hIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2Egewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4g
Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMp
CisgICAgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4g
Y29udGV4dDsKKyAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAg
ICAgICAgOiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRl
cyksIHsgfSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OSw3ICs3NCw3IEBAIHByaXZhdGU6CiAKIHN0YXRp
YyBjb25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0aWMg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0
Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQorc3RhdGljIFJlZlB0cjxUZXN0
ZWRHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29y
ZTo6SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsK
QEAgLTY4LDE0ICs4MywxNCBAQCBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOgogICAgIGF0dHJpYnV0
ZXMuc3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOwogICAgIGF0
dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7Ci0gICAgYXV0byBjb250ZXh0
ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmli
dXRlcyksIHsgfSk7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53
aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
LXN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikK
K3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMo
VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsK
ICAgICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4
cGVjdGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6
OkNvbG9yOjp5ZWxsb3cgfTsKQEAgLTEyMCwxNSArMTM1LDE1IEBAIFRFU1RfRihHcmFwaGljc0Nv
bnRleHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJl
bmNlTWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJp
YnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsgfSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9
IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0
Q29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBh
dXRvIGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNy
ZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0s
IHsgfSk7CisgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0
cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBudWxscHRyKTsKIAog
ICAgIGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xQb3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRvIGhpZ2hQZXJmb3Jt
YW5jZUNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9LCB7IH0pOwor
ICAgIGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRy
aWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRy
KTsKIAogICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRT
dHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446789</attachid>
            <date>2021-12-10 13:00:38 -0800</date>
            <delta_ts>2021-12-13 01:38:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231009-20211210230035.patch</filename>
            <type>text/plain</type>
            <size>123505</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBjOTg2ZDgyNjE5Y2I4
MjlkNmUyYjY4NTI4ZWZkZWY5YTliZjZhYi4uNDA0OWNlMzcxODg4Y2EzNTA5Njk2ODY4ZGY1YjI4
N2E3ODE0ODg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMS0xMi0wOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZWNv
bmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJlLgorICAg
ICAgICBTZWUgV2ViS2l0IHNpZGUgZm9yIHRoZSBkZXNjcmlwdGlvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTEwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEVuYWJsZSBiaWRpIGhhbmRsaW5nIGZvciBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDY1OGE0ZDJlMjQxNTZmNDQzYWI4NTZkMmFjNGJhYTkyZDc0ODgwM2UuLjA1YTAz
OWI3YmFmNDJlZjlkNzQyOGFhNzg0MDg5MTNhMjVkZWJjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjUgQEAKKzIwMjEtMTItMDkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9ydCBVSSBzaWRlIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMDkK
KyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYXBhYmlsaXR5IHRvIGFzc2lnbiBJT1N1
cmZhY2VzCisgICAgICAgIHRvIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjb250ZW50cy4KKworICAg
ICAgICBNYWtlIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSB1c2UgdGhlIGFkZGVk
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS4KKworICAgICAg
ICBTZWNvbmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJl
LgorICAgICAgICBUaGUgdGVzdCBmYWlsdXJlIGhhcHBlbmVkIGR1ZSB0byBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZQorICAgICAgICBzZW5kaW5nIHRoZSBzYW1lIGRyYXduIGJhY2tpbmcgc3RvcmUg
d2l0aCBkaWZmZXJlbnQKKyAgICAgICAgcHJvcGVydGllcyBidXQgc2FtZSBpbWFnZS4gVGhlIG9y
aWdpbmFsIHBhdGNoIHRyaWVkCisgICAgICAgIHRvIHVzZSBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6bV9idWZmZXJIYW5kbGUgYWxzbworICAgICAgICBvbiB0aGUgc2VuZCBzaWRlIHRvIHN0b3Jl
IHRoZSBoYW5kbGUuIFRoaXMgaGFuZGxlCisgICAgICAgIHdhcyBlbmNvZGVkIG11bHRpcGxlIHRp
bWVzLiBUaGUgdW5kZXJseWluZworICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBJUEMg
ZW5jb2RpbmcgZGVzdHJveXMgdGhlCisgICAgICAgIHVuZGVybHlpbmcgbWFjaCBzZW5kIHJpZ2h0
IGV2ZW4gdGhvdWdoIHRoZSBlbmNvZGluZworICAgICAgICBBUEkgc2lnbmF0dXJlIHdvdWxkIHNp
Z25pZnkgdGhhdCB0aGUgSGFuZGxlIHN0YXlzCisgICAgICAgIGludGFjdC4gU2hhcmVhYmxlQml0
bWFwLCBTaGFyZWRNZW1vcnkgd2lsbCBiZSBmaXhlZCBpbgorICAgICAgICBmdXR1cmUgY29tbWl0
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvR1BVUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6Omhhc0Zyb250QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0Q29u
dGVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRz
RGlzcGxheURlbGVnYXRlKToKKwogMjAyMS0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1KTogU2FmYXJpIGxvc2VzIE5l
dHdvcmsgYWNjZXNzIHdoZW4gZXN0YWJsaXNoaW5nIFdlYlJUQyBzZXNzaW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3ZjNjY2NlYmVkMjllMTM1N2JiODk4Yjc5MTQwNDM0NzVjYjQ0YmYzLi5kMTY2
ZDAxYjRkZGQwNDE2YjlmZjBmNmUyYjY1YzlhNTkxMWZmN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0NjEsNiArMTQ2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckZhY3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0u
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZmM5NmEwYjYxMjA3YTRkYTczNjFjNTEz
MjRkZjUyNzYzMWUwYzkyLi43ODE3ZDdmYjA1ZTczNTczOTI4OGJjY2JlODVkMGU0ODI1MWM4NGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzI3LDcgKzMyNyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkFjdGlv
bkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJvY2Vzc0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhYjUzNDlhYThhMjhjNjJi
ZTA4YTgwOWVkMmY2MDJmMzdlYTE0NWE3Li4zN2EyNTJjODRkNzMyN2UxMmMxNTcwNzY4NTVmZjQw
YTExMDE3NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjAzMSw2ICsyMDMxLDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKK3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAxNTY2YjIwNzkyNDc4NGZlZWRkOGE2
NzYzZmI5NmI5NjFkNzM1NzVhLi4xYTU0N2Q3MTRlNGE0N2NmM2FhZGFiYmNmMGRkMTJlYjBkMzVk
ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5MSw3ICszOTEsNiBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbQogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvV2ViR0xMYXllci5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggOWY4NWU0OTg2
YzUzYTFjYzhkNjNiMzM5NGQzZjcyOTU4MzJhZjM4Ny4uMzNhYzM1ZGY3ZDNkNTgzYzg2ZDI3NTY1
NGNhZGMxY2FmNzViMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMDQ3Miw4ICsyMDQ3Miw2
IEBAIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfTUVU
QUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldwogX09CSkNfQ0xBU1NfJF9XZWJD
b3JlRnVsbFNjcmVlbldpbmRvdwogX09CSkNfTUVUQUNMQVNTXyRfV2ViQ29yZUZ1bGxTY3JlZW5X
aW5kb3cKLV9PQkpDX0NMQVNTXyRfV2ViR0xMYXllcgotX09CSkNfTUVUQUNMQVNTXyRfV2ViR0xM
YXllcgogX09CSkNfQ0xBU1NfJF9XZWJMYXllcgogX09CSkNfTUVUQUNMQVNTXyRfV2ViTGF5ZXIK
IF9PQkpDX0NMQVNTXyRfV2ViU2NyaXB0T2JqZWN0CkBAIC0zMDY0Myw4ICszMDY0MSw2IEBAIF9P
QkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fZXhpdFdhcm5pbmcK
IF9PQkpDX0lWQVJfJF9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5fdGFyZ2V0CiBf
T0JKQ19JVkFSXyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2FjdGlvbgogX09C
SkNfSVZBUl8kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuX3RleHRGaWVsZAotX09CSkNf
SVZBUl8kX1dlYkdMTGF5ZXIubV9jb250ZXh0Ci1fT0JKQ19JVkFSXyRfV2ViR0xMYXllci5tX2xh
eWVyT3duZXIKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmltcAogX09CSkNf
SVZBUl8kX1dlYlNjcmlwdE9iamVjdFByaXZhdGUucm9vdE9iamVjdAogX09CSkNfSVZBUl8kX1dl
YlNjcmlwdE9iamVjdFByaXZhdGUub3JpZ2luUm9vdE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NGIzOWU1N2NmNTNl
OGFhMzJhNmNiZDhmNTFhNzRhZGY0ZjAxNzEuLjQyYTdjNGNjYzk2ZmZmNzQ2MWM1MTI5NTBlODFh
NDU5NjVjNDNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0NDQsNyArMTQ0NCw2IEBACiAJCTQ5RUNFQjcwMTQ5OTc5MEQw
MENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVDRUI2NjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3Bl
cmF0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ5RUVEMTQ1MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQx
M0YxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07
CiAJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxNDEx
MDUxOTY5NDAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggKi87IH07Ci0JCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyog
V2ViR0xMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZE
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBGRkE5RTFBQUY1RTdFMDA2
MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMEZGQTlDMUFBRjVFNkMwMDYyODAzQiAv
KiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yMzg0LDYgKzIzODMsNyBAQAogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1
MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCNzIwQjBDMjc0M0RCQTcwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzIwQjBBMjc0M0RCQTYwMDA4QUJFRCAv
KiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3
OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8q
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjhFRDVGMDI2RjBDMTNEMDA4QUMwMjMgLyog
Q1ZVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOTA0MTcwMjU1MDExNDIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MDQxNkUyNTUwMTEwOTAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkzNzgsOCArOTM3OCw2IEBACiAJ
CTQ5RUVEMTRCMTA1MTk3MTkwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkM3
QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xMYXll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcx
MTggLyogV2ViR0xMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkdMTGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZD
MTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
RkZBOUIxQUFGNUU2QzAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDA2LDYg
KzExNDA0LDcgQEAKIAkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVENUVE
MjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExNDE3LDYgKzExNDE2LDcgQEAKIAkJN0JCMzRBNDcyNTM3NzZDNzAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0No
ZWNrc01hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NoZWNrc01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVC
QTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QkJGREVDRDI3NDI4RjU0MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
Q0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBTkdMRVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCQ0Q0MkRBMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkNENDJEQzI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXND
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yODY4NCw2ICsyODY4NCw4IEBACiAJCQkJMEY1ODBCMDkwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuY3BwICovLAogCQkJCTBGNTgwQjBBMEYxMkEy
NjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMEY1ODBCMEIwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCAqLywKKwkJCQk3QkJGREVDRDI3NDI4RjU0
MDBFRDBCNzcgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcCAqLywK
KwkJCQk3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmggKi8sCiAJCQkJMUFDNjk1OTIxNjFBMUU1MzAwMzczMkNCIC8qIEdyYXBo
aWNzTGF5ZXJGYWN0b3J5LmggKi8sCiAJCQkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdy
YXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAqLywKIAkJCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLywKQEAgLTI4OTY5LDggKzI4OTcxLDYgQEAKIAkJ
CQkyRDNFRjQ0NzE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8s
CiAJCQkJQ0Q1RDI3NzYxRTgzMThFMDAwRDgwQTNEIC8qIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbi5oICovLAogCQkJCUNENUQyNzc1MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24ubW0gKi8sCi0JCQkJNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdl
YkdMTGF5ZXIuaCAqLywKLQkJCQk0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXll
ci5tbSAqLywKIAkJCQkwN0Y1Q0ZGNDI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaCAqLywKIAkJCQkwN0Y1Q0ZGMjI1ODJBNEY4MDA2NjJFRjUgLyogV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0gKi8sCiAJCQkJN0IxNjE5MTAyNzE5ODgwRTAwQzQwRUFDIC8qIFdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tICovLApAQCAtMzMwNDIsNiArMzMwNDIs
NyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJN0I1ODJERDgyNzE2RjU1QjAwNEI5MkQw
IC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAv
KiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUw
MDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdE
NjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKQEAgLTM0
Mzc0LDYgKzM0Mzc1LDcgQEAKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhp
Y3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzIw
QjBDMjc0M0RCQTcwMDA4QUJFRCAvKiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzY5NTkzMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFw
aGljc0xheWVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBMjREN0ExNjJERjkxOTAw
QTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEw
MTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNzYwNiw3ICszNzYwOCw2IEBACiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdl
YkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQkYwRTU1MTJBODkyOTgwMERC
MTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5Q0YxMDQy
RDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5
RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkVDMzYyRDkyNUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENTEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiNzlmNmEyMDhkM2NiNTgxZjlhYTJk
NWMyNWI2YmFlYTIyM2Y1NjdiLi43MmIyY2NlNzRkYjk3MmI4NGIyMDhkZTczYTgwMmRlMjhkZjZj
ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTgzLDYgKzg0LDEx
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYoKQogICAgIG1fY2FudmFzLmRl
cmVmQ2FudmFzQmFzZSgpOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogUGl4ZWxGb3JtYXQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBQaXhl
bEZvcm1hdDo6QkdSQTg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzcyMDA3OTA0NmZlMDJmNTY4NDUyMDVkMmE3ZGVi
OTk3OGU4MDIzZS4uNWFlNzliZjBiOWUzOTBiM2FhNjE1M2QyNjAxOGQ3ZmIxYmVjOTUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgLy8gdXNlZCBmb3IgY29tcG9zaXRp
bmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkg
eyB9Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpOwogCiAgICAgYm9vbCBo
YXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNB
Y3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CiAgICAgdm9pZCBzZXRIYXNBY3RpdmVJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcikgeyBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgPSBoYXNBY3Rp
dmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1
Nzg2OGIwYTIzYjIyM2JkZGU5MWMwNzhkYmZkODViOTJkZTVhNTcyLi40OWNlNGFiYTczZjM4Zjc5
YzQyYTRlZjBmOWQyODkxYWQ1NjEzNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTUxLDEw
ICs1MSwxMCBAQCBIVE1MQ2FudmFzRWxlbWVudCogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0
OjpjYW52YXMoKSBjb25zdAogICAgIHJldHVybiAmZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGJhc2UpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZT4gUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpsYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKCkKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlclBpcGUpCi0gICAgICAgIHJl
dHVybiBtX2ltYWdlQnVmZmVyUGlwZS0+cGxhdGZvcm1MYXllcigpOworICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlclBpcGUtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzM2ZhOGYyYWRjNzhiNDlj
YmU0OTc2MGE2YzY2YTM4MzRkZjk5MTk5Li4wYWMzZjdjNGZhYTc0OTVjNTM5NGRkMzExNGExNmE0
Mjk5NzRkMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
bGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGJvb2wgaXNQbGFjZWhvbGRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWw7CiAKICAgICBib29sIGlzQWNjZWxlcmF0ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJQaXBlOyB9CiAgICAgYm9vbCBp
c0dQVUJhc2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCBhYzgxZDhjOTMyNDQ0N2NlYjdmYTM4ZTMzYTk2OWFmYzFhMDM4
NGEwLi5jZTAwZTYzYThmYjc0ZmE4YzVmZGUzM2I5MjNjOWQ1ZjcxNmM0Mjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
QEAgLTY0NTIsOSArNjQ1MywxMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omlz
Q29udGV4dFVucmVjb3ZlcmFibHlMb3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0TG9z
dCAmJiAhbV9yZXN0b3JlQWxsb3dlZDsKIH0KIAotUGxhdGZvcm1MYXllciogV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CitSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKLSAgICByZXR1cm4gKCFpc0NvbnRleHRMb3N0
KCkgJiYgIW1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikgPyBtX2NvbnRleHQtPnBsYXRmb3Jt
TGF5ZXIoKSA6IDA7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSB8fCBtX2lzUGVuZGluZ1BvbGlj
eVJlc29sdXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRl
eHQtPmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpyZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3QmIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAppbmRleCA2NTI0YzkxNzM3NTcwOWEyYzY1MGUyYWI4MTYxMzlkZjUw
NTgxNjA4Li5iNTQ1N2U3MTM3Zjg0MjZkYzAzMTA0YjRjNGU2YTNmYjIyMjRjM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCkBAIC0zODYsNyArMzg2LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CiAgICAgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dEdyb3VwLmdldCgpOyB9Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCA3MWEzOGFmMDZiMzU5MTI2M2M3NDQyYmRiNjg1MGU2ZjYzNDU1OWY5Li5iNWY1ZWNkMzgx
Y2E5MGEyN2Q4ZDJhYjUyZDNlZmIyNTJiZWQxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEyICsyOCwx
MiBAQAogI2lmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC03ODYsNyArNzg2LDcgQEAgcHVibGljOgogICAgICAgICBZZXMKICAg
ICB9OwogCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0gMDsKIAogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgaGFzQWxwaGEoRGF0YUZvcm1hdCBmb3JtYXQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApp
bmRleCBjNzVkYTU2YTgzNjE1NmNjMGQ1ZTVhN2RmMWJmYjBjNGIyYjI2MmM3Li40OTJlNDI2YjYz
MDUyZjQ0OGY3NTc5MDc4MzE5ZWQwYmE2ZjJlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYxMiw2
ICs2MTMsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKIH0K
IAordm9pZCBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBDb250ZW50c0xheWVyUHVy
cG9zZSkKK3sKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29s
b3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgd2lkdGggPSAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGJm
OTUwOWYxOGNjYjk1OTkyM2RkOWY1ZDVmYjI1MmJlMThiOTg5OWMuLmViNjM1OWZlM2YyMzVjMWQz
OGJlNjBiYTA2NTAwZjY3OGNmMTMwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
R3JhcGhpY3NMYXllckZhY3Rvcnk7CitjbGFzcyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIE1vZGVsOwogY2xhc3MgVGlsZWRCYWNraW5n
OwpAQCAtNTIyLDYgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIGFuIGludmFsaWQgY29s
b3IgdG8gcmVtb3ZlIHRoZSBjb250ZW50cyBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXll
clB1cnBvc2UpOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSB7IH0KICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXJJRCBjb250ZW50c0xheWVySURGb3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk5OTg4OTg2YTJmN2Y4ZGRmNmIwZDhjMmQzOTQ2YzNmYzEzYTM3NmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCisKKyNpZiBVU0Uo
Q0EpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6On5HcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IGRlZmF1bHQ7CisKKyNpZiBVU0UoQ0Ep
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTo6cHJlcGFyZVRvRGVs
ZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpCit7Cit9CisKK0dyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGU6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NM
YXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbjsKK30KKyNlbmRpZgorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMTZj
YzY4Y2Y5NTdhNjdhNTIxZjczNjJmMmY3Nzc1ZDRjMGE3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmICFVU0UoQ0EpCisjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCituYW1lc3BhY2UgV2ViQ29yZSB7CisjaWYg
VVNFKENBKQorY2xhc3MgUGxhdGZvcm1DQUxheWVyOworI2VuZGlmCisKKy8vIFBsYXRmb3JtIHNw
ZWNpZmljIGludGVyZmFjZSBmb3IgYXR0YWNoaW5nIGNvbnRlbnRzIHRvIEdyYXBoaWNzTGF5ZXIu
CisvLyBSZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgY29tcG9zaXRvciByZXNvdXJjZXMgdG8gc2hv
dyB0aGUgcGFydGljdWxhciBjb250ZW50cworLy8gaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIEdy
YXBoaWNzTGF5ZXIuCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKKworI2lmIFVTRShDQSkKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvRGVsZWdhdGVEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0OworI2Vsc2UKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCA9IDA7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKaW5kZXggNmU2ZDU3MzI2YzY5Y2QxZmJmM2Zh
Y2VkYmFmMDFjYWUxMDk5NTBlOC4uM2JlZDFkMGFlNmUzOTAwMzgxNmFkYzcyYjlhMDNkNjc2N2U3
ZWUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJQaXBlLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKLS8v
IFVzZWQgdG8gcHJvdmlkZSBhIFBsYXRmb3JtTGF5ZXIgZm9yIGFuIGV4dGVybmFsbHkgbWFuYWdl
ZCBJbWFnZUJ1ZmZlcjsgZS5nLiBhbiBJbWFnZUJ1ZmZlciBjcmVhdGVkIGFuZCBvd25lZCBieSBh
IFdvcmtlciB0aHJlYWQKKy8vIFVzZWQgdG8gcHJvdmlkZSBHcmFwaGljc0xheWVyIGNvbnRlbnRz
IGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZmZXI7IGUuZy4gYW4gSW1hZ2VCdWZm
ZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhyZWFkCiBjbGFzcyBJbWFnZUJ1ZmZl
clBpcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZlclBpcGU+IHsKIHB1YmxpYzoKICAg
ICBjbGFzcyBTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlPiB7CkBA
IC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlclBpcGUoKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTb3VyY2U+IHNvdXJjZSgpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
PiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgPTA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmgKaW5kZXggNGU2MjIzOTNjMmFkZDFmZThkMzlmZmJmNDA0ZjU3ZDM4OTNiZTY4MC4uNjY3MGQw
MWJmMzdhYjkwNTA2Y2QwNTZmNTczMmMzMWE4ZjZmOGI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21t
b24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1MTkwYTM4
NjU0MzAwNzIwMDUwOWNmOTA1YjcwZjU1ZDA3YjU3YjQ3Li5hMTgyYzUyNTRlODAyY2E3OWEwNGE2
NzZhYWRmMWE1MWJkNjA4ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJEaXNwbGF5TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkluTWVtb3J5RGlzcGxheUxpc3QuaCIKQEAg
LTEyNDYsNiArMTI0Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29s
aWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKICAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gbnVsbHB0cjsKICAgICB9CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxw
dHI7CiAKICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCiAgICAgICAgIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7CkBAIC0xMjc3LDYgKzEyNzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgaWYgKG1fY29udGVudHNM
YXllcikKICAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgfQorICAgIG1f
Y29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KQEAgLTEzMDcsNiArMTMxMCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYm
IG1vZGVsKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllclB1
cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQor
ICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAgaWYgKGNvbnRl
bnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtMTM0
Myw2ICsxMzQ3LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBDCiAgICAgICAgIG1fY29udGVu
dHNMYXllciA9IG51bGxwdHI7CiAKICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gcGxhdGZv
cm1MYXllciA/IHB1cnBvc2UgOiBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBtX2Nv
bnRlbnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1BsYXRmb3JtTGF5ZXJD
aGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURl
bGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYgZGVs
ZWdhdGUsIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKG1fY29udGVu
dHNMYXllciAmJiBkZWxlZ2F0ZSA9PSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CisgICAgbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9jb250ZW50
c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOworICAgIGlmIChkZWxl
Z2F0ZSkgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIsIHRoaXMpOwor
ICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID0gV1RGTW92ZShkZWxlZ2F0ZSk7Cisg
ICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOworICAgICAgICAvLyBDdXJy
ZW50bHkgZGVsZWdhdGVkIGRpc3BsYXkgaXMgb25seSB1c2VmdWwgd2hlbiBkZWxlZ2F0ZWUgY2Fs
bHMgc2V0Q29udGVudHMsIHNvIHNldCB0aGUKKyAgICAgICAgLy8gYmFja2luZyBzdG9yZSBzZXR0
aW5ncyBhY2NvcmRpbmdseS4KKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNraW5nU3Rv
cmVBdHRhY2hlZCh0cnVlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBY2NlbGVyYXRl
c0RyYXdpbmcodHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnByZXBh
cmVUb0RlbGVnYXRlRGlzcGxheSgqbV9jb250ZW50c0xheWVyKTsKKyAgICB9CiAKICAgICBub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50
c1BsYXRmb3JtTGF5ZXJDaGFuZ2VkKTsKQEAgLTE4NzgsNiArMTkwNywxOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTG9nRmlsbGVkVmlzaWJsZUZyZXNoVGlsZSh1bnNp
Z25lZCBibGFua1BpeAogICAgIGNsaWVudCgpLmxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUoYmxh
bmtQaXhlbENvdW50KTsKIH0KIAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
ckRlbGVnYXRlc0Rpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSAmJiBtX2NvbnRlbnRzTGF5ZXIgPT0gbGF5
ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3Bs
YXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKGxheWVyID09IG1fY29udGVudHNMYXllcik7CisgICAg
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+ZGlzcGxheSgqbGF5ZXIpOworfQorCiBzdGF0aWMg
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBl
YXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAg
ICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpM
aWdodEJhY2tkcm9wID8gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tk
cm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExh
eWVyOwpAQCAtMjc5Miw3ICsyODMzLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzUGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBsYXRmb3Jt
IGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQg
aW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IG1fY29udGVudHNEaXNwbGF5
RGVsZWdhdGUgPyBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5vcmllbnRhdGlvbigpIDogZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247CisgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVu
dHNMYXllci5nZXQoKSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKG1fY29udGVudHNMYXllclB1
cnBvc2UgPT0gQ29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcykKICAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTQ0MTIsMTkgKzQ0NTQsMTMgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmNoYW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIG5ld0xheWVyVHlwZSkKICAgICAgICAgY2xpZW50KCkudGlsZWRCYWNraW5nVXNhZ2VDaGFu
Z2VkKHRoaXMsIGlzVGlsZWRMYXllcik7CiB9CiAKLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09y
aWVudGF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uOjpUb3BEb3duOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250
ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVy
LCBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAg
Ly8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29udGVudHNMYXllci0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKICNlbmRpZgotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgeworICAgIGlm
IChvcmllbnRhdGlvbiA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRv
bVVwKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCiAgICAgICAgICAg
ICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAogICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYs
IDAuMGYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oCmluZGV4IDlkNDRmNmFiMzgwYzg4NjY2MzRmM2JmNzQwOWVlYzdmMzli
NDhkODcuLmY2YjJjOTRjYjNkNmZmYWQwMzVlYjc0OTJhMjU1ODIyNTkyYTAwY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRm
b3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJy
aWRlOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgb3Zl
cnJpZGU7CkBAIC0xOTMsNiArMTk1LDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGFjY2VsZXJhdGVkQW5pbWF0aW9uc0Zv
clRlc3RpbmcoKSBjb25zdCBmaW5hbDsKIAorICAgIGNvbnN0ZXhwciBzdGF0aWMgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uID0gQ29t
cG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BEb3duOworCiBwcml2YXRlOgogICAg
IGJvb2wgaXNHcmFwaGljc0xheWVyQ0EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKQEAgLTIxMiw2ICsyMTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnRlbnRzT3BhcXVl
KCk7IH0KICAgICBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGRyYXdzQ29udGVudCgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNw
bGF5KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1DQUxheWVy
TGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgcmV0dXJu
IGxheWVyRGlkRGlzcGxheShsYXllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRm
b3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKICAgICBXRUJD
T1JFX0VYUE9SVCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzAwLDEwICszMDYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXF1
aXJlc1RpbGVkTGF5ZXIoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBjb25zdDsKICAgICB2b2lkIGNo
YW5nZUxheWVyVHlwZVRvKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKLQotICAgIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0OwotCi0gICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7
CisgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uID0gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24pOwog
ICAgIFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBs
YXRmb3JtQ0FMYXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwpAQCAtNjQ0LDYgKzY0Nyw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgUmVmUHRyPE1vZGVsPiBtX2NvbnRlbnRzTW9k
ZWw7CiAjZW5kaWYKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogCiAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1BbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA1ZGYx
YTNiNjFhYjVkOTdlZDYzYzhhYjE4ODhlOWRkYTkyZDE1ODM0Li44YTIxYTFkNWNmNDE4YmMwYjgz
YTJjOWFjMDI2MGY5NjIwNjExYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgT0JK
Q19DTEFTUyBBVlBsYXllckxheWVyOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRl
eHRSZWY7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFdURiB7CisjaWYgSEFWRShJT1NVUkZBQ0UpCitj
bGFzcyBNYWNoU2VuZFJpZ2h0OworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTGF5ZXJQb29sOwpAQCAtNDgsNiArNTQsMTAgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVy
Q2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPj4gUGxhdGZv
cm1DQUxheWVyTGlzdDsKIAorI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgSU9TdXJmYWNlOwor
I2VuZGlmCisKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtQ0FMYXllciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1DQUxheWVyQ29jb2E7CkBAIC0xOTAsNiArMjAwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHMoQ0ZUeXBlUmVmKSA9IDA7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSA9IDA7Cisj
ZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKaW5kZXggNjc3OGRlNzE5YzUwZTFhNDVmYzgyNDZk
NzNhOTA4YWJmYmFkMTMwNi4uMWU3MmM0NTY2ZTdhZmVhYjY0ZDY2ZGE5MDZjMGYxOWZmZDgzOWIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5
KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1Rv
UmV2YWxpZGF0ZVRpbGVzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRl
eCA5YjFiMDExMjAxMzRjZDg1NWVjNWNkMTE0OGMxMTFlZmY3ZTA2ZmQzLi44MTk5NTdjYWNkYWI1
ZjIxOGFmM2UzYWZhZTg0YWNmN2UwNDliMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CisjaWYgSEFWRShJ
T1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpp
bmRleCAzNGUyNTkwZjU3NzI5NmIyMjM5YmYyODY4MmZjNzU2YWM2NjkwM2FhLi4yYTQ1ZGRjNDU4
ZGUwNjdiYWRiMDFhNTdlZGZiMmI5YWI5NTMwMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAiVGlsZWRCYWNraW5nLmgiCiAj
aW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YkNvcmVDQUxheWVyRXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0ICJX
ZWJWaWRlb0NvbnRhaW5lckxheWVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgpAQCAtNTQsNiArNTMsNyBAQAog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KIApAQCAtMjExLDkgKzIxMSw2IEBAIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmCiAgICAg
ICAgICYmIFsoV2ViVmlkZW9Db250YWluZXJMYXllciopbGF5ZXIgcGxheWVyTGF5ZXJdKQogICAg
ICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAotICAgIGlmIChbbGF5ZXIgaXNL
aW5kT2ZDbGFzczpbV2ViR0xMYXllciBjbGFzc11dKQotICAgICAgICByZXR1cm4gTGF5ZXJUeXBl
Q29udGVudHNQcm92aWRlZExheWVyOwotCiAgICAgcmV0dXJuIExheWVyVHlwZUN1c3RvbTsKIH0K
IApAQCAtMjM0LDYgKzIzMSw3IEBAIFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNBTGF5
ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBMYXllclR5cGVU
aWxlZEJhY2tpbmdUaWxlTGF5ZXI6CisgICAgY2FzZSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXI6CiAgICAgICAgIGxheWVyQ2xhc3MgPSBbV2ViU2ltcGxlTGF5ZXIgY2xhc3NdOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAtMjY1LDEw
ICsyNjMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBpZiAoUEFMOjppc0FW
Rm91bmRhdGlvbkZyYW1ld29ya0F2YWlsYWJsZSgpKQogICAgICAgICAgICAgbGF5ZXJDbGFzcyA9
IFBBTDo6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgotICAgICAgICAvLyBXZSBkb24ndCBjcmVh
dGUgUGxhdGZvcm1DQUxheWVyQ29jb2FzIHdyYXBwZWQgYXJvdW5kIFdlYkdMTGF5ZXJzLgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCiAgICAgY2FzZSBMYXllclR5cGVNb2RlbExheWVyOgogICAgICAgICBsYXll
ckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwpAQCAtMzEwLDcgKzMwNCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAgIH0KICAgICAKICAgICAvLyBDbGVhciBh
bGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKLSAgICBpZiAobV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xs
Q29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQorICAgIGlm
IChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyIHx8IG1fbGF5ZXJUeXBlID09
IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlw
ZUN1c3RvbSkKICAgICAgICAgW21fbGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKICAgICBl
bHNlCiAgICAgICAgIFttX2xheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxh
eWVyRGVsZWdhdGUgc2hhcmVkXV07CkBAIC03OTcsNiArNzkxLDE5IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYgc3VyZmFj
ZSkKK3sKKyAgICBzZXRDb250ZW50cyhzdXJmYWNlLmFzTGF5ZXJDb250ZW50cygpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBzdXJmYWNlSGFuZGxlKQoreworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQo
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIHNldENvbnRl
bnRzKCpzdXJmYWNlKTsKK30KKyNlbmRpZgorCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCA5MWU2
NDcwODAzYTU0OGM2MWI5NTg2Nzc0YmNhOTU1MTVkOTVkZDg4Li4zMDg5ODAwN2VmMmZmNjY5MjY5
YWY2NGY2OTEyYzkwOTY4Zjc5NGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBvdmVycmlkZTsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBs
YXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCA5YWIyZDc0NDEwYTA2YmMwZGU2NDE1MGU4ZTEy
MDNlMDUzYWQ1OTRiLi5lMjY4OTU3MjY5NDk4OGY0ZTJiOTg3OTUyMWQ5ZDI4ZDc1MWVlZWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KQEAgLTQ3MCwxMSArNDcwLDYgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTENvY29hOjppc1ZhbGlkKCkgY29uc3QKICAgICByZXR1cm4gbV90
ZXh0dXJlOwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogYm9vbCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9j
b250ZXh0T2JqKQpAQCAtODAzLDYgKzc5OCwxMSBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdM
Q29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb25maWdPYmo7CiB9CiAKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmxheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZGEw
ZmUwZjQ0YTNhODQ0MGU2NjM5ZWE5ZDdlMGE4OTYwNjg4ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViR0xMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0KLS8vIEEgbGF5ZXIgY2xhc3Mgc2hvd2luZyBvbmUgSU9TdXJmYWNlLgotV0VCQ09S
RV9FWFBPUlQgQGludGVyZmFjZSBXZWJHTExheWVyIDogQ0FMYXllcgotCi0tIChpZClpbml0V2l0
aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6
KGJvb2wpY29udGVudHNPcGFxdWU7Ci0KLUBlbmQKLQotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU5MDMxNTU2
OTExMTM2YzMxZjVkNjhlZTI0M2Y2N2VmNjZkZThjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2ltcG9ydCAiV2ViR0xMYXllci5oIgotCi0j
aW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKLSNp
bXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViR0xMYXllcgot
Ci0tIChpZClpbml0V2l0aERldmljZVBpeGVsUmF0aW86KGZsb2F0KWRldmljZVBpeGVsUmF0aW8g
Y29udGVudHNPcGFxdWU6KGJvb2wpY29udGVudHNPcGFxdWUKLXsKLSAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwotICAgIHNlbGYudHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwotICAg
IHNlbGYuY29udGVudHNPcGFxdWUgPSBjb250ZW50c09wYXF1ZTsKLSAgICBzZWxmLmNvbnRlbnRz
U2NhbGUgPSBkZXZpY2VQaXhlbFJhdGlvOwotICAgIHJldHVybiBzZWxmOwotfQotCi0vLyBXaGVu
IHVzaW5nIGFuIElPU3VyZmFjZSBhcyBsYXllciBjb250ZW50cywgd2UgbmVlZCB0byBmbGlwIHRo
ZQotLy8gbGF5ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgSU9TdXJmYWNlIHByb3Zp
ZGVzIGNvbnRlbnQKLS8vIGluIFktdXAuIFRoaXMgbWVhbnMgdGhhdCBhbnkgaW5jb21pbmcgdHJh
bnNmb3JtICh1bmxpa2VseSwgc2luY2UKLS8vIHRoaXMgaXMgYSBjb250ZW50cyBsYXllcikgYW5k
IGFuY2hvciBwb2ludCBtdXN0IGFkZCBhIFkgc2NhbGUgb2YKLS8vIC0xIGFuZCBtYWtlIHN1cmUg
dGhlIHRyYW5zZm9ybSBoYXBwZW5zIGZyb20gdGhlIHRvcC4KLQotLSAodm9pZClzZXRUcmFuc2Zv
cm06KENBVHJhbnNmb3JtM0QpdAotewotICAgIFtzdXBlciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zv
cm0zRFNjYWxlKHQsIDEsIC0xLCAxKV07Ci19Ci0KLS0gKHZvaWQpc2V0QW5jaG9yUG9pbnQ6KENH
UG9pbnQpcAotewotICAgIFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngsIDEu
MCAtIHAueSldOwotfQotCi0tICh2b2lkKWRpc3BsYXkKLXsKLSAgICAvLyBTaG93IHRoZSBzZWxm
LmNvbnRlbnRzIGFzIHRoZSBjb250ZW50cyBieSBub3QgZG9pbmcgYW55dGhpbmcgaW4gdGhpcyBm
dW5jdGlvbi4KLSAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVy
ICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKLQotfQotCi1AZW5kCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCmluZGV4IDhkNWQyNWFiMTBiNDVlM2Y5YTZlODM4YWUxMDk0MWU2ZmMwZTVlMzgu
LjEyYTk2YzZlNmNlYzAwZmRjNDAwZjAxNTViMzEyNzEyMGRjZmViZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0yOSw5ICsyOSw4IEBA
CiAjaWYgRU5BQkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIiAv
LyBOT0xJTlQKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKLSNp
bXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0
b3IuaCIKQEAgLTQwLDQ2ICszOSw4MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IHsKIAotc3RhdGljIFJldGFpblB0cjxXZWJHTExheWVyPiBjcmVhdGVXZWJHTExheWVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKLXsKLSAgICBSZXRhaW5Q
dHI8V2ViR0xMYXllcj4gbGF5ZXI7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgbGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xMYXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOmF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbyBjb250ZW50c09wYXF1ZTohYXR0cmli
dXRlcy5hbHBoYV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICBbbGF5ZXIgc2V0TmFtZTpAIldlYkdM
IExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIGxheWVyOwotfQorY2xhc3MgRGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKGJvb2wg
aXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlKGlzT3BhcXVlLCBjb250ZW50
c1NjYWxlKSk7CisgICAgfQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlIG92ZXJyaWRlcy4KKyAgICB2b2lkIHByZXBhcmVUb0RlbGVnYXRlRGlzcGxheShQbGF0
Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgbGF5ZXIuc2V0T3BhcXVl
KG1faXNPcGFxdWUpOworICAgICAgICBsYXllci5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNT
Y2FsZSk7CisgICAgfQorCisgICAgdm9pZCBkaXNwbGF5KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9kaXNwbGF5QnVmZmVyKQorICAgICAgICAgICAg
bGF5ZXIuc2V0Q29udGVudHMoKm1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKworICAgIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNl
dERpc3BsYXlCdWZmZXIoSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyKQorICAgIHsKKyAgICAgICAg
aWYgKCFkaXNwbGF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2Rpc3BsYXlCdWZmZXIucmVzZXQo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5
QnVmZmVyICYmIGRpc3BsYXlCdWZmZXItPnN1cmZhY2UoKSA9PSBtX2Rpc3BsYXlCdWZmZXItPnN1
cmZhY2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShkaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgICAgICAs
IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgeworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IG1fZGlzcGxheUJ1ZmZlcjsKKyAgICBjb25zdCBmbG9hdCBtX2NvbnRlbnRz
U2NhbGU7CisgICAgY29uc3QgYm9vbCBtX2lzT3BhcXVlOworfTsKIAogLy8gR3JhcGhpY3NDb250
ZXh0R0wgdHlwZSB0aGF0IGlzIHVzZWQgd2hlbiBXZWJHTCBpcyBydW4gaW4tcHJvY2VzcyBpbiBX
ZWJDb250ZW50IHByb2Nlc3MuCiBjbGFzcyBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTENvY29hCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICwgcHJpdmF0ZSBEaXNwbGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudAogI2Vu
ZGlmCi0KIHsKIHB1YmxpYzoKICAgICB+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KTsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBHcmFwaGljc0NvbnRleHRHTENv
Y29hOjppc1ZhbGlkKCkgJiYgbV93ZWJHTExheWVyOyB9CisKICAgICAvLyBHcmFwaGljc0NvbnRl
eHRHTENvY29hIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExh
eWVyLmdldCgpKTsgfQorICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAgICB2b2lkIHByZXBhcmVGb3JE
aXNwbGF5KCkgZmluYWw7CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBEaXNw
bGF5Q29uZmlndXJhdGlvbk1vbml0b3I6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaXNw
bGF5V2FzUmVjb25maWd1cmVkKCkgZmluYWw7CiAjZW5kaWYKLQogICAgIFdlYlByb2Nlc3NHcmFw
aGljc0NvbnRleHRHTENvY29hKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKLSAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogCisgICAgUmVmPERpc3BsYXlCdWZm
ZXJEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBm
cmllbmQgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDb3JlOjpjcmVhdGVXZWJQcm9jZXNz
R3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7Cisg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogfTsKIAogV2ViUHJvY2Vz
c0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29h
KEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGlj
c0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcyksIHsgfSkKLSAgICAsIG1fd2ViR0xM
YXllcihjcmVhdGVXZWJHTExheWVyKGNvbnRleHRBdHRyaWJ1dGVzKCkpKQorICAgICwgbV9sYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNy
ZWF0ZSghYXR0cmlidXRlcy5hbHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKIHsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpzaW5n
bGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwpAQCAtOTYsMTMgKzEzMiw3IEBAIFdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTENvY29hOjp+V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KQogdm9pZCBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3Bs
YXkoKQogewogICAgIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCk7
Ci0gICAgYXV0byBzdXJmYWNlID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpLnN1cmZhY2Uu
Z2V0KCk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm47Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fd2ViR0xMYXllciBzZXRDb250ZW50czpzdXJmYWNl
LT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgW21fd2ViR0xMYXllciBzZXROZWVkc0Rpc3BsYXld
OwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZmZXIoZGlzcGxheUJ1ZmZlcigpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5z
ZmVyQ29yZUltYWdlQXBwbGllci5tbQppbmRleCBlYjA0ZTIwNjU2ZjViYmE3YmZmZTAxM2E4ZDZi
ZDlkMTU0ZTYwYzQ5Li4zMzljNmZmOWQyNDI1YmJiNzBmZmFlYzRhMjcyMjJhZGQzOTNhMzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVD
b21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VB
cHBsaWVyLm1tCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgVVNFKENPUkVfSU1BR0UpCiAKICNpbXBv
cnQgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQu
aD4KKyNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0Nv
cmVJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggYWNmOTZmZDBkNTQw
YWI4NmU3NzBkNDYxM2MxOTBhMjI4M2I3MDVmMC4uMzI2ZjA0MzJiNDg2MjIxOTYyYzc1ZWZjNmRl
MDFlZDhhZGM5ZTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ29sb3JT
cGFjZUNHLmgiCiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5tbQppbmRleCA1NTQ4MGI1MmI5MWUwMjg2MmZmMGJmYzEzMDZkYTgwZDYwM2M1NDJj
Li4zN2UwZjU0YmI2MDAxMjM0ZmI2ZmU0YWQ5MmU1NzhkYjhmMzAzZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCkBAIC04MSw4ICs4
MSwxMSBAQAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKICAgICBhdXRvIGxheWVyID0gV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ug
dm9pZCopc2VsZik7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgW3N1cGVyIHNl
dE5lZWRzRGlzcGxheV07CisgICAgaWYgKCFsYXllciB8fCAhbGF5ZXItPm93bmVyKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3
c0NvbnRlbnQoKSAmJiAhbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rp
c3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisgICAgW3N1cGVyIHNldE5lZWRz
RGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGly
dHlSZWN0CkBAIC05NCw3ICs5Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogbGF5ZXJPd25lciA9IHBsYXRmb3JtTGF5ZXItPm93bmVyKCkpIHsK
LSAgICAgICAgaWYgKGxheWVyT3duZXItPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7
CisgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSB8
fCBsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHBsYXRmb3JtTGF5
ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OmRp
cnR5UmVjdF07CiAKICAgICAgICAgICAgIGlmIChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJT
aG93UmVwYWludENvdW50ZXIocGxhdGZvcm1MYXllci5nZXQoKSkpIHsKQEAgLTExMywxMCArMTE2
LDE0IEBACiAgICAgICAgIFdlYlRocmVhZExvY2soKTsKICNlbmRpZgogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgW3N1cGVyIGRpc3BsYXldOwogICAgIGF1dG8gbGF5ZXIgPSBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllckZvckxheWVyKChfX2JyaWRnZSB2
b2lkKilzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxh
eWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkp
OworICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIgPSBsYXllciA/IGxh
eWVyLT5vd25lcigpIDogbnVsbHB0cjsKKyAgICBpZiAob3duZXIgJiYgb3duZXItPnBsYXRmb3Jt
Q0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobGF5ZXIuZ2V0KCkpKQorICAgICAgICBvd25lci0+cGxh
dGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IFtzdXBlciBkaXNwbGF5XTsKKyAgICBpZiAob3duZXIpCisgICAgICAgIG93bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJMYXllckRpZERpc3BsYXkobGF5ZXIuZ2V0KCkpOwogfQogCiAtICh2b2lkKWRyYXdJ
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlLmNwcAppbmRleCAzMzAyOGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRk
Li4yZjc0ZDBlYmFkYjdkODJlOTIwZDQyOGNkOWUxOWNmNmRkZTM2MDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTQ0LDE2ICs0NCwxOCBAQCBuYW1lc3BhY2Ug
Tmljb3NpYSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCituYW1lc3BhY2UgewogY2xh
c3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZl
clBpcGU6OlNvdXJjZSwgcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGll
bnQgewogcHVibGljOgogICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2
aXJ0dWFsIH5OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAKKyAgICAvLyBJbWFnZUJ1
ZmZlclBpcGU6OlNvdXJjZSBvdmVycmlkZXMuCiAgICAgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmKSBmaW5hbDsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdDsKLQorICAgIENvbnRlbnRMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbmljb3NpYUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgorICAgIC8vIENvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJ
Zk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9uaWNvc2lh
TGF5ZXI7CkBAIC02MiwxNiArNjQsMzggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IG1faW1hZ2VCdWZmZXI7CiB9OwogCi1jbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZp
bmFsIDogcHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitjbGFzcyBQaXBlU291cmNlRGlzcGxheURl
bGVnYXRlIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSB7CiBwdWJsaWM6Ci0gICAgTmljb3NpYUltYWdlQnVmZmVyUGlwZSgpOwotICAgIHZpcnR1YWwg
fk5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKSA9IGRlZmF1bHQ7CisgICAgc3RhdGljIFJlZjxQaXBl
U291cmNlRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUmVmUHRyPENvbnRlbnRMYXllcj4mJiBuaWNv
c2lhTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlU291cmNl
RGlzcGxheURlbGVnYXRlKFdURk1vdmUobmljb3NpYUxheWVyKSkpOworICAgIH0KIAorICAgIC8v
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVycmlkZXMuCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbmljb3Np
YUxheWVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNv
dXJjZT4gc291cmNlKCkgY29uc3QgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOworICAgIFBpcGVTb3VyY2VEaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PENvbnRlbnRMYXllcj4mJiBuaWNvc2lhTGF5ZXIpCisgICAgICAgIDogbV9uaWNvc2lhTGF5ZXIo
V1RGTW92ZShuaWNvc2lhTGF5ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q29udGVu
dExheWVyPiBtX25pY29zaWFMYXllcjsKK307CisKK2NsYXNzIE5pY29zaWFJbWFnZUJ1ZmZlclBp
cGUgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlIHsKK3B1YmxpYzoKKyAgICBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlKCkKKyAgICAgICAgOiBtX3NvdXJjZShhZG9wdFJlZigqbmV3IE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZShQaXBlU291cmNlRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobV9zb3VyY2UtPnBs
YXRmb3JtTGF5ZXIoKSkpCisgICAgeworICAgIH0KIAotICAgIFJlZlB0cjxOaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsKKyAgICAvLyBJbWFnZUJ1ZmZlclBpcGUgb3ZlcnJp
ZGVzLgorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gc291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zb3VyY2UucHRyKCk7IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOyB9Citw
cml2YXRlOgorICAgIFJlZjxOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlPiBtX3NvdXJjZTsK
KyAgICBSZWY8UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlOwogfTsKIAogTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZSgpCkBAIC0xMzUsMzAgKzE1OSwxMCBAQCB2b2lkIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVy
KQogICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKLVBsYXRmb3JtTGF5
ZXIqIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKLX0KLQogdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIHsKIH0KIAotTmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZSgpCi17Ci0gICAgbV9zb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk7Ci19Ci0KLVJl
ZlB0cjxJbWFnZUJ1ZmZlclBpcGU6OlNvdXJjZT4gTmljb3NpYUltYWdlQnVmZmVyUGlwZTo6c291
cmNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zb3VyY2U7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIq
IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIGlm
IChtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fc291cmNlLT5wbGF0Zm9ybUxheWVyKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYmE5ZDVhZjkwZDc0ODVhNzY0MzU2OTJkYjU2
MGFiYmU5ZDgxNTA1Yi4uZjJhNzkyOGQ1ZWU1MmI2MDMzNjYxYzU5MTdlN2UyN2IyYzIyNjg4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludCBhbGlnbm1lbnQgPSA0KTsKIAorICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMIG92ZXJyaWRlcy4KICAgICBib29sIGlzR0xFUzJDb21wbGlhbnQoKSBjb25zdCBmaW5hbDsK
ICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5NzZl
M2FiZTViYjNhYzQwYWY4ZjIwYzllZTRlZThhMjU1M2IwYTQ3Li43NTBhODRhZjYzODJjNTQxMzBj
ZjM2ZTg2ZDliYzhjNzYwNGNmYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR0xDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTc5LDYgKzgwLDMyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKworY2xhc3MgUGxhdGZvcm1MYXllckRpc3BsYXlE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0
ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKHBsYXRmb3Jt
TGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxheWVyKiBtX3BsYXRmb3JtTGF5ZXI7Cit9
OworCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmIGF0dHJpYnV0ZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKQEAgLTg4LDcgKzExNSwx
NyBAQCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6On5HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIoKSA9IGRlZmF1bHQ7CiAKIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJC
YXNlKFdURk1vdmUoYXR0cmlidXRlcykpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX2xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3Jl
YXRlKCZtX25pY29zaWFMYXllci0+Y29udGVudExheWVyKCkpKQorI2Vsc2UKKyAgICAsIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpj
cmVhdGUobV90ZXhtYXBMYXllci5nZXQoKSkpCisjZW5kaWYKK3sKK30KKworUmVmUHRyPEdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKIHsKKyAgICByZXR1cm4gbV9s
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLnB0cigpOwogfQogCiBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCkBAIC0xMjMsMTUgKzE2MCw2IEBAIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IEdyYXBoaWNzQ29udGV4CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVBsYXRmb3Jt
TGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1MYXllcigpIGNv
bnN0Ci17Ci0jaWYgVVNFKE5JQ09TSUEpCi0gICAgcmV0dXJuICZtX25pY29zaWFMYXllci0+Y29u
dGVudExheWVyKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOwotI2Vu
ZGlmCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuaAppbmRleCBiNDBlNzk4MzNlODExMGY1ZDA5N2VhZDNiNTMxZjFlNjJkNmQ4ZDFiLi4yZGIy
ZThkN2Q5Y2Q3YjljYWJiNGM5Y2E0MTcyNDNmMGU3YTBiNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKCk7CiAKICAgICAvLyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZp
bmFsOwogI2lmIEVOQUJMRShWSURFTykKICAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CiAj
ZW5kaWYKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKTsKKyAgICBSZWY8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzZDdiODYzOTY2ZDdhOTc0YjAxMzYwYTNj
NTJhY2NjZTEzYzYwYzRiLi5lOTk0MjU0NGJmZTkwOTQ0YzM1MGQxMzljODUzYzk3ZmQ2NDAzMGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTM0Miw2
ICszNDIsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNU
b1BsYXRmb3JtTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3IKICAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRDbGllbnQodGhpcyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9z
ZSBwdXJwb3NlKQoreworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5
RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7Cisg
ICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dEZWJ1Z0JvcmRlcihi
b29sIHNob3cpCiB7CiAgICAgaWYgKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkgPT0gc2hvdykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggYTEwMzRkYTRhOGI0ZDIz
NGEzZjQxZDFiYTMxN2NmZmFhMTg2MTI5OC4uMGM4OWJhM2E1OTQ4YzQxOGMxMjc5ZWZhZDdhOTVh
OTU4ZTgwZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgpAQCAtNzgsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVs
ZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29u
dGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggYTc0OTA3Y2UxY2I3MDFiNzg3MGQwOGJiY2NlMDQyMzdk
OGE0YTM5Zi4uMDU0MTZhNTAwMTViNmZjMWNkNTUwMzEwOTIxMmQzNjVlYmY3OWRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJOaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaCIKICNpbmNsdWRlICJOaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsLmgiCkBAIC00OTksNiArNTAwLDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAj
ZW5kaWYKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzRGlz
cGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBkaXNwbGF5RGVsZWdhdGUgPyBkaXNwbGF5
RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CisgICAgc2V0Q29udGVudHNUb1Bs
YXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7Cit9CisKIGJvb2wgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgaWYgKCFmaWx0ZXJzLnNpemUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRl
eCA2ODk2YzVlNWIwMjQzODNkNzU5NTc4OTFjOTViMGM3Y2ZkNzViNGNkLi45N2RlYzU5YmYxNzkx
OGEyY2M4MjBkNDY1ZmUwNWIwZTNmZTI3NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250
ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmLCBD
b250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoUmVm
UHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5
TGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQppbmRleCBjMzljMzEyNGU4NTQyYWY5NTE5NzE3ODRiODBmMjA0Yzgx
OTVmY2U4Li5kMzBiNGU0MTBlZmM4YTRjMDQ2ZDZiZjUyYzllZjE3OTk3MTBkYThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkNvbG9yLmgi
CiAjaW1wb3J0ICJGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIgogI2ltcG9ydCAiTGVnYWN5
VGlsZUdyaWQuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkVGlsZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQppbmRleCBiNGQyZmQ5ZGQ1YzUyZWZi
OTdjMzFkZDdkMDQ1ZDM5OTlmZTRiZjQxLi45YTllNjE5NTE1ZWU3MDJjZTc0MjE5MTE1YTM4YzM1
MDk3ZmJhOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xs
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lP
Uy5tbQpAQCAtNDEsOCArNDEsNiBAQAogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgTlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFt
ZVNjcm9sbFZpZXc+ICpTY3JvbGxWaWV3OjpzY3JvbGxWaWV3KCkgY29uc3QKQEAgLTIwNiw3ICsy
MDQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplKCkKICNlbHNl
CiAgICAgTE9HKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCks
IE5TU3RyaW5nRnJvbUNsYXNzKFtkb2N1bWVudFZpZXcoKSBjbGFzc10pLCB3LCBoKTsKICNlbmRp
ZgotICAgIE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIHcp
KSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4obWF4KDAsIGgpKSB9OyAvLyB3b3JrYXJvdW5kIGZvciA0
MjEzMzE0CisgICAgTlNTaXplIHRlbXBTaXplID0geyBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6
Om1heCgwLCB3KSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6bWF4KDAsIGgpKSB9OyAvLyB3
b3JrYXJvdW5kIGZvciA0MjEzMzE0CiAgICAgW2RvY3VtZW50VmlldygpIHNldEJvdW5kc1NpemU6
dGVtcFNpemVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTIyMyw3ICsy
MjEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50OwotICAgIE5TUG9pbnQgdGVt
cFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50
LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBvaW50LnkpIH07
ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KKyAgICBO
U1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5d
LnksIGZsb2F0UG9pbnQueSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJv
dW5kIDQyMTMzMTQuCiAgICAgW2RvY3VtZW50VmlldygpIHNjcm9sbFBvaW50OnRlbXBQb2ludF07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1RoZW1lSU9TLm1tCmluZGV4IDFiYmE0ZTJhZGM5ZjZhMTZmYmM2M2MwOTY5M2U1YzY2MWY3
ZGQ1NGIuLjc1MjA1MjM5ZDY4Y2I1Y2FiZTIwZTNlODdiNTBhMjMwNjJhZTMwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTMxLDggKzMxLDYgQEAKICNpbXBv
cnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhl
bWUmIFRoZW1lOjpzaW5nbGV0b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmgKaW5kZXggMWYwYzA5ZjFk
NTQ1MzA4NzU1N2MxZTIwYjFhOGE1MGRmOTkxMGNhZC4uNDIzNDExNjllZGQwZTNlNzQ4ZTc3Mjg5
MDU1MzQxMjM4N2NmNmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0K
aW5kZXggOTM4NGQwMmRjNzBjNDljY2ExYzYzNWU1ZTg4NmM0M2VkOTNkOWMyYi4uZTBkYjgyN2Y0
MDg0ZTc3NzJjNGQwNTRhOWE4Mzg4ZWIyOGY5ZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jb2NvYS9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTM0
LDggKzM0LDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIExvY2FsaXplZERhdGVDYWNoZSYgbG9jYWxpemVkRGF0ZUNhY2hlKCkKQEAgLTE2
Niw3ICsxNjQsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1X
aWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgTQogICAgICAgICBbY29tcG9uZW50
cyBzZXRNb250aDooaSArIDEpXTsKICAgICAgICAgTlNEYXRlICpkYXRlID0gW2dyZWdvcmlhbiBk
YXRlRnJvbUNvbXBvbmVudHM6Y29tcG9uZW50cy5nZXQoKV07CiAgICAgICAgIE5TU3RyaW5nICpm
b3JtYXR0ZWREYXRlID0gW2RhdGVGb3JtYXR0ZXIgc3RyaW5nRnJvbURhdGU6ZGF0ZV07Ci0gICAg
ICAgIG1heGltdW1XaWR0aCA9IG1heChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0
KFN0cmluZyhmb3JtYXR0ZWREYXRlKSkpOworICAgICAgICBtYXhpbXVtV2lkdGggPSBzdGQ6Om1h
eChtYXhpbXVtV2lkdGgsIG1lYXN1cmVyLm1lYXN1cmVUZXh0KFN0cmluZyhmb3JtYXR0ZWREYXRl
KSkpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhpbXVtV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE3ODRkYmJiODM3Zjdi
N2U0MTdiMjY5YjZiNzBiYzkyNzIzNGQ1MWQuLjY5NTBhMWUwZTUzMjAxODEwN2Q1ZmRmOGE1YTdi
YmM1MTcwNTQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMDg5LDcgKzEwODksNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29uZmlndXJhdGlvbihjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
cwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNDYW52YXMoKSAmJiBjYW52YXNDb21wb3NpdGlu
Z1N0cmF0ZWd5KHJlbmRlcmVyKCkpID09IENhbnZhc0FzTGF5ZXJDb250ZW50cykgewogICAgICAg
ICBjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQg
PSBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoY29udGV4dC0+cGxhdGZvcm1MYXllcigpLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6Q2FudmFzKTsKKyAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoY29udGV4dC0+bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6Q2FudmFzKTsKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWUzMTdiMTUyMTA4NDdlN2VhZWY4OTc0
YTAyNzg3ZmIxMTBkOTIzMi4uMTU5ZTUwNTY3NzA0MzMwMWZkMTk4NTBjMzQ5NzQ2Zjc1OTgxMmU0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCi0gICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC0+cGxhdGZvcm1MYXllcigpOyB9
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUg
cmVtb3ZlZC4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4
IDlkNzY3ZWMyMTY1M2U3MGVlNDk4YjRlODkzZWYzZDc3OGEzMDA0ZGEuLjZjOTA2MWI1ZTJlZmU1
YjJmY2RjMGY4NTAxOGZjYzFiOTY0N2VlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKQEAgLTc1LDggKzc1LDggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjoKIHsKICAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIG1fY29udGV4dC0+cHJlcGFy
ZUZvckRpc3BsYXkoKTsKLSAgICBJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQt
PmRpc3BsYXlCdWZmZXIoKTsKICAgICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBJT1N1
cmZhY2UqIGRpc3BsYXlCdWZmZXIgPSBtX2NvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKICAgICBp
ZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBtX2NvbnRleHQtPm1hcmtEaXNwbGF5QnVmZmVy
SW5Vc2UoKTsKICAgICAgICAgc2VuZFJpZ2h0ID0gZGlzcGxheUJ1ZmZlci0+Y3JlYXRlU2VuZFJp
Z2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAppbmRleCAyMjRmYTE4YzgxNTky
NjJmZWYzZGU4ZWU1MDdhNWI3ZDdkNzlkYjk4Li45ZGY4M2Y0NjA3Y2M5OGMwZDhmYjdlZGY2N2Vk
NmY3Yjg5NzgxYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKQEAgLTY1LDYg
KzY1LDEzIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAorI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKK1BsYXRmb3JtTGF5ZXIqIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250ZXh0LT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCktPnBsYXRmb3JtTGF5ZXIo
KTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCA3ZDllODY3Zjk4ZWI5NTMxN2Y5ZjRhM2JlOTk2YWQ0NTFkMDEwOTlmLi44M2UwZGJkOWYw
ODE5OWRlNDJjYzFkOWIzYTI3MGU5MjZkOTVmYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAor
ICAgIHZvaWQgc2V0Q29udGVudHMoV1RGOjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7
CiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhIW1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgICAgIHJldHVybiBtX2NvbnRlbnRzQnVmZmVySGFu
ZGxlIHx8ICEhbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKICAgICB9CiAKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0
YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CkBAIC0xMzUsNiArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBC
dWZmZXIgbV9iYWNrQnVmZmVyOwogICAgIEJ1ZmZlciBtX3NlY29uZGFyeUJhY2tCdWZmZXI7CiAg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fYnVmZmVySGFuZGxl
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCBtX2J1ZmZlckhhbmRs
ZSBzaG91bGQgYmUgdXNlZCB0byByZWYgdGhlIGJ1ZmZlciBvbmNlIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlCisgICAgLy8gY2FuIGJlIGVuY29kZWQgbXVsdGlwbGUgdGltZXMuIGh0dHA6Ly93ZWJr
aXQub3JnL2IvMjM0MTY5CisgICAgc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBtX2NvbnRl
bnRzQnVmZmVySGFuZGxlOwogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9k
aXNwbGF5TGlzdEJ1ZmZlckhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCmluZGV4IDQ2NmI2NmQ3ODM2YTNkMTdlMDVkNGU4ZjIxZGMzYjBhNWRhM2ZmY2QuLjZkYjZl
YWI3NTk5YTkxNTBhZTM0ZDkxNDQ0YzRjZGI0ZmE3N2RiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW0KQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiAgICAgbV9mcm9udEJ1ZmZlci5kaXNjYXJkKCk7CiAg
ICAgbV9iYWNrQnVmZmVyLmRpc2NhcmQoKTsKICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuZGlz
Y2FyZCgpOworICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CkBAIC0xMTIsOSArMTEzLDEzIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBt
X3NjYWxlOwogICAgIGVuY29kZXIgPDwgbV9pc09wYXF1ZTsKICAgICBlbmNvZGVyIDw8IG1faW5j
bHVkZURpc3BsYXlMaXN0OwotCisgICAgLy8gRklYTUU6IEZvciBzaW1wbGljaXR5IHRoaXMgc2hv
dWxkIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2YgZGlzcGxheSgpIG9uY2UgdGhlIGJ1ZmZlciBoYW5k
bGVzIGNhbiBiZSBjcmVhdGVkIG9uY2UKKyAgICAvLyBhbmQgc3RvcmVkIGluIG1fYnVmZmVySGFu
ZGxlLiBodHRwOi8vd2Via2l0Lm9yZy9iLzIzNDE2OQogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXIpIHsKKyAgICBpZiAobV9jb250ZW50c0J1ZmZlckhhbmRsZSkgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CisgICAgICAgIGhhbmRsZSA9IG1fY29udGVu
dHNCdWZmZXJIYW5kbGU7CisgICAgfSBlbHNlIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
KSB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgVHlwZTo6SU9TdXJm
YWNlOgogICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CkBAIC0yMjAsNiArMjI1LDcgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0
OwogICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOwogCiAgICAgaWYg
KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKQEAgLTI1Nyw2ICsyNjMsMTMgQEAgYm9vbCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCiAgICAgcmV0
dXJuIG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6Tm87CiB9CiAK
K3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRS
aWdodCYmIGNvbnRlbnRzKQoreworICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBXVEZNb3Zl
KGNvbnRlbnRzKTsKKyAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7CisgICAg
bV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZlckZsdXNoZXJzLnNpemUo
KSk7CkBAIC0yNjcsNiArMjgwLDEyIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRp
c3BsYXkoKQogICAgIGlmIChSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0ID0gbV9sYXll
ci0+Y29udGV4dCgpKQogICAgICAgICBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBjb250ZXh0
LT5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoKnRoaXMpOwogCisgICAgaWYgKG1fbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpIHsKKyAg
ICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1fbGF5
ZXIpOworICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERp
c3BsYXkobV9sYXllcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIE1h
a2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRpbGUgZWFybHksIHNvIHRoYXQg
d2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21lcyBiYWNrIGVtcHR5LgogICAg
IHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGJkOGZiOWMzZTE5NmZkMWE3Zjk0NDMy
NGEwYjczYWFlYjM4ZTg5MWIuLmNhMTEzNTZlMTUxMWE5MmM5Zjk3OTdjZmFjOTc3ZWE3NmExNDc1
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEwMzUsOSArMTAz
NSw2IEBAIFN0cmluZyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBj
b25zdAogICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8
IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4
dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAi
IDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzk0MDNhMWJhZjYzYmMz
NGZmM2E3ZGZlNmZjNzM2ZGRhODVlY2M5Yy4uNDM1MGY5Y2FiNGNjYmNkM2JjZDJkNjVmZDFjZTA5
NmJlOTc5OTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI5Niw2ICsyOTYs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVl
SG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQog
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVNb2RlbExheWVyOgogI2VuZGlmCisg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoK
ICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVy
KHByb3BlcnRpZXMubGF5ZXJJRCk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0zMTIsNyArMzEzLDYgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJl
bW90ZUwKICNlbmRpZgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjoKICAg
ICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpCiAgICAgICAgICAgICByZXR1cm4gUmVt
b3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIocHJvcGVydGllcy5sYXllcklE
KTsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoW0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXll
cldpdGhDb250ZXh0SUQ6cHJvcGVydGllcy5ob3N0aW5nQ29udGV4dElEXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVy
VHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggMzZkNTVlM2Y0ZGNjZmEwM2ZkMzZl
MWVjZDBkYzA2ODBlNjAxMTljMy4uMGIxYmQwNGUwYWI0MWE1NTVlMTQyMTIyMjdiM2FjZjBmYjhl
ZTdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNTUs
NiArNTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlVGlsZWRCYWNraW5nTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVBhZ2VUaWxlZEJhY2tpbmdMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3
KGFkb3B0TlMoW1tXS0NvbXBvc2l0aW5nVmlldyBhbGxvY10gaW5pdF0pKTsKIAogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CkBAIC03NCw3
ICs3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250
ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICghbV9pc0RlYnVnTGF5ZXJUcmVlSG9zdCkg
ewogICAgICAgICAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW1dLVUlSZW1vdGVWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8KICAgICAgICAgICAgICAgICBwaWQ6bV9kcmF3aW5n
QXJlYS0+cGFnZSgpLnByb2Nlc3NJZGVudGlmaWVyKCkgY29udGV4dElEOnByb3BlcnRpZXMuaG9z
dGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYTQ1ZDRkMzY5MzE3ODQ0NzA0ZDQ3MTgwZmM0ZGFkNmYxYjk2NjIz
Ni4uZWNlOTFmZWJiYTYxZjUyNDc0YmEyY2Q1MmQ0ZjNlZTVmNjFkNDJlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDQ4LDYgKzUw
NDgsNyBAQAogCQk3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4
NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVR
dWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MzAwRTcyNzE4MjE3QTAw
MDgyMDg2IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzEyMzEyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzMDM5LDcgKzEzMDQwLDYgQEAKIAkJCQk1MzIxNTk1NjFEQkFFNzJEMDA1NEFBM0MgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTkwMjAzMUJFOUEw
MkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENDU0RDcx
QkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3
b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0NTI2RUQyNzFFMTY0NzAw
MDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMTI3LDYgKzEzMTI3LDcgQEAKIAkJCQkyRDI3OUUxOTI2OTU1NzY4MDA0QjNFRUIgLyogUHJv
dG90eXBlVG9vbHNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgxMjc1RTk3QjYwMDJE
QzIyRCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3RDI3NUU5
N0I2MDAyREMyMkQgLyogUHVzaENsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxN0I1Rjk1Mjc1RUJBNjMwMDJEQzIyRCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBDMjI3RTI0NTExMzBBMDBFRDYxNEQgLyogUXVpY2tM
b29rVGh1bWJuYWlsaW5nU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUU1NzI1MjQw
OUYxNDIwMDIwMDVENiAvKiBRdWlja0xvb2tUaHVtYm5haWxMb2FkZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMTM1MTMsNiArMTM1MTQsNyBAQAogCQkJCTUxN0I1RjJFMjc1NzM4MkEwMDJEQzIyRCAv
KiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY3MzI3NUU5NjA5MDAyREMyMkQgLyogV2ViUHVzaERh
ZW1vbk1haW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIyRCAv
KiBXZWJQdXNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYxQ0NDQTYyMzE0ODVBQTAw
QjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg2MEU3MTIzMEY2N0ZDMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVz
b3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM1NDcsNyArMTM1NDksNiBAQAogCQkJ
CTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxN0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2QkMwM0MxRkEyNjZEQTAw
MkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExQTlF
Q0MyMTQwMzVGODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM1NkYyREUyMTUyQjcxMDAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUuaCBp
biBIZWFkZXJzICovLApAQCAtMTUxMTYsOSArMTUxMTcsOSBAQAogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTUxN0I1RjlBMjc1RjNBODYwMDJEQzIy
RCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY2ODI3NUE5
QTc4MDAyREMyMkQgLyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxN0I1RjlDMjc1RjNDMzcwMDJEQzIyRCAvKiBEYWVtb25FbmNvZGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJEQzIyRCAvKiBEYWVtb25V
dGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY2ODI3NUE5QTc4MDAyREMyMkQg
LyogV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGNjUy
NzVBOEQ3RjAwMkRDMjJEIC8qIFdlYlB1c2hUb29sTWFpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTUyMTQs
NyArMTUyMTUsNiBAQAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVu
VG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMxQTE1
MkQ3MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdCNUY5OTI3NUVDNjAxMDAyREMy
MkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI3NDlGNjQ1
MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTlCRjVFQzY0MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8qIExhdW5jaFNl
cnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU3NCw2ICsxNTU3
NCw3IEBACiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY3QTI3NUU5N0E0MDAy
REMyMkQgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjc5Mjc1
RTk3QTEwMDJEQzIyRCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTUxN0I1Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9h
ZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMx
ODUwMEYzMjgxRiAvKiBXZWJSVENNb25pdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyQyAvKiBXZWJSVENSZXNvbHZlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KaW5kZXggMTQyNGVmOGEwZjNiZDlm
NjU2NjlmZjdlODcxNjI3MmY5YTU1YWViNS4uMWJlY2RiMTYwNjJjYjRkZWMyMmE4ODJmMjM1MGFh
ZGIzMTgyYjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Q29jb2EubW0KQEAgLTMyLDI0ICszMiw2OSBAQAogI2ltcG9ydCAiUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2lt
cG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRDRy5oPgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJHTExheWVyLmg+
Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybUNBTGF5ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSB7CiAK
LWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5hbCA6IHB1YmxpYyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5
RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX3dlYkdMTGF5ZXI7IH0KLSAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlCdWZmZXIuZ2V0KCk7IH0KKyAgICBzdGF0aWMgUmVm
PERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBmbG9h
dCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOworICAg
IH0KKworICAgIC8vIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSBvdmVycmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9w
YXF1ZShtX2lzT3BhcXVlKTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRl
bnRzU2NhbGUpOworICAgIH0KKworICAgIHZvaWQgZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXImIGxheWVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikK
KyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG1fZGlzcGxheUJ1ZmZlcik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzKG51bGxwdHIpOworICAgIH0KKwor
ICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpC
b3R0b21VcDsKKyAgICB9CisKKyAgICB2b2lkIHNldERpc3BsYXlCdWZmZXIoY29uc3QgTWFjaFNl
bmRSaWdodCYgZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxheUJ1ZmZl
cikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyID0geyB9OworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Rpc3BsYXlCdWZmZXIgJiYgZGlzcGxheUJ1
ZmZlci5zZW5kUmlnaHQoKSA9PSBtX2Rpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IGRpc3BsYXlCdWZmZXIuY29w
eVNlbmRSaWdodCgpOworICAgIH0KIAorcHJpdmF0ZToKKyAgICBEaXNwbGF5QnVmZmVyRGlzcGxh
eURlbGVnYXRlKGJvb2wgaXNPcGFxdWUsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCisgICAgICAgIDog
bV9jb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUpCisgICAgICAgICwgbV9pc09wYXF1ZShpc09w
YXF1ZSkKKyAgICB7CisgICAgfQorCisgICAgTWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7
CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAgIGNvbnN0IGJvb2wgbV9pc09w
YXF1ZTsKK307CisKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYSBmaW5h
bCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHsKK3B1YmxpYzoKICAgICAv
LyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRlcy4KLSAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93ZWJHTExheWVyLmdl
dCgpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1f
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KQEAgLTU4LDMwICsxMDMsMjUgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBm
aW5hbDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Q29jb2EoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgUmV0YWlu
UHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0
ZXMsIHJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlKERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSghYXR0cmlidXRlcy5h
bHBoYSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKKyAgICB7CisgICAgfQorCisgICAg
TWFjaFNlbmRSaWdodCBtX2Rpc3BsYXlCdWZmZXI7CisgICAgUmVmPERpc3BsYXlCdWZmZXJEaXNw
bGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKICAgICBmcmllbmQg
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTsKIH07CiAKLVJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKEdQ
VVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2Vu
ZCkKLXsKLSAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX3dlYkdMTGF5ZXIgPSBhZG9wdE5TKFtbV2ViR0xM
YXllciBhbGxvY10gaW5pdFdpdGhEZXZpY2VQaXhlbFJhdGlvOmF0dHJzLmRldmljZVBpeGVsUmF0
aW8gY29udGVudHNPcGFxdWU6IWF0dHJzLmFscGhhXSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIFtt
X3dlYkdMTGF5ZXIgc2V0TmFtZTpAIldlYkdMIExheWVyIl07Ci0jZW5kaWYKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKICAgICBpZiAoIW1fZGlz
cGxheUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIobV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNl
KCkpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVtb3RlIE1lZGlhU2FtcGxlLgorICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChtX2Rp
c3BsYXlCdWZmZXIuY29weVNlbmRSaWdodCgpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4
ZWxCdWZmZXIoc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gV2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CkBAIC0x
MDAsMjYgKzE0MCwxNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYTo6
cHJlcGFyZUZvckRpc3BsYXkoKQogICAgIH0KICAgICBpZiAoIWRpc3BsYXlCdWZmZXJTZW5kUmln
aHQpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJp
Z2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIGlmICgh
ZGlzcGxheUJ1ZmZlcikgewotICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtX2Rpc3BsYXlCdWZmZXIgPSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIp
OwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0
Q29udGVudHM6bV9kaXNwbGF5QnVmZmVyLT5hc0xheWVyQ29udGVudHMoKV07Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworICAgIG1fZGlzcGxheUJ1ZmZlciA9IFdURk1vdmUoZGlzcGxh
eUJ1ZmZlclNlbmRSaWdodCk7CiAgICAgbWFya0xheWVyQ29tcG9zaXRlZCgpOworICAgIG1fbGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+c2V0RGlzcGxheUJ1ZmZlcihtX2Rpc3BsYXlCdWZm
ZXIuY29weVNlbmRSaWdodCgpKTsKIH0KIAogfQogCiBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKIHsKLSAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMs
IHJlbmRlcmluZ0JhY2tlbmQpKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRleHQ7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVy
aW5nQmFja2VuZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlXQy5jcHAKaW5kZXggZTRkYzgxOThlMThlZjNkZTYzNmE0NmYyOGFkOWYzZGIz
ZGZkN2E2MC4uODE0ODUwNmM4Mzg4MWMyYWM2ZjgzMjI1OWZhNGE3NWRiYjU5N2I1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcApAQCAtMzMs
MzMgKzMzLDUzIEBACiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldDUGxhdGZvcm1MYXllckdDR0wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBsYXRm
b3JtTGF5ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF0Zm9ybUxh
eWVyRGlzcGxheURlbGVnYXRlKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKKyAgICB9CisKKyAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckNvbnRhaW5lciYmIHBs
YXRmb3JtTGF5ZXIpCisgICAgICAgIDogbV9wbGF0Zm9ybUxheWVyKFdURk1vdmUocGxhdGZvcm1M
YXllcikpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXJDb250YWluZXIgbV9wbGF0
Zm9ybUxheWVyOworfTsKKwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDIGZp
bmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgewogcHVibGljOgogICAg
IC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb3ZlcnJpZGVzLgogICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOyB9CisgICAgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0dXJuIG1fbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSgpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogcHJpdmF0ZToKLSAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
CisgICAgICAgICwgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJE
aXNwbGF5RGVsZWdhdGU6OmNyZWF0ZShtYWtlVW5pcXVlPFdDUGxhdGZvcm1MYXllckdDR0w+KG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSkpCisgICAgeworICAgIH0KIAotICAgIFBsYXRm
b3JtTGF5ZXJDb250YWluZXIgbV9wbGF0Zm9ybUxheWVyOworICAgIFJlZjxQbGF0Zm9ybUxheWVy
RGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9OwogCi1SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5V0M6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQyhHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQp
Ci0gICAgLCBtX3BsYXRmb3JtTGF5ZXIobWFrZVVuaXF1ZTxXQ1BsYXRmb3JtTGF5ZXJHQ0dMPiht
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCi17Ci19Ci0KIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eVdDOjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAKaW5kZXggNWQwZWE4YmRiOTFhYjE0MTg3NTAwNDFiNzllZDVmZWFlNzcyM2JhMC4uNThi
NmFlN2ZjOWJhMGM3YWY3Yjg2ZjIwNDhkYWYxMzczNDUyNjgyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTE3MywxMSArMTczLDExIEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJl
bW90ZUxheWVyVHJlZUNvbnRleHQmIGNvCiAgICAgQVNTRVJUKCFtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlIHx8IG93bmVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oJmNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICAKLSAgICBpZiAobV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSAmJiAoIW93bmVyKCkgfHwgIW93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckRyYXdzQ29udGVudCgpKSkgeworICAgIGJvb2wgdXNlc0JhY2tpbmdTdG9yZSA9IG93bmVyKCkg
JiYgKG93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIHx8IG93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkodGhpcykpOworICAgIGlmIChtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlICYmICF1c2VzQmFja2luZ1N0b3JlKSB7CiAgICAgICAgIG1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOwogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVBy
b3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVD
aGFuZ2VkKTsKICAgICB9Ci0KICAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKTsKIApA
QCAtNjgzLDggKzY4MywyNiBAQCBDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb250
ZW50cygpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhD
RlR5cGVSZWYgdmFsdWUpCiB7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZSA9IG51bGxwdHI7Cit9CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZh
Y2UmIHN1cmZhY2UpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKKyAgICBl
bnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zZXRD
b250ZW50cyhzdXJmYWNlLmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KIAordm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3VyZmFj
ZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQobV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGVuc3Vy
ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPnNldENvbnRl
bnRzKHN1cmZhY2VIYW5kbGUuY29weVNlbmRSaWdodCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFs
dWUpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdCA9IHZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ3YzMwNTU3ZDU5OGNh
MjE1NGRiNDcwNjA0MjY1MDRiYWUwZmE2OGMuLjcxZDQwY2UzMTNhMDZiMTllNDg5OGI2NWI4YThl
YWNhYTY2M2M4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmgKQEAgLTEyNyw3ICsxMjcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7Ci0KKyNpZiBIQVZF
KElPU1VSRkFDRSkKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFj
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0Jikgb3ZlcnJpZGU7CisjZW5kaWYKICAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TWluaWZpY2F0aW9u
RmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgK
aW5kZXggZTYyNDdkYWE2ZGIwMGUyNTA4MjRmNjhjOTE4NTY1NzEwNjAzNDYzNC4uN2FiOTkwYmMy
NWYxODJlOTI5MjFjMjYzNjE4NTBhYmYyYTlhNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaApAQCAtNjAsNyArNjAsNiBAQCBw
cml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5
ZXJIb3N0aW5nQ29udGV4dDsKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9wbGF0Zm9y
bUxheWVyOwotICAgIGJvb2wgbV9wcm92aWRlc0NvbnRlbnRzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5tbQppbmRleCAyN2IwZmMwMDUxODVkYWQ0NWI2Y2EzYjc4ZDgzMDIxMzA4ZTQ4
ZjRlLi4xMTJmMjc4YjdlM2Q5ZjBjYThlNjA2YjZlMjFiMDQ5MjQ5N2YxNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAg
LTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVDQUxheWVyRXh0cmFzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25T
b2Z0TGluay5oPgpAQCAtODIsOCArODMsNiBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206
OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbAogICAg
IG1fcGxhdGZvcm1MYXllciA9IGN1c3RvbUxheWVyOwogICAgIFtjdXN0b21MYXllciB3ZWJfZGlz
YWJsZUFsbEFjdGlvbnNdOwogCi0gICAgbV9wcm92aWRlc0NvbnRlbnRzID0gbGF5ZXJUeXBlID09
IExheWVyVHlwZUNvbnRlbnRzUHJvdmlkZWRMYXllcjsKLQogICAgIHByb3BlcnRpZXMoKS5wb3Np
dGlvbiA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5wb3NpdGlvbi54LCBjdXN0b21MYXllci5w
b3NpdGlvbi55LCBjdXN0b21MYXllci56UG9zaXRpb24pOwogICAgIHByb3BlcnRpZXMoKS5hbmNo
b3JQb2ludCA9IEZsb2F0UG9pbnQzRChjdXN0b21MYXllci5hbmNob3JQb2ludC54LCBjdXN0b21M
YXllci5hbmNob3JQb2ludC55LCBjdXN0b21MYXllci5hbmNob3JQb2ludFopOwogICAgIHByb3Bl
cnRpZXMoKS5ib3VuZHMgPSBjdXN0b21MYXllci5ib3VuZHM7CkBAIC0xMjcsMTAgKzEyNiw2IEBA
IFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAgICAgICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0
TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb3B5Q29u
dGVudHMgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGxheWVyVHlwZSgpID09IExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcikgewotICAgICAgICBjbG9uZWRMYXllciA9IGFkb3B0TlMoW1tD
QUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgY29weWlu
ZyBXZWJHTCBjb250ZW50cyBicmVha3MgdGhlIG9yaWdpbmFsIGxheWVyLgogICAgICAgICBjb3B5
Q29udGVudHMgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE1NSwxOCArMTUwLDEyIEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMp
CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXROZWVkc0Rpc3BsYXlJblJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMp
Ci0gICAgICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5SW5SZWN0OnJlY3RdOwot
ICAgIGVsc2UKLSAgICAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QocmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QocmVjdCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpzZXRO
ZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX3Byb3ZpZGVzQ29udGVudHMpCi0gICAgICAgIFtt
X3BsYXRmb3JtTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NM
YXllcldDLmNwcAppbmRleCAwZjdmYzFiNTkwZWZhMDNlYjRmNjA2YWNjYzA0YzYxZDBkMGQwNWY0
Li5iZDlhY2JlOTMzM2YxOGE3Nzk3M2JlZTlhZDAxMGNmMWYwNjU3OTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xheWVyV0MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5j
cHAKQEAgLTI5MCw2ICsyOTAsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICB1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyV0M6OnNldENvbnRl
bnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYgZGlzcGxheURlbGVnYXRlLCBDb250ZW50c0xheWVyUHVycG9zZSBw
dXJwb3NlKQoreworICAgIGF1dG8gcGxhdGZvcm1MYXllciA9IGRpc3BsYXlEZWxlZ2F0ZSA/IGRp
c3BsYXlEZWxlZ2F0ZS0+cGxhdGZvcm1MYXllcigpIDogbnVsbHB0cjsKKyAgICBzZXRDb250ZW50
c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBwdXJwb3NlKTsKK30KKwogYm9vbCBHcmFw
aGljc0xheWVyV0M6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
bGF0Zm9ybUxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9HcmFwaGljc0xheWVyV0MuaAppbmRleCA5NjI3NDFmZGQwMTVhMjM4ZDQ4ZDQ1NzA0YzU2
NmY2YTA5ODVlYmU1Li4zNmE2ODhjNjAyYjY2OTIxMWQ0NmMxNjhiMjgxZDA3Y2YzY2I5MTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGljc0xh
eWVyV0MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9HcmFwaGlj
c0xheWVyV0MuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJX
Q1VwYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJh
Y2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9T
b2xpZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
b250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBv
c2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVu
dHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3Np
dGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDlkNTdmYTM1MGMxOGMxZmQ1MmU1OWMwMGNj
MzdjNWU5MjQzZWM1NGIuLjQzNmI3NjM1NDliYjg4NDIzOTBkNTIyMzkzMjk1MjFlMzZhNzMxNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0xMi0wOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9z
aXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgQWRkIGEgZHVt
bXkgb3ZlcnJpZGUgb2YgdGhlIG5ldyBtZW1iZXIgZnVuY3Rpb24gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZS4KKwogMjAyMS0xMi0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIElPU3VyZmFjZSBtZW1vcnkgYXR0cmlidXRpb24gaXMgaGFyZCB0
byB1c2UgaW4gY29uc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMQ29j
b2EubW0KaW5kZXggYTkxNjI3OThlNmYwN2Y0NzhiYzEyYmJkODNmYzA0NWI0MzIzNzM3NC4uZDBm
MGE2MjMxZGJjMTJlNjkxOTAwMTNhODljZjczZDY4NTkxZWE1NiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNDEsNiArNDEsMjEgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCitjbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRl
eHRHTENvY29hIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2EgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCisg
ICAgeworICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IFRlc3RlZEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgICAgICByZXR1cm4gY29u
dGV4dDsKKyAgICB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KK3ByaXZhdGU6CisgICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAg
ICAgOiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hKFdURk1vdmUoYXR0cmlidXRlcyks
IHsgfSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUgLy8gTk9MSU5UCkBAIC01OSw3ICs3NCw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBj
b25zdCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemUgPSAzOwogCi1zdGF0aWMgUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29u
dGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQorc3RhdGljIFJlZlB0cjxUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6
SW50U2l6ZSBjb250ZXh0U2l6ZSkKIHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKQEAg
LTY4LDE0ICs4MywxNCBAQCBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
Q29jb2E+IGNyZWF0ZURlZmF1bHRUZXN0Q29udGV4dChXZWJDb3JlOgogICAgIGF0dHJpYnV0ZXMu
c3RlbmNpbCA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOwogICAgIGF0dHJp
YnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7Ci0gICAgYXV0byBjb250ZXh0ID0g
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRl
cyksIHsgfSk7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YTo6Y3JlYXRlKFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29udGV4dC0+cmVzaGFwZShjb250ZXh0U2l6ZS53aWR0
aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLXN0
YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKK3N0
YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVudHMoVGVz
dGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYgY29udGV4dCwgaW50IGl0ZXJhdGlvbikKIHsKICAg
ICBjb250ZXh0Lm1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIFdlYkNvcmU6OkNvbG9yIGV4cGVj
dGVkIHsgaXRlcmF0aW9uICUgMiA/IFdlYkNvcmU6OkNvbG9yOjpncmVlbiA6IFdlYkNvcmU6OkNv
bG9yOjp5ZWxsb3cgfTsKQEAgLTEyMCwxNSArMTM1LDE1IEBAIFRFU1RfRihHcmFwaGljc0NvbnRl
eHRHTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVmZXJlbmNl
TWV0CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7
CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CiAgICAgRVhQRUNUX0VRKGF0dHJpYnV0
ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVy
ZW5jZTo6RGVmYXVsdCk7Ci0gICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsgfSk7CisgICAgYXV0byBkZWZhdWx0Q29udGV4dCA9IFRl
c3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0pOwogICAgIEFTU0VSVF9ORShkZWZhdWx0Q29u
dGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKLSAgICBhdXRv
IGxvd1Bvd2VyQ29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1dGVzIH0sIHsg
fSk7CisgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmli
dXRlcyB9KTsKICAgICBBU1NFUlRfTkUobG93UG93ZXJDb250ZXh0LCBudWxscHRyKTsKIAogICAg
IGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQ
b3dlclByZWZlcmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKLSAgICBhdXRvIGhpZ2hQZXJmb3JtYW5j
ZUNvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9LCB7IH0pOworICAg
IGF1dG8gaGlnaFBlcmZvcm1hbmNlQ29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E6OmNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgeyBhdHRyaWJ1
dGVzIH0pOwogICAgIEFTU0VSVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsK
IAogICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJp
bmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446976</attachid>
            <date>2021-12-13 01:38:45 -0800</date>
            <delta_ts>2021-12-13 02:38:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231009-20211213113842.patch</filename>
            <type>text/plain</type>
            <size>119669</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE3ZjE4OTA0OGNkMDE4
NjI1OTYyNWZmYmI3ZGJhZmUzNDNkN2U0NS4uOGUyM2YyMTYzNDM2YjkxNWM5MDRhYjQyMjFlZTBk
ZmVmOGUzMDFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAyMS0xMi0wOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIFdlYkdM
IHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAwOQorICAgICAgICA8cmRhcjovLzgzNDM3
MDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTZWNv
bmQgdHJ5LCBwcmV2aW91cyB3YXMgcmV2ZXJ0ZWQgZHVlIHRvIGEgdGVzdCBmYWlsdXJlLgorICAg
ICAgICBTZWUgV2ViS2l0IHNpZGUgZm9yIHRoZSBkZXNjcmlwdGlvbi4KKworICAgICAgICBJbXBs
ZW1lbnQgQ29jb2EgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wuCisKKyAgICAgICAgTWFr
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0IGRyYXcgdmlhIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZQorICAgICAgICBpbnN0ZWFkIG9mIFBsYXRmb3JtTGF5ZXIuIE9uIENvY29h
IHRoZSBHcmFwaGljc0xheWVyIGNvbnRlbnRzIGNhbiBiZQorICAgICAgICB0aHJlZSBkaWZmZXJl
bnQgb2JqZWN0czogQ0dJbWFnZSwgQ0FMYXllciBvciBjb250ZW50IGluICJiYWNraW5nIHN0b3Jl
IgorICAgICAgICBvZiB0aGUgdW5kZXJseWluZyBjb21wb3NpdG9yIGxheWVyLgorICAgICAgICBG
b3IgVUktc2lkZSBjb21wb3NpdGluZyBmb3IgV2ViR0wsIHdlIHdhbnQgaXQgdG8gYmUgdGhlIGxh
dHRlci4KKyAgICAgICAgQXMgc3VjaCwgdGhlIG9iamVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
IGRyYXdzIHRvIGNhbm5vdCBiZSBhIHBsYXRmb3JtCisgICAgICAgIGxheWVyIChDQUxheWVyKS4g
U28gY29uY2VwdHVhbGx5LCBXZWJHTCBkb2VzIG5vdCBkcmF3IGludG8gYSBwbGF0Zm9ybQorICAg
ICAgICBsYXllciwgaXQgZHJhd3MgaW50byBiYWNraW5nIHN0b3JlIHRoYXQgY2FuIGJlIHB1dCB0
byAocG9zc2libHkgbWFueSkKKyAgICAgICAgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIEFk
ZCBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgaW50ZXJmYWNlLCB3aGljaCBj
YW4gYmUKKyAgICAgICAgdXNlZCB0byBydW4gY2xpZW50IHNwZWNpZmljIGNvZGUgZHVyaW5nIGNv
bXBvc2l0b3IgbGF5ZXIgY29udGVudHMgdXBkYXRlCisgICAgICAgIHBoYXNlIChpLmUuIGxheWVy
IGRpc3BsYXkgcGhhc2UpLgorCisgICAgICAgIFdlYkdMIHdpbGwgdXNlIG5ldyBvdmVybG9hZHMg
b2YgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyB0byBzZXQgdGhlCisgICAgICAgIGNvbnRl
bnRzIGR1cmluZyBkZWxlZ2F0ZWQgZGlzcGxheS4gVGhlIGNvbnRlbnRzIGlzIElPU3VyZmFjZSBm
b3IKKyAgICAgICAgaW4tcHJvY2VzcyBtb2RlIGFuZCBNYWNoU2VuZFJpZ2h0IG9mIElPU3VyZmFj
ZSBpbiBHUFVQIG1vZGUuCisgICAgICAgIFRoZSBJT1N1cmZhY2UgaXMgc2V0IGFzIHRoZSBjb250
ZW50cyBvZiB0aGUgV2ViU2ltcGxlTGF5ZXIgaW5zdGVhZAorICAgICAgICBvZiB0aGUgcnVubmlu
ZyB0aGUgZHJhdyB2aWEgZGlzcGxheSgpLgorICAgICAgICBUaGUgTWFjaFNlbmRSaWdodCBpcyBz
ZXQgYXMgdGhlIGNvbnRlbnRzIG9mIFBsYXRmb3JtQ0FMYXllclJlbW90ZQorICAgICAgICBhbmQg
YmUgc2VyaWFsaXplZCB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBGb3Igbm9uLUNvY29h
IHBvcnRzLCBhZGQgYSBzaW1wbGUgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
CisgICAgICAgIHRoYXQgcmV0dXJucyB0aGUgcGxhdGZvcm0gbGF5ZXIgdG8gdGhlIEdyYXBoaWNz
TGF5ZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYSBy
ZWZhY3Rvci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQ6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0
Zm9ybUxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9QbGFjZWhv
bGRlclJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpw
cmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNQbGF0Zm9ybUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJE
aXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29j
b2E6OmxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkaXNwbGF5QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXJrRGlzcGxheUJ1ZmZlckluVXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJHTExheWVyLm1tOiBSZW1vdmVkLgorICAgICAgICAoLVtXZWJHTExheWVyIGluaXRXaXRoRGV2
aWNlUGl4ZWxSYXRpbzpjb250ZW50c09wYXF1ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2Vi
R0xMYXllciBzZXRUcmFuc2Zvcm06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxh
eV0pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nl
c3NHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViU2ltcGxlTGF5ZXIgZGlzcGxheV0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpXZWJDb3JlOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKE5pY29zaWE6Oldl
YkNvcmU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUpOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpO
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJj
ZSk6IERlbGV0ZWQuCisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291
cmNlOjpoYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZTo6cGxhdGZvcm1MYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChO
aWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6Ok5p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUpOiBEZWxldGVkLgorICAgICAgICAoTmljb3NpYTo6Tmljb3Np
YUltYWdlQnVmZmVyUGlwZTo6c291cmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKE5pY29z
aWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIx
LTEyLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBs
ZW1lbnQgc3RlcCAxNyBvZiBtYWluIGZldGNoIGFsZ29yaXRobQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxN2JjZmI2
MGU1NzhjZjNkZjk2OTk5NmMyNzE3MGViNDBkMjAzYWNjLi5jMWY0MTkxN2QwYzYyOTllZmJiOTk0
ZmFjZGY3NDQzODhjNDZhODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTEyLTA5
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2Eg
V2ViR0wgc2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDA5CisgICAgICAgIDxyZGFyOi8v
ODM0MzcwNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IEltcGxlbWVudCB0aGUgY2FwYWJpbGl0eSB0byBhc3NpZ24gSU9TdXJmYWNlcworICAgICAgICB0
byBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgY29udGVudHMuCisKKyAgICAgICAgTWFrZSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EgdXNlIHRoZSBhZGRlZAorICAgICAgICBHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKKyAgICAgICAgU2Vjb25kIHRyeSwgcHJl
dmlvdXMgd2FzIHJldmVydGVkIGR1ZSB0byBhIHRlc3QgZmFpbHVyZS4KKyAgICAgICAgVGhlIHRl
c3QgZmFpbHVyZSBoYXBwZW5lZCBkdWUgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUKKyAgICAg
ICAgc2VuZGluZyB0aGUgc2FtZSBkcmF3biBiYWNraW5nIHN0b3JlIHdpdGggZGlmZmVyZW50Cisg
ICAgICAgIHByb3BlcnRpZXMgYnV0IHNhbWUgaW1hZ2UuIFRoZSBvcmlnaW5hbCBwYXRjaCB0cmll
ZAorICAgICAgICB0byB1c2UgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6Om1fYnVmZmVySGFuZGxl
IGFsc28KKyAgICAgICAgb24gdGhlIHNlbmQgc2lkZSB0byBzdG9yZSB0aGUgaGFuZGxlLiBUaGlz
IGhhbmRsZQorICAgICAgICB3YXMgZW5jb2RlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgSVBDIGVuY29kaW5nIGRlc3Ryb3lz
IHRoZQorICAgICAgICB1bmRlcmx5aW5nIG1hY2ggc2VuZCByaWdodCBldmVuIHRob3VnaCB0aGUg
ZW5jb2RpbmcKKyAgICAgICAgQVBJIHNpZ25hdHVyZSB3b3VsZCBzaWduaWZ5IHRoYXQgdGhlIEhh
bmRsZSBzdGF5cworICAgICAgICBpbnRhY3QuIFNoYXJlYWJsZUJpdG1hcCwgU2hhcmVkTWVtb3J5
IHdpbGwgYmUgZml4ZWQgaW4KKyAgICAgICAgZnV0dXJlIGNvbW1pdHMuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL0dQVVByb2Nlc3NHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVG
b3JEaXNwbGF5KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpoYXNGcm9udEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRlbnRzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICAqIFNo
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbiBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
SG9zdElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5v
ZGUpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRD
b250ZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6R3JhcGhpY3NMYXllcldDOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6
CisKIDIwMjEtMTItMTMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
YWZhYzEyOGI3ZjYxOTBkNzNlZjliZjY5NzhlM2E5ODRlZjVkYzU2NC4uZTQ3YTRiYWNiYTkzMDAz
YzllODc4MzRhMjc5ZWI5M2EwMmY5NzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDYzLDYg
KzE0NjMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTFN0YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYWZjOTZhMGI2MTIwN2E0ZGE3MzYxYzUxMzI0ZGY1Mjc2MzFl
MGM5Mi4uNzgxN2Q3ZmIwNWU3MzU3MzkyODhiY2NiZTg1ZDBlNDgyNTFjODRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTMyNyw3ICszMjcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlQ0FM
YXllckV4dHJhcy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbi5tbQotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIu
bW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5t
bQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRH
TENvY29hLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjcxMGY2MTEzMmQ4NjRkYzI5YzFlN2E0MWNk
NDRlMzM0NjBkZTZlOS4uYTA2Mjg0MTQzM2UzNGQ5YjBlZThkM2ZmMGQ2MjM3NDg0ZjFhMTJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIwMzEsNiArMjAzMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllclVwZGF0ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWFmYjA4NTQ4MjE3MzFiMmQ3YzhhZTU3MmM0NDgxNTU5
OGY0MWNjYS4uZDZiMzkxMmJlZDA2NThmYjNhZjcxZTdmODJjY2E5MDJlYTliZjQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zOTIsNyArMzkyLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KLXBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3Jk
ZXJDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlmODVlNDk4NmM1M2ExY2M4ZDYz
YjMzOTRkM2Y3Mjk1ODMyYWYzODcuLjMzYWMzNWRmN2QzZDU4M2M4NmQyNzU2NTRjYWRjMWNhZjc1
YjA3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjA0NzIsOCArMjA0NzIsNiBAQCBfT0JKQ19D
TEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX01FVEFDTEFTU18kX1dl
YkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIF9PQkpDX0NMQVNTXyRfV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cKIF9PQkpDX01FVEFDTEFTU18kX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Ci1fT0JK
Q19DTEFTU18kX1dlYkdMTGF5ZXIKLV9PQkpDX01FVEFDTEFTU18kX1dlYkdMTGF5ZXIKIF9PQkpD
X0NMQVNTXyRfV2ViTGF5ZXIKIF9PQkpDX01FVEFDTEFTU18kX1dlYkxheWVyCiBfT0JKQ19DTEFT
U18kX1dlYlNjcmlwdE9iamVjdApAQCAtMzA2NDMsOCArMzA2NDEsNiBAQCBfT0JKQ19JVkFSXyRf
V2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX2V4aXRXYXJuaW5nCiBfT0JKQ19JVkFS
XyRfV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuX3RhcmdldAogX09CSkNfSVZBUl8k
X1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Ll9hY3Rpb24KIF9PQkpDX0lWQVJfJF9X
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Ll90ZXh0RmllbGQKLV9PQkpDX0lWQVJfJF9XZWJH
TExheWVyLm1fY29udGV4dAotX09CSkNfSVZBUl8kX1dlYkdMTGF5ZXIubV9sYXllck93bmVyCiBf
T0JKQ19JVkFSXyRfV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5pbXAKIF9PQkpDX0lWQVJfJF9XZWJT
Y3JpcHRPYmplY3RQcml2YXRlLnJvb3RPYmplY3QKIF9PQkpDX0lWQVJfJF9XZWJTY3JpcHRPYmpl
Y3RQcml2YXRlLm9yaWdpblJvb3RPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNzQ0MmQzZDkwZmZhNWMzMWY3OGIzMDAx
OWY1ODIyYjUxYjU0NGMzLi5iZDMxNDExMzBjNTQzYzZhN2ZhOGM5NmZiZjgyODhlOTA1MDI4Yjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDQ0LDcgKzE0NDQsNiBAQAogCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyog
RmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDlFQ0VCNjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUVFRDE0
NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNGMTA1MTk2OTQw
MDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0OUVFRDE0
NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTQxMTA1MTk2OTQwMDA5
OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oICovOyB9OwotCQk0OUZGQkYzRjExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTBE
QTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGRDEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBGRkE5QzFBQUY1RTZDMDA2MjgwM0IgLyogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEEwRkZBQTAxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MjM4NCw2ICsyMzgzLDcgQEAKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1ZDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZD
b2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5
RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3QjcyMEIwQzI3NDNEQkE3MDAwOEFCRUQgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjcyMEIwQTI3NDNEQkE2MDAwOEFCRUQgLyogR3JhcGhpY3NM
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3Bl
ZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAyNkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVF
RDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MzgzLDggKzkzODMsNiBAQAogCQk0OUVFRDE0QjEw
NTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVFRDE0QzEw
NTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdM
TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHTExh
eWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGQzEyOUIyNDE5MDBB
QjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybUFzc29jaWF0
ZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMEZGQTlCMUFBRjVF
NkMwMDYyODAzQiAvKiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTQwNSw2ICsxMTQwMyw3IEBA
CiAJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEy
RTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgx
NzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MjBCMEEy
NzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEy
NUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4
QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1ZVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYw
QzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ1ZVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTQxNiw2ICsxMTQxNSw3IEBACiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3
MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JC
RkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxl
Z2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEODI3MDU5
OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5H
TEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNENDJEQTI3
MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JDRDQyREMyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjg3MjIsNiArMjg3MjIsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkg
LyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggKi8sCisJCQkJN0JCRkRFQ0QyNzQyOEY1NDAwRUQwQjc3IC8q
IEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJN0I3MjBC
MEEyNzQzREJBNjAwMDhBQkVEIC8qIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oICovLAogCQkJCTFBQzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBHcmFwaGljc0xheWVyRmFj
dG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNz
TGF5ZXJVcGRhdGVyLmggKi8sCkBAIC0yOTAxMSw4ICsyOTAxMyw2IEBACiAJCQkJMkQzRUY0NDcx
OTE3OTE1QzAwMDM0MTg0IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFzLm1tICovLAogCQkJCUNENUQy
Nzc2MUU4MzE4RTAwMEQ4MEEzRCAvKiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCAqLywK
IAkJCQlDRDVEMjc3NTFFODMxOEUwMDBEODBBM0QgLyogV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uLm1tICovLAotCQkJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmgg
Ki8sCi0JCQkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8sCiAJ
CQkJMDdGNUNGRjQyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgg
Ki8sCiAJCQkJMDdGNUNGRjIyNTgyQTRGODAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLm1tICovLAogCQkJCTdCMTYxOTEwMjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSAqLywKQEAgLTMzMTAxLDYgKzMzMTAxLDcgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAorCQkJCTdCNTgyREQ4MjcxNkY1NUIwMDRCOTJEMCAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyog
QWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJE
RCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQzNCw2ICszNDQz
NSw3IEBACiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyQ0EuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjcyMEIwQzI3NDNEQkE3
MDAwOEFCRUQgLyogR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUM2OTU5MzE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBH
cmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1QUIwQUY2Q0Q1
MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc2NzAsNyAr
Mzc2NzIsNiBAQAogCQkJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZm
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUNGMTA0MkQzMkYwMDA5RDQ0
NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0OUZGQkYzRjExQzkz
RUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMUQ1QkIx
MkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjc5ZjZhMjA4ZDNjYjU4MWY5YWEyZDVjMjViNmJhZWEy
MjNmNTY3Yi4uNzJiMmNjZTc0ZGI5NzJiODRiMjA4ZGU3M2E4MDJkZTI4ZGY2Y2UzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC04Myw2ICs4NCwxMSBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OmRlcmVmKCkKICAgICBtX2NhbnZhcy5kZXJlZkNhbnZhc0Jh
c2UoKTsKIH0KIAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJH
UkE4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDM3MjAwNzkwNDZmZTAyZjU2ODQ1MjA1ZDJhN2RlYjk5NzhlODAyM2Uu
LjVhZTc5YmYwYjllMzkwYjNhYTYxNTNkMjYwMThkN2ZiMWJlYzk1MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogICAgIC8vIHVzZWQgZm9yIGNvbXBvc2l0aW5nIHB1cnBvc2Vz
LgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGlzcGxheVdpdGhQYWludCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHsgfQotICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQogICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcihib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsg
bV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTc4NjhiMGEyM2Iy
MjNiZGRlOTFjMDc4ZGJmZDg1YjkyZGU1YTU3Mi4uNDljZTRhYmE3M2YzOGY3OWM0MmE0ZWYwZjlk
Mjg5MWFkNTYxMzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxh
Y2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAg
SFRNTENhbnZhc0VsZW1lbnQqIFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6Y2FudmFzKCkg
Y29uc3QKICAgICByZXR1cm4gJmRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihiYXNlKTsKIH0K
IAotUGxhdGZvcm1MYXllciogUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0OjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+
IFBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dDo6bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZSgpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJQaXBlKQotICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclBpcGUtPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJQaXBlLT5sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMzNmYThmMmFkYzc4YjQ5Y2JlNDk3NjBhNmM2
NmEzODM0ZGY5OTE5OS4uMGFjM2Y3YzRmYWE3NDk1YzUzOTRkZDMxMTRhMTZhNDI5OTc0ZDE4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBib29sIGlzUGxhY2Vob2xkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRy
PEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSgpIGZpbmFsOwogCiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVyUGlwZTsgfQogICAgIGJvb2wgaXNHUFVCYXNlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlclBpcGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggYWM4MWQ4YzkzMjQ0NDdjZWI3ZmEzOGUzM2E5NjlhZmMxYTAzODRhMC4uY2UwMGU2
M2E4ZmI3NGZhOGM1ZmRlMzNiOTIzYzlkNWY3MTZjNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC02NDUyLDkg
KzY0NTMsMTEgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppc0NvbnRleHRVbnJl
Y292ZXJhYmx5TG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dExvc3QgJiYgIW1fcmVz
dG9yZUFsbG93ZWQ7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAorUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZSgpCiB7Ci0gICAgcmV0dXJuICghaXNDb250ZXh0TG9zdCgpICYmICFtX2lz
UGVuZGluZ1BvbGljeVJlc29sdXRpb24pID8gbV9jb250ZXh0LT5wbGF0Zm9ybUxheWVyKCkgOiAw
OworICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9u
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVtb3ZlU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0JiBvYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKaW5kZXggNjUyNGM5MTczNzU3MDlhMmM2NTBlMmFiODE2MTM5ZGY1MDU4MTYwOC4uYjU0
NTdlNzEzN2Y4NDI2ZGMwMzEwNGI0YzRlNmEzZmIyMjI0YzNiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
Mzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGlj
c0NvbnRleHRHTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogICAgIFdlYkdM
Q29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRHcm91
cC5nZXQoKTsgfQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBs
YXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggNzFhMzhh
ZjA2YjM1OTEyNjNjNzQ0MmJkYjY4NTBlNmY2MzQ1NTlmOS4uYjVmNWVjZDM4MWNhOTBhMjdkOGQy
YWI1MmQzZWZiMjUyYmVkMWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBF
TkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
LSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzg2LDcgKzc4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzCiAgICAgfTsKIAotICAg
IHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBib29sIGhhc0FscGhhKERhdGFGb3JtYXQgZm9ybWF0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzc1ZGE1
NmE4MzYxNTZjYzBkNWU1YTdkZjFiZmIwYzRiMmIyNjJjNy4uNDkyZTQyNmI2MzA1MmY0NDhmNzU3
OTA3ODMxOWVkMGJhNmYyZTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MTIsNiArNjEzLDEwIEBA
IHZvaWQgR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiB7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXllclB1cnBvc2UpCit7Cit9
CisKIHZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwg
ZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIHdpZHRoID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBiZjk1MDlmMThjY2I5
NTk5MjNkZDlmNWQ1ZmIyNTJiZTE4Yjk4OTljLi5lYjYzNTlmZTNmMjM1YzFkMzhiZTYwYmEwNjUw
MGY2NzhjZjEzMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEFuaW1hdGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5
ZXJGYWN0b3J5OworY2xhc3MgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwog
Y2xhc3MgSW1hZ2U7CiBjbGFzcyBNb2RlbDsKIGNsYXNzIFRpbGVkQmFja2luZzsKQEAgLTUyMiw2
ICs1MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92
ZSB0aGUgY29udGVudHMgbGF5ZXIuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xp
ZENvbG9yKGNvbnN0IENvbG9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKTsK
ICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
b01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVySUQg
Y29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTk4ODk4
NmEyZjdmOGRkZjZiMGQ4YzJkMzk0NmMzZmMxM2EzNzZmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgorCisjaWYgVVNFKENBKQorI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOjp+R3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlKCkgPSBkZWZhdWx0OworCisjaWYgVVNFKENBKQordm9pZCBHcmFw
aGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU6OnByZXBhcmVUb0RlbGVnYXRlRGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKQoreworfQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXJDQTo6ZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb247Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTE2Y2M2OGNmOTU3YTY3
YTUyMWY3MzYyZjJmNzc3NWQ0YzBhNzUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKKyNpZiAhVVNFKENBKQorI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNlbmRpZgorbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFVTRShDQSkKK2Ns
YXNzIFBsYXRmb3JtQ0FMYXllcjsKKyNlbmRpZgorCisvLyBQbGF0Zm9ybSBzcGVjaWZpYyBpbnRl
cmZhY2UgZm9yIGF0dGFjaGluZyBjb250ZW50cyB0byBHcmFwaGljc0xheWVyLgorLy8gUmVzcG9u
c2libGUgZm9yIGNyZWF0aW5nIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRvIHNob3cgdGhlIHBhcnRp
Y3VsYXIgY29udGVudHMKKy8vIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHcmFwaGljc0xheWVy
LgorY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCk7CisKKyNpZiBVU0UoQ0EpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb0Rl
bGVnYXRlRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxh
eShQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyNlbHNl
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOwor
I2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclBpcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyUGlwZS5oCmluZGV4IDZlNmQ1NzMyNmM2OWNkMWZiZjNmYWNlZGJhZjAxY2Fl
MTA5OTUwZTguLjNiZWQxZDBhZTZlMzkwMDM4MTZhZGM3MmI5YTAzZDY3NjdlN2VlMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyUGlwZS5o
CkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiUGxhdGZvcm1M
YXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlQnVmZmVyOwogCi0vLyBVc2VkIHRvIHBy
b3ZpZGUgYSBQbGF0Zm9ybUxheWVyIGZvciBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSW1hZ2VCdWZm
ZXI7IGUuZy4gYW4gSW1hZ2VCdWZmZXIgY3JlYXRlZCBhbmQgb3duZWQgYnkgYSBXb3JrZXIgdGhy
ZWFkCisvLyBVc2VkIHRvIHByb3ZpZGUgR3JhcGhpY3NMYXllciBjb250ZW50cyBmb3IgYW4gZXh0
ZXJuYWxseSBtYW5hZ2VkIEltYWdlQnVmZmVyOyBlLmcuIGFuIEltYWdlQnVmZmVyIGNyZWF0ZWQg
YW5kIG93bmVkIGJ5IGEgV29ya2VyIHRocmVhZAogY2xhc3MgSW1hZ2VCdWZmZXJQaXBlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXJQaXBlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU291
cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZT4gewpAQCAtNTAsNyArNTAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCBSZWZQdHI8U291cmNlPiBzb3VyY2UoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpID0wOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCmluZGV4IDRl
NjIyMzkzYzJhZGQxZmU4ZDM5ZmZiZjQwNGY1N2QzODkzYmU2ODAuLjY2NzBkMDFiZjM3YWI5MDUw
NmNkMDU2ZjU3MzJjMzFhOGY2ZjhiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNTE5MGEzODY1NDMwMDcyMDA1
MDljZjkwNWI3MGY1NWQwN2I1N2I0Ny4uYTE4MmM1MjU0ZTgwMmNhNzlhMDRhNjc2YWFkZjFhNTFi
ZDYwOGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlE
ZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCkBAIC0xMjQ2LDYgKzEy
NDcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVu
dHNMYXllclB1cnBvc2U6Ok5vbmU7CiAgICAgICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7
CiAgICAgfQorICAgIG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOwogCiAgICAg
aWYgKGNvbnRlbnRzTGF5ZXJDaGFuZ2VkKQogICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OwpAQCAtMTI3Nyw2ICsxMjc5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCiAgICAg
ICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwogICAgIH0KKyAgICBtX2NvbnRlbnRzRGlz
cGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChD
b250ZW50c0ltYWdlQ2hhbmdlZCk7CiB9CkBAIC0xMzA3LDYgKzEzMTAsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJiBtb2RlbCkKICAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25l
OwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogICAgIH0KKyAgICBtX2NvbnRl
bnRzRGlzcGxheURlbGVnYXRlID0gbnVsbHB0cjsKIAogICAgIGlmIChjb250ZW50c0xheWVyQ2hh
bmdlZCkKICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTEzNDMsNiArMTM0Nywz
MSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBu
dWxscHRyOwogCiAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBw
dXJwb3NlIDogQ29udGVudHNMYXllclB1cnBvc2U6Ok5vbmU7CisgICAgbV9jb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxheWVyQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQ
dHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRlbGVnYXRlLCBDb250
ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYg
ZGVsZWdhdGUgPT0gbV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRP
d25lcihudWxscHRyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBudWxscHRyOworICAgIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyUHVycG9zZTo6Tm9uZTsKKyAgICBpZiAoZGVsZWdhdGUpIHsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyLCB0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSA9IFdURk1vdmUoZGVsZWdhdGUpOworICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gcHVycG9zZTsKKyAgICAgICAgLy8gQ3VycmVudGx5IGRlbGVn
YXRlZCBkaXNwbGF5IGlzIG9ubHkgdXNlZnVsIHdoZW4gZGVsZWdhdGVlIGNhbGxzIHNldENvbnRl
bnRzLCBzbyBzZXQgdGhlCisgICAgICAgIC8vIGJhY2tpbmcgc3RvcmUgc2V0dGluZ3MgYWNjb3Jk
aW5nbHkuCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2luZ1N0b3JlQXR0YWNoZWQo
dHJ1ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRy
dWUpOworICAgICAgICBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlLT5wcmVwYXJlVG9EZWxlZ2F0
ZURpc3BsYXkoKm1fY29udGVudHNMYXllcik7CisgICAgfQogCiAgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNQbGF0Zm9ybUxh
eWVyQ2hhbmdlZCk7CkBAIC0xODc4LDYgKzE5MDcsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllckxvZ0ZpbGxlZFZpc2libGVGcmVzaFRpbGUodW5zaWduZWQgYmxhbmtQ
aXgKICAgICBjbGllbnQoKS5sb2dGaWxsZWRWaXNpYmxlRnJlc2hUaWxlKGJsYW5rUGl4ZWxDb3Vu
dCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNE
aXNwbGF5KFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29u
dGVudHNEaXNwbGF5RGVsZWdhdGUgJiYgbV9jb250ZW50c0xheWVyID09IGxheWVyOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCit7CisgICAgQVNTRVJUKG1fY29udGVudHNEaXNwbGF5RGVsZWdhdGUp
OworICAgIEFTU0VSVChsYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpOworICAgIG1fY29udGVudHNE
aXNwbGF5RGVsZWdhdGUtPmRpc3BsYXkoKmxheWVyKTsKK30KKwogc3RhdGljIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZUZvckN1c3RvbUJhY2tkcm9wQXBwZWFyYW5jZShHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGFwcGVhcmFuY2UpCiB7CiAgICAgcmV0dXJuIGFw
cGVhcmFuY2UgPT0gR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJv
cCA/IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDog
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKQEAgLTI3
OTIsNyArMjgzMyw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRm
b3JtTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBQbGF0Zm9ybSBsYXllciB3YXMg
c2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1
YmxheWVyTGlzdCgpLgotICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCkpOworICAgIGF1dG8gb3JpZW50YXRpb24gPSBtX2NvbnRlbnRzRGlzcGxheURlbGVnYXRlID8g
bV9jb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS0+b3JpZW50YXRpb24oKSA6IGRlZmF1bHRDb250ZW50
c09yaWVudGF0aW9uOworICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCksIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID09IENv
bnRlbnRzTGF5ZXJQdXJwb3NlOjpDYW52YXMpCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CkBAIC00NDEyLDE5ICs0NDU0LDEzIEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpjaGFuZ2VMYXllclR5cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBuZXdMYXll
clR5cGUpCiAgICAgICAgIGNsaWVudCgpLnRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZCh0aGlzLCBp
c1RpbGVkTGF5ZXIpOwogfQogCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb24gR3JhcGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6
VG9wRG93bjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQ
bGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllciwgQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIC8vIFR1cm4gb2Zm
IGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGNvbnRlbnRzTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAj
ZW5kaWYKLQotICAgIGlmIChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXApIHsKKyAgICBpZiAob3JpZW50YXRp
b24gPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpCb3R0b21VcCkgewogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbGlwcGVyKAogICAgICAgICAgICAgMS4wZiwgMC4w
ZiwgMC4wZiwgMC4wZiwKICAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaAppbmRleCA5ZDQ0ZjZhYjM4MGM4ODY2NjM0ZjNiZjc0MDllZWM3ZjM5YjQ4ZDg3Li5mNmIy
Yzk0Y2IzZDZmZmFkMDM1ZWI3NDkyYTI1NTgyMjU5MmEwMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUw
LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBj
b250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllcios
IENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3Im
KSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIG92ZXJyaWRlOwpAQCAt
MTkzLDYgKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JUZXN0aW5nKCkg
Y29uc3QgZmluYWw7CiAKKyAgICBjb25zdGV4cHIgc3RhdGljIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbiA9IENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bjsKKwogcHJpdmF0ZToKICAgICBib29sIGlzR3Jh
cGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMTIs
NiArMjE2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNP
cGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CiAgICAg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBkcmF3c0NvbnRlbnQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxh
eWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShQbGF0Zm9y
bUNBTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlz
cGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBvdmVycmlkZSB7IHJldHVybiBsYXllckRpZERp
c3BsYXkobGF5ZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJT
ZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTMwMCwxMCArMzA2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVxdWlyZXNUaWxlZExh
eWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikgY29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VMYXllclR5
cGVUbyhQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLQot
ICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQg
c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciosIENvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbiA9IGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKTsKICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIu
Z2V0KCk7IH0KIAogICAgIHZvaWQgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5
ZXImLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmKTsKQEAgLTY0NCw2ICs2NDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQogICAgIFJlZlB0cjxNb2RlbD4gbV9jb250ZW50c01vZGVsOwogI2VuZGlm
CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9jb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsKIAogICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
PiBtX2FuaW1hdGlvbnM7CiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYmFz
ZVZhbHVlVHJhbnNmb3JtQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNWRmMWEzYjYxYWI1ZDk3
ZWQ2M2M4YWIxODg4ZTlkZGE5MmQxNTgzNC4uOGEyMWExZDVjZjQxOGJjMGI4M2EyYzlhYzAyNjBm
OTYyMDYxMWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIE9CSkNfQ0xBU1MgQVZQ
bGF5ZXJMYXllcjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogI2Vu
ZGlmCiAKK25hbWVzcGFjZSBXVEYgeworI2lmIEhBVkUoSU9TVVJGQUNFKQorY2xhc3MgTWFjaFNl
bmRSaWdodDsKKyNlbmRpZgorfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVy
UG9vbDsKQEAgLTQ4LDYgKzU0LDEwIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIAog
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+IFBsYXRmb3JtQ0FMYXllckxp
c3Q7CiAKKyNpZiBIQVZFKElPU1VSRkFDRSkKK2NsYXNzIElPU3VyZmFjZTsKKyNlbmRpZgorCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNv
Y29hOwpAQCAtMTkwLDYgKzIwMCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDRlR5cGVSZWYg
Y29udGVudHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlw
ZVJlZikgPSAwOwogCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OklPU3VyZmFjZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHMoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JikgPSAwOworI2VuZGlmCisKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3RvcmVBdHRhY2hlZChib29sKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllckNsaWVudC5oCmluZGV4IDY3NzhkZTcxOWM1MGUxYTQ1ZmM4MjQ2ZDczYTkwOGFiZmJh
ZDEzMDYuLjFlNzJjNDU2NmU3YWZlYWI2NGQ2NmRhOTA2YzBmMTlmZmQ4MzliMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllckNsaWVudC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShQbGF0Zm9ybUNB
TGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyTGF5ZXJEaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKikgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVU
aWxlcygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggOWIxYjAxMTIw
MTM0Y2Q4NTVlYzVjZDExNDhjMTExZWZmN2UwNmZkMy4uODE5OTU3Y2FjZGFiNWYyMThhZjNlM2Fm
YWU4NGFjZjdlMDQ5YjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0x
MjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOworI2lmIEhBVkUoSU9TVVJGQUNFKQor
ICAgIHZvaWQgc2V0Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlk
ZTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggMzRlMjU5
MGY1NzcyOTZiMjIzOWJmMjg2ODJmYzc1NmFjNjY5MDNhYS4uMmE0NWRkYzQ1OGRlMDY3YmFkYjAx
YTU3ZWRmYjJiOWFiOTUzMDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0K
QEAgLTQwLDcgKzQwLDYgQEAKICNpbXBvcnQgIlRpbGVkQmFja2luZy5oIgogI2ltcG9ydCAiV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlQ0FMYXll
ckV4dHJhcy5oIgotI2ltcG9ydCAiV2ViR0xMYXllci5oIgogI2ltcG9ydCAiV2ViVmlkZW9Db250
YWluZXJMYXllci5oIgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KQEAgLTU0LDYgKzUzLDcgQEAKICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAg
LTIxMSw5ICsyMTEsNiBAQCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6bGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0ZgogICAgICAgICAmJiBbKFdl
YlZpZGVvQ29udGFpbmVyTGF5ZXIqKWxheWVyIHBsYXllckxheWVyXSkKICAgICAgICAgcmV0dXJu
IExheWVyVHlwZUFWUGxheWVyTGF5ZXI7CiAKLSAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6
W1dlYkdMTGF5ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIExheWVyVHlwZUNvbnRlbnRzUHJv
dmlkZWRMYXllcjsKLQogICAgIHJldHVybiBMYXllclR5cGVDdXN0b207CiB9CiAKQEAgLTIzNCw2
ICsyMzEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBicmVhazsKICAgICBj
YXNlIExheWVyVHlwZVNpbXBsZUxheWVyOgogICAgIGNhc2UgTGF5ZXJUeXBlVGlsZWRCYWNraW5n
VGlsZUxheWVyOgorICAgIGNhc2UgTGF5ZXJUeXBlQ29udGVudHNQcm92aWRlZExheWVyOgogICAg
ICAgICBsYXllckNsYXNzID0gW1dlYlNpbXBsZUxheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTI2NSwxMCArMjYzLDYgQEAg
UGxhdGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKExheWVyVHlwZSBsYXll
clR5cGUsIFBsYXRmb3JtQ0FMYXllckMKICAgICAgICAgaWYgKFBBTDo6aXNBVkZvdW5kYXRpb25G
cmFtZXdvcmtBdmFpbGFibGUoKSkKICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBQQUw6OmdldEFW
UGxheWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExheWVyVHlwZUNv
bnRlbnRzUHJvdmlkZWRMYXllcjoKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3Jt
Q0FMYXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycy4KLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQogICAgIGNhc2UgTGF5ZXJUeXBlTW9kZWxMYXllcjoKICAgICAgICAgbGF5ZXJDbGFzcyA9IFtD
QUxheWVyIGNsYXNzXTsKQEAgLTMxMCw3ICszMDQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpjb21tb25Jbml0KCkKICAgICB9CiAgICAgCiAgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBs
aWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCi0gICAgaWYgKG1fbGF5ZXJUeXBlID09IExh
eWVyVHlwZUFWUGxheWVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ29udGVudHNQ
cm92aWRlZExheWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNjcm9sbENvbnRhaW5lckxh
eWVyIHx8IG1fbGF5ZXJUeXBlID09IExheWVyVHlwZUN1c3RvbSkKKyAgICBpZiAobV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVT
Y3JvbGxDb250YWluZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pCiAg
ICAgICAgIFttX2xheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAgICAgZWxzZQogICAgICAg
ICBbbV9sYXllciBzZXREZWxlZ2F0ZTpbV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRl
IHNoYXJlZF1dOwpAQCAtNzk3LDYgKzc5MSwxOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQogCisjaWYgSEFWRShJT1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJT1N1cmZhY2UmIHN1cmZhY2UpCit7CisgICAg
c2V0Q29udGVudHMoc3VyZmFjZS5hc0xheWVyQ29udGVudHMoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldENvbnRlbnRzKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgc3Vy
ZmFjZUhhbmRsZSkKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoc3VyZmFjZUhhbmRsZS5jb3B5U2VuZFJpZ2h0KCksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICBzZXRDb250ZW50cygqc3VyZmFj
ZSk7Cit9CisjZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Q29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5kZXggOTFlNjQ3MDgwM2E1NDhj
NjFiOTU4Njc3NGJjYTk1NTE1ZDk1ZGQ4OC4uMzA4OTgwMDdlZjJmZjY2OTI2OWFmNjRmNjkxMmM5
MDk2OGY3OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3Zl
cnJpZGVzLgotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggOWFiMmQ3NDQxMGEwNmJjMGRlNjQxNTBlOGUxMjAzZTA1M2FkNTk0
Yi4uZTI2ODk1NzI2OTQ5ODhmNGUyYjk4Nzk1MjFkOWQyOGQ3NTFlZWVhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC00NzAsMTEgKzQ3MCw2IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dHVyZTsKIH0K
IAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1MYXllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikK
QEAgLTgwMyw2ICs3OTgsMTEgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29uZmlnT2JqOwogfQogCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBHcmFwaGljc0NvbnRleHRHTENvY29hOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
R0xMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRhMGZlMGY0NGEzYTg0
NDBlNjYzOWVhOWQ3ZTBhODk2MDY4OGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dl
YkdMTGF5ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgotCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotCi0v
LyBBIGxheWVyIGNsYXNzIHNob3dpbmcgb25lIElPU3VyZmFjZS4KLVdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIKLQotLSAoaWQpaW5pdFdpdGhEZXZpY2VQaXhl
bFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOihib29sKWNvbnRl
bnRzT3BhcXVlOwotCi1AZW5kCi0KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOTAzMTU1NjkxMTEzNmMzMWY1
ZDY4ZWUyNDNmNjdlZjY2ZGU4YzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJHTCkKLSNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLQotI2ltcG9ydCAiR3Jh
cGhpY3NMYXllci5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCi0jaW1wb3J0ICJQbGF0
Zm9ybUNBTGF5ZXIuaCIKLQotQGltcGxlbWVudGF0aW9uIFdlYkdMTGF5ZXIKLQotLSAoaWQpaW5p
dFdpdGhEZXZpY2VQaXhlbFJhdGlvOihmbG9hdClkZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3Bh
cXVlOihib29sKWNvbnRlbnRzT3BhcXVlCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAg
ICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBzZWxmLmNvbnRl
bnRzT3BhcXVlID0gY29udGVudHNPcGFxdWU7Ci0gICAgc2VsZi5jb250ZW50c1NjYWxlID0gZGV2
aWNlUGl4ZWxSYXRpbzsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLy8gV2hlbiB1c2luZyBhbiBJ
T1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKLS8vIGxheWVy
IHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250ZW50
Ci0vLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAodW5s
aWtlbHksIHNpbmNlCi0vLyB0aGlzIGlzIGEgY29udGVudHMgbGF5ZXIpIGFuZCBhbmNob3IgcG9p
bnQgbXVzdCBhZGQgYSBZIHNjYWxlIG9mCi0vLyAtMSBhbmQgbWFrZSBzdXJlIHRoZSB0cmFuc2Zv
cm0gaGFwcGVucyBmcm9tIHRoZSB0b3AuCi0KLS0gKHZvaWQpc2V0VHJhbnNmb3JtOihDQVRyYW5z
Zm9ybTNEKXQKLXsKLSAgICBbc3VwZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RTY2FsZSh0
LCAxLCAtMSwgMSldOwotfQotCi0tICh2b2lkKXNldEFuY2hvclBvaW50OihDR1BvaW50KXAKLXsK
LSAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAgLSBwLnkpXTsK
LX0KLQotLSAodm9pZClkaXNwbGF5Ci17Ci0gICAgLy8gU2hvdyB0aGUgc2VsZi5jb250ZW50cyBh
cyB0aGUgY29udGVudHMgYnkgbm90IGRvaW5nIGFueXRoaW5nIGluIHRoaXMgZnVuY3Rpb24uCi0g
ICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
Rm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+
b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlk
RGlzcGxheShsYXllci5nZXQoKSk7Ci0KLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpp
bmRleCA4ZDVkMjVhYjEwYjQ1ZTNmOWE2ZTgzOGFlMTA5NDFlNmZjMGU1ZTM4Li4xMmE5NmM2ZTZj
ZWMwMGZkYzQwMGYwMTU1YjMxMjcxMjBkY2ZlYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJQcm9j
ZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMjksOSArMjksOCBAQAogI2lmIEVOQUJM
RShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCIgLy8gTk9MSU5UCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbXBvcnQgIlBsYXRm
b3JtQ0FMYXllci5oIgogI2ltcG9ydCAiUHJvY2Vzc0lkZW50aXR5LmgiCi0jaW1wb3J0ICJXZWJH
TExheWVyLmgiCi0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiAjaWYgUExB
VEZPUk0oTUFDKQogI2ltcG9ydCAiRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yLmgiCkBAIC00
MCw0NiArMzksODMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSB7CiAKLXN0YXRp
YyBSZXRhaW5QdHI8V2ViR0xMYXllcj4gY3JlYXRlV2ViR0xMYXllcihjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCi17Ci0gICAgUmV0YWluUHRyPFdlYkdMTGF5
ZXI+IGxheWVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGxheWVyID0g
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gY29udGVudHNPcGFxdWU6IWF0dHJpYnV0ZXMuYWxwaGFd
KTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgW2xheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwot
I2VuZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBsYXllcjsK
LX0KK2NsYXNzIERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShib29sIGlzT3BhcXVlLCBm
bG9hdCBjb250ZW50c1NjYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGlzcGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShpc09wYXF1ZSwgY29udGVudHNTY2FsZSkpOwor
ICAgIH0KKworICAgIC8vIEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSBvdmVy
cmlkZXMuCisgICAgdm9pZCBwcmVwYXJlVG9EZWxlZ2F0ZURpc3BsYXkoUGxhdGZvcm1DQUxheWVy
JiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGxheWVyLnNldE9wYXF1ZShtX2lzT3BhcXVl
KTsKKyAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAg
IH0KKworICAgIHZvaWQgZGlzcGxheShQbGF0Zm9ybUNBTGF5ZXImIGxheWVyKSBmaW5hbAorICAg
IHsKKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlcikKKyAgICAgICAgICAgIGxheWVyLnNldENv
bnRlbnRzKCptX2Rpc3BsYXlCdWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXll
ci5zZXRDb250ZW50cyhudWxscHRyKTsKKyAgICB9CisKKyAgICBHcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorCisgICAgdm9pZCBzZXREaXNwbGF5QnVm
ZmVyKElPU3VyZmFjZSogZGlzcGxheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghZGlzcGxh
eUJ1ZmZlcikgeworICAgICAgICAgICAgbV9kaXNwbGF5QnVmZmVyLnJlc2V0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlciAmJiBk
aXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkgPT0gbV9kaXNwbGF5QnVmZmVyLT5zdXJmYWNlKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6
Y3JlYXRlRnJvbVN1cmZhY2UoZGlzcGxheUJ1ZmZlci0+c3VyZmFjZSgpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIERpc3BsYXlCdWZmZXJE
aXNwbGF5RGVsZWdhdGUoYm9vbCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICAg
ICAgOiBtX2NvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSkKKyAgICAgICAgLCBtX2lzT3BhcXVl
KGlzT3BhcXVlKQorICAgIHsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBtX2Rpc3BsYXlCdWZmZXI7CisgICAgY29uc3QgZmxvYXQgbV9jb250ZW50c1NjYWxlOworICAg
IGNvbnN0IGJvb2wgbV9pc09wYXF1ZTsKK307CiAKIC8vIEdyYXBoaWNzQ29udGV4dEdMIHR5cGUg
dGhhdCBpcyB1c2VkIHdoZW4gV2ViR0wgaXMgcnVuIGluLXByb2Nlc3MgaW4gV2ViQ29udGVudCBw
cm9jZXNzLgogY2xhc3MgV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBw
dWJsaWMgR3JhcGhpY3NDb250ZXh0R0xDb2NvYQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIHBy
aXZhdGUgRGlzcGxheUNvbmZpZ3VyYXRpb25Nb25pdG9yOjpDbGllbnQKICNlbmRpZgotCiB7CiBw
dWJsaWM6CiAgICAgfldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKCk7Ci0gICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aXNWYWxp
ZCgpICYmIG1fd2ViR0xMYXllcjsgfQorCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBv
dmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQoKSk7
IH0KKyAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkgZmluYWwgeyByZXR1cm4gbV9sYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlLnB0cigpOyB9CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIGZp
bmFsOwogcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gRGlzcGxheUNvbmZpZ3Vy
YXRpb25Nb25pdG9yOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlzcGxheVdhc1JlY29u
ZmlndXJlZCgpIGZpbmFsOwogI2VuZGlmCi0KICAgICBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0
R0xDb2NvYShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7Ci0gICAgUmV0YWluUHRyPFdl
YkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKIAorICAgIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURl
bGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiAgICAgZnJpZW5kIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gV2ViQ29yZTo6Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOworICAgIGZyaWVuZCBj
bGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIH07CiAKIFdlYlByb2Nlc3NHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogICAgIDogR3JhcGhpY3NDb250ZXh0R0xD
b2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB7IH0pCi0gICAgLCBtX3dlYkdMTGF5ZXIoY3JlYXRl
V2ViR0xMYXllcihjb250ZXh0QXR0cmlidXRlcygpKSkKKyAgICAsIG1fbGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUoIWF0dHJp
YnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCiB7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uTW9uaXRvcjo6c2luZ2xldG9uKCkuYWRk
Q2xpZW50KCp0aGlzKTsKQEAgLTk2LDEzICsxMzIsNyBAQCBXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6fldlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTENvY29hKCkKIHZvaWQgV2Vi
UHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICAg
ICBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJlRm9yRGlzcGxheSgpOwotICAgIGF1dG8g
c3VyZmFjZSA9IG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdldCgpOwotICAg
IGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIFttX3dlYkdMTGF5ZXIgc2V0Q29udGVudHM6c3VyZmFjZS0+YXNMYXllckNv
bnRlbnRzKCldOwotICAgIFttX3dlYkdMTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
LT5zZXREaXNwbGF5QnVmZmVyKGRpc3BsYXlCdWZmZXIoKSk7CiB9CiAKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFn
ZUFwcGxpZXIubW0KaW5kZXggZWIwNGUyMDY1NmY1YmJhN2JmZmUwMTNhOGQ2YmQ5ZDE1NGU2MGM0
OS4uMzM5YzZmZjlkMjQyNWJiYjcwZmZhZWM0YTI3MjIyYWRkMzkzYTMzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29tcG9uZW50VHJh
bnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbQpA
QCAtMjksNiArMjksOSBAQAogI2lmIFVTRShDT1JFX0lNQUdFKQogCiAjaW1wb3J0ICJGRUNvbXBv
bmVudFRyYW5zZmVyLmgiCisjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CisjaW1wb3J0
IDxDb3JlSW1hZ2UvQ0lGaWx0ZXIuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9Db3JlSW1hZ2UuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IGFjZjk2ZmQwZDU0MGFiODZlNzcwZDQ2
MTNjMTkwYTIyODNiNzA1ZjAuLjMyNmYwNDMyYjQ4NjIyMTk2MmM3NWVmYzZkZTAxZWQ4YWRjOWU2
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRp
bGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRp
bGl0aWVzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0K
aW5kZXggNTU0ODBiNTJiOTFlMDI4NjJmZjBiZmMxMzA2ZGE4MGQ2MDNjNTQyYy4uMzdlMGY1NGJi
NjAwMTIzNGZiNmZlNGFkOTJlNTc4ZGI4ZjMwM2UyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtODEsOCArODEsMTEgQEAKIC0g
KHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYp
OwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3Bs
YXldOworICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5vd25lcigpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkg
JiYgIWxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KGxheWVy
LmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOwog
fQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0KWRpcnR5UmVjdApAQCAt
OTQsNyArOTcsNyBAQAogICAgIH0KIAogICAgIGlmIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIGxheWVyT3duZXIgPSBwbGF0Zm9ybUxheWVyLT5vd25lcigpKSB7Ci0gICAgICAgIGlm
IChsYXllck93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkgeworICAgICAgICBp
ZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgfHwgbGF5ZXJPd25l
ci0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShwbGF0Zm9ybUxheWVyLmdldCgpKSkg
ewogICAgICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpkaXJ0eVJlY3RdOwog
CiAgICAgICAgICAgICBpZiAobGF5ZXJPd25lci0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRD
b3VudGVyKHBsYXRmb3JtTGF5ZXIuZ2V0KCkpKSB7CkBAIC0xMTMsMTAgKzExNiwxNCBAQAogICAg
ICAgICBXZWJUaHJlYWRMb2NrKCk7CiAjZW5kaWYKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIFtzdXBlciBkaXNwbGF5XTsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7
Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQotICAgICAgICBsYXllci0+b3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyID0gbGF5ZXIgPyBsYXllci0+b3duZXIo
KSA6IG51bGxwdHI7CisgICAgaWYgKG93bmVyICYmIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KGxheWVyLmdldCgpKSkKKyAgICAgICAgb3duZXItPnBsYXRmb3JtQ0FMYXll
ckxheWVyRGlzcGxheShsYXllci5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgZGlz
cGxheV07CisgICAgaWYgKG93bmVyKQorICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyTGF5
ZXJEaWREaXNwbGF5KGxheWVyLmdldCgpKTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAK
aW5kZXggMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZC4uMmY3NGQwZWJh
ZGI3ZDgyZTkyMGQ0MjhjZDllMTljZjZkZGUzNjA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFn
ZUJ1ZmZlclBpcGUuY3BwCkBAIC00NCwxNiArNDQsMTggQEAgbmFtZXNwYWNlIE5pY29zaWEgewog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIHsKIGNsYXNzIE5pY29zaWFJ
bWFnZUJ1ZmZlclBpcGVTb3VyY2UgZmluYWwgOiBwdWJsaWMgSW1hZ2VCdWZmZXJQaXBlOjpTb3Vy
Y2UsIHB1YmxpYyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKIHB1Ymxp
YzoKICAgICBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAgICAgdmlydHVhbCB+Tmlj
b3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZSgpOwogCisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlOjpT
b3VyY2Ugb3ZlcnJpZGVzLgogICAgIHZvaWQgaGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikg
ZmluYWw7CiAKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KKyAg
ICBDb250ZW50TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX25pY29zaWFM
YXllci5nZXQoKTsgfQogcHJpdmF0ZToKKyAgICAvLyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbDo6Q2xpZW50IG92ZXJyaWRlcy4KICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxDb250ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwpAQCAt
NjIsMTYgKzY0LDM4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdl
QnVmZmVyOwogfTsKIAotY2xhc3MgTmljb3NpYUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1Ymxp
YyBJbWFnZUJ1ZmZlclBpcGUgeworY2xhc3MgUGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZSBmaW5h
bCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgewogcHVibGlj
OgotICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKTsKLSAgICB2aXJ0dWFsIH5OaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlKCkgPSBkZWZhdWx0OworICAgIHN0YXRpYyBSZWY8UGlwZVNvdXJjZURpc3Bs
YXlEZWxlZ2F0ZT4gY3JlYXRlKFJlZlB0cjxDb250ZW50TGF5ZXI+JiYgbmljb3NpYUxheWVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGlwZVNvdXJjZURpc3BsYXlEZWxl
Z2F0ZShXVEZNb3ZlKG5pY29zaWFMYXllcikpKTsKKyAgICB9CiAKKyAgICAvLyBHcmFwaGljc0xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX25pY29zaWFMYXllci5nZXQo
KTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJj
ZSgpIGNvbnN0IGZpbmFsOwotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dCBmaW5hbDsKKyAgICBQaXBlU291cmNlRGlzcGxheURlbGVnYXRlKFJlZlB0cjxDb250ZW50TGF5
ZXI+JiYgbmljb3NpYUxheWVyKQorICAgICAgICA6IG1fbmljb3NpYUxheWVyKFdURk1vdmUobmlj
b3NpYUxheWVyKSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPENvbnRlbnRMYXllcj4gbV9u
aWNvc2lhTGF5ZXI7Cit9OworCitjbGFzcyBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlIGZpbmFsIDog
cHVibGljIEltYWdlQnVmZmVyUGlwZSB7CitwdWJsaWM6CisgICAgTmljb3NpYUltYWdlQnVmZmVy
UGlwZSgpCisgICAgICAgIDogbV9zb3VyY2UoYWRvcHRSZWYoKm5ldyBOaWNvc2lhSW1hZ2VCdWZm
ZXJQaXBlU291cmNlKSkKKyAgICAgICAgLCBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUo
UGlwZVNvdXJjZURpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1fc291cmNlLT5wbGF0Zm9ybUxheWVy
KCkpKQorICAgIHsKKyAgICB9CiAKLSAgICBSZWZQdHI8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZT4gbV9zb3VyY2U7CisgICAgLy8gSW1hZ2VCdWZmZXJQaXBlIG92ZXJyaWRlcy4KKyAgICBS
ZWZQdHI8SW1hZ2VCdWZmZXJQaXBlOjpTb3VyY2U+IHNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc291cmNlLnB0cigpOyB9CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rp
c3BsYXlEZWxlZ2F0ZT4gbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpIGZpbmFsIHsgcmV0
dXJuIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsgfQorcHJpdmF0ZToKKyAg
ICBSZWY8Tmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZT4gbV9zb3VyY2U7CisgICAgUmVmPFBp
cGVTb3VyY2VEaXNwbGF5RGVsZWdhdGU+IG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZTsK
IH07CiAKIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6Ok5pY29zaWFJbWFnZUJ1ZmZlclBp
cGVTb3VyY2UoKQpAQCAtMTM1LDMwICsxNTksMTAgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBtX2lt
YWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogfQogCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlU291cmNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7Ci19Ci0KIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiB7CiB9CiAKLU5pY29zaWFJbWFnZUJ1ZmZl
clBpcGU6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGUoKQotewotICAgIG1fc291cmNlID0gYWRvcHRS
ZWYobmV3IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UpOwotfQotCi1SZWZQdHI8SW1hZ2VC
dWZmZXJQaXBlOjpTb3VyY2U+IE5pY29zaWFJbWFnZUJ1ZmZlclBpcGU6OnNvdXJjZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fc291cmNlOwotfQotCi1QbGF0Zm9ybUxheWVyKiBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9zb3VyY2Up
Ci0gICAgICAgIHJldHVybiBtX3NvdXJjZS0+cGxhdGZvcm1MYXllcigpOwotICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCmluZGV4IGJhOWQ1YWY5MGQ3NDg1YTc2NDM1NjkyZGI1NjBhYmJlOWQ4MTUw
NWIuLmYyYTc5MjhkNWVlNTJiNjAzMzY2MWM1OTE3ZTdlMjdiMmMyMjY4ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgdGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnQgYWxpZ25tZW50ID0gNCk7CiAKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTCBvdmVycmlk
ZXMuCiAgICAgYm9vbCBpc0dMRVMyQ29tcGxpYW50KCkgY29uc3QgZmluYWw7CiAgICAgLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgICAgLy8gRW50cnkgcG9pbnRzIGZvciBXZWJHTC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggOTc2ZTNhYmU1YmIzYWM0
MGFmOGYyMGM5ZWU0ZWU4YTI1NTNiMGE0Ny4uNzUwYTg0YWY2MzgyYzU0MTMwY2YzNmU4NmQ5YmM4
Yzc2MDRjZmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CkBAIC03OSw2ICs4MCwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUgZmlu
YWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU+IGNyZWF0ZShQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShwbGF0Zm9ybUxheWVyKSk7Cisg
ICAgfQorCisgICAgLy8gR3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlIG92ZXJy
aWRlcy4KKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXI7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcikKKyAgICAgICAgOiBtX3BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllcikKKyAgICB7Cisg
ICAgfQorCisgICAgUGxhdGZvcm1MYXllciogbV9wbGF0Zm9ybUxheWVyOworfTsKKworfQorCiBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcihXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CkBAIC04OCw3ICsxMTUsMTcgQEAgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
KCkgPSBkZWZhdWx0OwogCiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OkdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRy
aWJ1dGVzKQogICAgIDogR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKQorI2lmIFVTRShOSUNPU0lBKQorICAgICwgbV9sYXllckNvbnRlbnRzRGlz
cGxheURlbGVnYXRlKFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNv
c2lhTGF5ZXItPmNvbnRlbnRMYXllcigpKSkKKyNlbHNlCisgICAgLCBtX2xheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZTo6Y3JlYXRlKG1fdGV4
bWFwTGF5ZXIuZ2V0KCkpKQorI2VuZGlmCit7Cit9CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6bGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpCiB7CisgICAgcmV0dXJuIG1fbGF5ZXJDb250ZW50
c0Rpc3BsYXlEZWxlZ2F0ZS5wdHIoKTsKIH0KIAogUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQpAQCAtMTIzLDE1ICsxNjAsNiBAQCBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleAogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1QbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotI2lm
IFVTRShOSUNPU0lBKQotICAgIHJldHVybiAmbV9uaWNvc2lhTGF5ZXItPmNvbnRlbnRMYXllcigp
OwotI2Vsc2UKLSAgICByZXR1cm4gbV90ZXhtYXBMYXllci5nZXQoKTsKLSNlbmRpZgotfQotCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
YjQwZTc5ODMzZTgxMTBmNWQwOTdlYWQzYjUzMWYxZTYyZDZkOGQxYi4uMmRiMmU4ZDdkOWNkN2I5
Y2FiYjRjOWNhNDE3MjQzZjBlN2EwYjUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfkdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyQmFzZSBvdmVycmlkZXMuCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNw
bGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbDsKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYs
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOwogI2VuZGlmCkBAIC02
MCw2ICs2MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7Cisg
ICAgUmVmPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggM2Q3Yjg2Mzk2NmQ3YTk3NGIwMTM2MGEzYzUyYWNjY2UxM2M2
MGM0Yi4uZTk5NDI1NDRiZmU5MDk0NGMzNTBkMTM5Yzg1M2M5N2ZkNjQwMzBjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zNDIsNiArMzQyLDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxh
eWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9yCiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q2xp
ZW50KHRoaXMpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250
ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkK
K3sKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8g
ZGlzcGxheURlbGVnYXRlLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93RGVidWdCb3JkZXIoYm9vbCBzaG93KQog
ewogICAgIGlmIChpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpID09IHNob3cpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGExMDM0ZGE0YThiNGQyMzRhM2Y0MWQxYmEz
MTdjZmZhYTE4NjEyOTguLjBjODliYTNhNTk0OGM0MThjMTI3OWVmYWQ3YTk1YTk1OGU4MGVhMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMyw2ICsyMyw3
IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNsaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRD
b250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJw
b3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKFJlZlB0
cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQ
dXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCmluZGV4IGE3NDkwN2NlMWNiNzAxYjc4NzBkMDhiYmNjZTA0MjM3ZDhhNGEzOWYuLjA1
NDE2YTUwMDE1YjZmYzFjZDU1MDMxMDkyMTJkMzY1ZWJmNzlkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0
b3J5LmgiCiAjaW5jbHVkZSAiTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgi
CiAjaW5jbHVkZSAiTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgpA
QCAtNDk5LDYgKzUwMCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogI2VuZGlmCiB9CiAK
K3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZShSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlE
ZWxlZ2F0ZSwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyID0gZGlzcGxheURlbGVnYXRlID8gZGlzcGxheURlbGVnYXRlLT5w
bGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHB1cnBvc2UpOworfQorCiBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6ZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKSBjb25zdAogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNjg5NmM1ZTVi
MDI0MzgzZDc1OTU3ODkxYzk1YjBjN2NmZDc1YjRjZC4uOTdkZWM1OWJmMTc5MThhMmNjODIwZDQ2
NWZlMDViMGUzZmUyNzZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRE
aXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1
cnBvc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNEaXNwbGF5RGVsZWdhdGUoUmVm
UHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4mJiwgQ29udGVudHNMYXll
clB1cnBvc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGlj
c0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKFJlZlB0
cjxHcmFwaGljc0xheWVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0KaW5kZXggYzM5YzMxMjRlODU0MmFmOTUxOTcxNzg0YjgwZjIwNGM4MTk1ZmNlOC4uZDMw
YjRlNDEwZWZjOGE0YzA0NmQ2YmY1MmM5ZWYxNzk5NzEwZGE4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAi
Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIuaCIKICNpbXBvcnQgIkxlZ2FjeVRpbGVHcmlkLmgi
CiAjaW1wb3J0ICJMZWdhY3lUaWxlR3JpZFRpbGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KaW5kZXggYjRkMmZkOWRkNWM1MmVmYjk3YzMxZGQ3ZDA0
NWQzOTk5ZmU0YmY0MS4uOWE5ZTYxOTUxNWVlNzAyY2U3NDIxOTExNWEzOGMzNTA5N2ZiYTk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0KQEAgLTQx
LDggKzQxLDYgQEAKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogaW5saW5lIE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3
PiAqU2Nyb2xsVmlldzo6c2Nyb2xsVmlldygpIGNvbnN0CkBAIC0yMDYsNyArMjA0LDcgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAjZWxzZQogICAgIExPRyhG
cmFtZXMsICIlcCAlQCBhdCB3ICVkIGggJWRcbiIsIGRvY3VtZW50VmlldygpLCBOU1N0cmluZ0Zy
b21DbGFzcyhbZG9jdW1lbnRWaWV3KCkgY2xhc3NdKSwgdywgaCk7CiAjZW5kaWYKLSAgICBOU1Np
emUgdGVtcFNpemUgPSB7IHN0YXRpY19jYXN0PENHRmxvYXQ+KG1heCgwLCB3KSksIHN0YXRpY19j
YXN0PENHRmxvYXQ+KG1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBmb3IgNDIxMzMxNAorICAg
IE5TU2l6ZSB0ZW1wU2l6ZSA9IHsgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjptYXgoMCwgdykp
LCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihzdGQ6Om1heCgwLCBoKSkgfTsgLy8gd29ya2Fyb3VuZCBm
b3IgNDIxMzMxNAogICAgIFtkb2N1bWVudFZpZXcoKSBzZXRCb3VuZHNTaXplOnRlbXBTaXplXTsK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CkBAIC0yMjMsNyArMjIxLDcgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb2ludCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBOU1Bv
aW50IGZsb2F0UG9pbnQgPSBzY3JvbGxQb2ludDsKLSAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsg
bWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQb2ludC54KSwgbWF4KC1b
c2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueSwgZmxvYXRQb2ludC55KSB9OyAgLy8gRG9uJ3Qg
dXNlIE5TTWFrZVBvaW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCB0ZW1w
UG9pbnQgPSB7IHN0ZDo6bWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpbl0ueCwgZmxvYXRQ
b2ludC54KSwgc3RkOjptYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBmbG9hdFBv
aW50LnkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0
LgogICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9UaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlP
Uy5tbQppbmRleCAxYmJhNGUyYWRjOWY2YTE2ZmJjNjNjMDk2OTNlNWM2NjFmN2RkNTRiLi43NTIw
NTIzOWQ2OGNiNWNhYmUyMGUzZTg3YjUwYTIzMDYyYWUzMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1RoZW1lSU9TLm1tCkBAIC0zMSw4ICszMSw2IEBACiAjaW1wb3J0IDxwYWwvaW9z
L1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRoZW1lJiBUaGVtZTo6
c2luZ2xldG9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCmluZGV4IDFmMGMwOWYxZDU0NTMwODc1NTdj
MWUyMGIxYThhNTBkZjk5MTBjYWQuLjQyMzQxMTY5ZWRkMGUzZTc0OGU3NzI4OTA1NTM0MTIzODdj
ZjZjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NvY29hL0xvY2FsaXplZERhdGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IDkzODRk
MDJkYzcwYzQ5Y2NhMWM2MzVlNWU4ODZjNDNlZDkzZDljMmIuLmUwZGI4MjdmNDA4NGU3NzcyYzRk
MDU0YTlhODM4OGViMjhmOWVmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY29jb2EvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCkBAIC0zNCw4ICszNCw2IEBA
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBM
b2NhbGl6ZWREYXRlQ2FjaGUmIGxvY2FsaXplZERhdGVDYWNoZSgpCkBAIC0xNjYsNyArMTY0LDcg
QEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNv
bXBvbmVudHNUeXBlIHR5cGUsIGNvbnN0IE0KICAgICAgICAgW2NvbXBvbmVudHMgc2V0TW9udGg6
KGkgKyAxKV07CiAgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtncmVnb3JpYW4gZGF0ZUZyb21Db21w
b25lbnRzOmNvbXBvbmVudHMuZ2V0KCldOwogICAgICAgICBOU1N0cmluZyAqZm9ybWF0dGVkRGF0
ZSA9IFtkYXRlRm9ybWF0dGVyIHN0cmluZ0Zyb21EYXRlOmRhdGVdOwotICAgICAgICBtYXhpbXVt
V2lkdGggPSBtYXgobWF4aW11bVdpZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9y
bWF0dGVkRGF0ZSkpKTsKKyAgICAgICAgbWF4aW11bVdpZHRoID0gc3RkOjptYXgobWF4aW11bVdp
ZHRoLCBtZWFzdXJlci5tZWFzdXJlVGV4dChTdHJpbmcoZm9ybWF0dGVkRGF0ZSkpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbWF4aW11bVdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBhNzg0ZGJiYjgzN2Y3YjdlNDE3YjI2OWI2
YjcwYmM5MjcyMzRkNTFkLi42OTUwYTFlMGU1MzIwMTgxMDdkNWZkZjhhNWE3YmJjNTE3MDU0MDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMTA4OSw3ICsxMDg5LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNv
bmZpZ3VyYXRpb24oY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXMKICAgICBlbHNl
IGlmIChyZW5kZXJlcigpLmlzQ2FudmFzKCkgJiYgY2FudmFzQ29tcG9zaXRpbmdTdHJhdGVneShy
ZW5kZXJlcigpKSA9PSBDYW52YXNBc0xheWVyQ29udGVudHMpIHsKICAgICAgICAgY29uc3QgSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihyZW5k
ZXJlcigpLmVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0ID0gY2FudmFzLT5y
ZW5kZXJpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRl
bnRzVG9QbGF0Zm9ybUxheWVyKGNvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKSwgR3JhcGhpY3NMYXll
cjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNhbnZhcyk7CisgICAgICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzRGlzcGxheURlbGVnYXRlKGNvbnRleHQtPmxheWVyQ29udGVudHNE
aXNwbGF5RGVsZWdhdGUoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6OkNh
bnZhcyk7CiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCmluZGV4IGFlMzE3YjE1MjEwODQ3ZTdlYWVmODk3NGEwMjc4N2ZiMTEw
ZDkyMzIuLjE1OWU1MDU2NzcwNDMzMDFmZDE5ODUwYzM0OTc0NmY3NTk4MTJlNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oCkBAIC03NCw3ICs3NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
VVNFKEdSQVBISUNTX0xBWUVSX1dDKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBsYXRmb3JtTGF5ZXIoKTsgfQorICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGxheWVyaW5nIHZpb2xhdGlvbiBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCA5ZDc2N2VjMjE2
NTNlNzBlZTQ5OGI0ZTg5M2VmM2Q3NzhhMzAwNGRhLi42YzkwNjFiNWUyZWZlNWIyZmNkYzBmODUw
MThmY2MxYjk2NDdlZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBA
IC03NSw4ICs3NSw4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFy
ZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6CiB7CiAgICAgYXNzZXJ0SXND
dXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5
KCk7Ci0gICAgSU9TdXJmYWNlKiBkaXNwbGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVm
ZmVyKCk7CiAgICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CisgICAgSU9TdXJmYWNlKiBkaXNw
bGF5QnVmZmVyID0gbV9jb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKGRpc3BsYXlC
dWZmZXIpIHsKICAgICAgICAgbV9jb250ZXh0LT5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAg
ICAgICAgIHNlbmRSaWdodCA9IGRpc3BsYXlCdWZmZXItPmNyZWF0ZVNlbmRSaWdodCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKaW5kZXggMjI0ZmExOGM4MTU5MjYyZmVmM2RlOGVl
NTA3YTViN2Q3ZDc5ZGI5OC4uOWRmODNmNDYwN2NjOThjMGQ4ZmI3ZWRmNjdlZDZmN2I4OTc4MWE0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCkBAIC02NSw2ICs2NSwxMyBAQCB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKKyNp
ZiBVU0UoR1JBUEhJQ1NfTEFZRVJfV0MpCitQbGF0Zm9ybUxheWVyKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSgpLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisjZW5k
aWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggN2Q5ZTg2
N2Y5OGViOTUzMTdmOWY0YTNiZTk5NmFkNDUxZDAxMDk5Zi4uODNlMGRiZDlmMDgxOTlkZTQyY2Mx
ZDliM2EyNzBlOTI2ZDk1ZmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTYz
LDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAKKyAgICB2b2lkIHNl
dENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUpOwogICAgIGJvb2wg
ZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGcm9u
dEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gISFtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyOworICAgICAgICByZXR1cm4gbV9jb250ZW50c0J1ZmZlckhhbmRsZSB8fCAhIW1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CiAgICAgfQogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdG
bHVzaGVycygpOwpAQCAtMTM1LDYgKzEzNiw5IEBAIHByaXZhdGU6CiAgICAgQnVmZmVyIG1fYmFj
a0J1ZmZlcjsKICAgICBCdWZmZXIgbV9zZWNvbmRhcnlCYWNrQnVmZmVyOwogICAgIHN0ZDo6b3B0
aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBtX2J1ZmZlckhhbmRsZTsKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgbV9idWZmZXJIYW5kbGUgc2hvdWxkIGJl
IHVzZWQgdG8gcmVmIHRoZSBidWZmZXIgb25jZSBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZQorICAg
IC8vIGNhbiBiZSBlbmNvZGVkIG11bHRpcGxlIHRpbWVzLiBodHRwOi8vd2Via2l0Lm9yZy9iLzIz
NDE2OQorICAgIHN0ZDo6b3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gbV9jb250ZW50c0J1ZmZlckhh
bmRsZTsKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IG1fZGlzcGxheUxpc3RC
dWZmZXJIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA0
NjZiNjZkNzgzNmEzZDE3ZTA1ZDRlOGYyMWRjM2IwYTVkYTNmZmNkLi42ZGI2ZWFiNzU5OWE5MTUw
YWUzNGQ5MTQ0NGM0Y2RiNGZhNzdkYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJC
YWNraW5nU3RvcmUoKQogICAgIG1fZnJvbnRCdWZmZXIuZGlzY2FyZCgpOwogICAgIG1fYmFja0J1
ZmZlci5kaXNjYXJkKCk7CiAgICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmRpc2NhcmQoKTsKKyAg
ICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApA
QCAtMTEyLDkgKzExMywxMyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAg
ICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5
TGlzdDsKLQorICAgIC8vIEZJWE1FOiBGb3Igc2ltcGxpY2l0eSB0aGlzIHNob3VsZCBiZSBtb3Zl
ZCB0byB0aGUgZW5kIG9mIGRpc3BsYXkoKSBvbmNlIHRoZSBidWZmZXIgaGFuZGxlcyBjYW4gYmUg
Y3JlYXRlZCBvbmNlCisgICAgLy8gYW5kIHN0b3JlZCBpbiBtX2J1ZmZlckhhbmRsZS4gaHR0cDov
L3dlYmtpdC5vcmcvYi8yMzQxNjkKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZT4gaGFuZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Cisg
ICAgaWYgKG1fY29udGVudHNCdWZmZXJIYW5kbGUpIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpJT1N1cmZhY2UpOworICAgICAgICBoYW5kbGUgPSBtX2NvbnRlbnRzQnVmZmVySGFu
ZGxlOworICAgIH0gZWxzZSBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgewogICAgICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAgICAg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkgewpAQCAtMjIwLDYgKzIyNSw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICB9CiAgICAg
fQogCisgICAgbV9jb250ZW50c0J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBzdGQ6
OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAogICAgIGlmIChtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyKSB7CkBAIC0yNTcsNiArMjYzLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQogICAgIHJldHVybiBtX2luY2x1
ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlzcGxheUxpc3Q6Ok5vOwogfQogCit2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBjb250
ZW50cykKK3sKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gV1RGTW92ZShjb250ZW50cyk7
CisgICAgbV9kaXJ0eVJlZ2lvbiA9IFdlYkNvcmU6OlJlZ2lvbigpOworICAgIG1fcGFpbnRpbmdS
ZWN0cy5jbGVhcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5
KCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRCdWZmZXJGbHVzaGVycy5zaXplKCkpOwpAQCAtMjY3
LDYgKzI4MCwxMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAg
ICBpZiAoUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCA9IG1fbGF5ZXItPmNvbnRleHQo
KSkKICAgICAgICAgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gY29udGV4dC0+YmFja2luZ1N0
b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlzKTsKIAorICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5w
bGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIG1fbGF5
ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKKyAgICAg
ICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KG1fbGF5
ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBNYWtlIHRoZSBwcmV2
aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0
eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KICAgICBzZXRCdWZmZXJW
b2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQppbmRleCBiZDhmYjljM2UxOTZmZDFhN2Y5NDQzMjRhMGI3M2FhZWIz
OGU4OTFiLi5jYTExMzU2ZTE1MTFhOTJjOWY5Nzk3Y2ZhYzk3N2VhNzZhMTQ3NTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xMDM1LDkgKzEwMzUsNiBAQCBTdHJp
bmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxh
eWVyOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5
ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQ
cm92aWRlZExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBj
cmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
Q3VzdG9tOgogICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVk
TGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDc5NDAzYTFiYWY2M2JjMzRmZjNhN2RmZTZm
YzczNmRkYTg1ZWNjOWMuLjQzNTBmOWNhYjRjY2JjZDNiY2QyZDY1ZmQxY2UwOTZiZTk3OTkyYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VO
b2RlKGNvbnN0IFJlbW90ZUwKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTW9kZWxMYXllcjoKICNlbmRpZgorICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIHJl
dHVybiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihwcm9wZXJ0aWVz
LmxheWVySUQpOwogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9y
bUxheWVyOgpAQCAtMzEyLDcgKzMxMyw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRy
ZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMCiAjZW5k
aWYKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgogICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI6CiAgICAgICAgIGlmICht
X2lzRGVidWdMYXllclRyZWVIb3N0KQogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUxheWVyVHJl
ZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKHByb3BlcnRpZXMubGF5ZXJJRCk7CiAgICAgICAg
IHJldHVybiBtYWtlV2l0aExheWVyKFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOnByb3BlcnRpZXMuaG9zdGluZ0NvbnRleHRJRF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDM2ZDU1ZTNmNGRjY2ZhMDNmZDM2ZTFlY2QwZGMwNjgw
ZTYwMTE5YzMuLjBiMWJkMDRlMGFiNDFhNTU1ZTE0MjEyMjI3YjNhY2YwZmI4ZWU3YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTU1LDYgKzU1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6
Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUwKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlU2ltcGxlTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ0xheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGls
ZWRCYWNraW5nTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUNvbnRl
bnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKFtb
V0tDb21wb3NpdGluZ1ZpZXcgYWxsb2NdIGluaXRdKSk7CiAKICAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOgpAQCAtNzQsNyArNzUsNiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6
bWFrZU5vZGUoY29uc3QgUmVtb3RlTAogCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUN1c3RvbToKICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQVZQbGF5ZXJM
YXllcjoKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ29udGVudHNQcm92aWRl
ZExheWVyOgogICAgICAgICBpZiAoIW1faXNEZWJ1Z0xheWVyVHJlZUhvc3QpIHsKICAgICAgICAg
ICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tXS1VJUmVtb3RlVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RaZXJvCiAgICAgICAgICAgICAgICAgcGlkOm1fZHJhd2luZ0FyZWEtPnBhZ2Uo
KS5wcm9jZXNzSWRlbnRpZmllcigpIGNvbnRleHRJRDpwcm9wZXJ0aWVzLmhvc3RpbmdDb250ZXh0
SURdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGRkOTg2OTk5ODViNDZmYmZkMDI1MjM3OGI1ODJlNDI0NDQ1NTRlOWQuLjhkNjRiMDNm
MmI2MzYyZjI4MTZhYjBkOWYzOWFmZjQ1MWM0MWQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTA1NSw2ICs1MDU1LDcgQEAKIAkJ
N0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTMwMEU3MjcxODIxN0EwMDA4MjA4NiAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCmluZGV4
IDE0MjRlZjhhMGYzYmQ5ZjY1NjY5ZmY3ZTg3MTYyNzJmOWE1NWFlYjUuLjFiZWNkYjE2MDYyY2I0
ZGVjMjJhODgyZjIzNTBhYWRiMzE4MmI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29hLm1tCkBAIC0zMiwyNCArMzIsNjkgQEAK
ICNpbXBvcnQgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KLSNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViR0xMYXllci5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBuYW1lc3BhY2UgewogCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2Eg
ZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7CitjbGFzcyBEaXNw
bGF5QnVmZmVyRGlzcGxheURlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV93ZWJHTExheWVyOyB9Ci0gICAgV2ViQ29yZTo6SU9TdXJmYWNl
KiBkaXNwbGF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5QnVmZmVyLmdldCgpOyB9
CisgICAgc3RhdGljIFJlZjxEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBjcmVhdGUoYm9v
bCBpc09wYXF1ZSwgZmxvYXQgY29udGVudHNTY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERpc3BsYXlCdWZmZXJEaXNwbGF5RGVsZWdhdGUoaXNPcGFxdWUsIGNvbnRl
bnRzU2NhbGUpKTsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVu
dHNEaXNwbGF5RGVsZWdhdGUgb3ZlcnJpZGVzLgorICAgIHZvaWQgcHJlcGFyZVRvRGVsZWdhdGVE
aXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgbGF5ZXIpIGZpbmFsCisgICAgeworICAg
ICAgICBsYXllci5zZXRPcGFxdWUobV9pc09wYXF1ZSk7CisgICAgICAgIGxheWVyLnNldENvbnRl
bnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICB9CisKKyAgICB2b2lkIGRpc3BsYXkoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyJiBsYXllcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICht
X2Rpc3BsYXlCdWZmZXIpCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhtX2Rpc3BsYXlC
dWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXllci5zZXRDb250ZW50cyhudWxs
cHRyKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nv
b3JkaW5hdGVzT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXA7CisgICAgfQorCisgICAgdm9pZCBzZXREaXNwbGF5QnVm
ZmVyKGNvbnN0IE1hY2hTZW5kUmlnaHQmIGRpc3BsYXlCdWZmZXIpCisgICAgeworICAgICAgICBp
ZiAoIWRpc3BsYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fZGlzcGxheUJ1ZmZlciA9IHsgfTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9kaXNwbGF5QnVm
ZmVyICYmIGRpc3BsYXlCdWZmZXIuc2VuZFJpZ2h0KCkgPT0gbV9kaXNwbGF5QnVmZmVyLnNlbmRS
aWdodCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Rpc3BsYXlCdWZmZXIgPSBk
aXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKTsKKyAgICB9CiAKK3ByaXZhdGU6CisgICAgRGlz
cGxheUJ1ZmZlckRpc3BsYXlEZWxlZ2F0ZShib29sIGlzT3BhcXVlLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQorICAgICAgICA6IG1fY29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKQorICAgICAgICAs
IG1faXNPcGFxdWUoaXNPcGFxdWUpCisgICAgeworICAgIH0KKworICAgIE1hY2hTZW5kUmlnaHQg
bV9kaXNwbGF5QnVmZmVyOworICAgIGNvbnN0IGZsb2F0IG1fY29udGVudHNTY2FsZTsKKyAgICBj
b25zdCBib29sIG1faXNPcGFxdWU7Cit9OworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSB7
CitwdWJsaWM6CiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBvdmVycmlkZXMu
Ci0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fd2ViR0xMYXllci5nZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBm
aW5hbCB7IHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICAg
ICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1Yo
KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01OCwzMCArMTAzLDI1IEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlKCkgZmluYWw7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUNvY29hKEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9kaXNwbGF5QnVmZmVyOworICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2Vu
ZCkKKyAgICAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJD
b250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShEaXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlOjpjcmVh
dGUoIWF0dHJpYnV0ZXMuYWxwaGEsIGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCisgICAg
eworICAgIH0KKworICAgIE1hY2hTZW5kUmlnaHQgbV9kaXNwbGF5QnVmZmVyOworICAgIFJlZjxE
aXNwbGF5QnVmZmVyRGlzcGxheURlbGVnYXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGU7CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiB9Owog
Ci1SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlDb2NvYShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGF0dHJpYnV0ZXMs
IHJlbmRlcmluZ0JhY2tlbmQpCi17Ci0gICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV93ZWJHTExheWVyID0g
YWRvcHROUyhbW1dlYkdMTGF5ZXIgYWxsb2NdIGluaXRXaXRoRGV2aWNlUGl4ZWxSYXRpbzphdHRy
cy5kZXZpY2VQaXhlbFJhdGlvIGNvbnRlbnRzT3BhcXVlOiFhdHRycy5hbHBoYV0pOwotI2lmbmRl
ZiBOREVCVUcKLSAgICBbbV93ZWJHTExheWVyIHNldE5hbWU6QCJXZWJHTCBMYXllciJdOwotI2Vu
ZGlmCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUNvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7
CiAgICAgaWYgKCFtX2Rpc3BsYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKG1fZGlzcGxh
eUJ1ZmZlci0+c3VyZmFjZSgpKTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbW90ZSBNZWRp
YVNhbXBsZS4KKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJD
b3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFw
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZm
ZXIpLCBXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURv
d24sIHRydWUpOwpAQCAtMTAwLDI2ICsxNDAsMTYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q29jb2E6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICB9CiAgICAgaWYgKCFkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0KQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBkaXNwbGF5QnVm
ZmVyID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKLSAgICBpZiAoIWRpc3BsYXlCdWZmZXIpIHsKLSAgICAgICAgbWFya0NvbnRleHRMb3N0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kaXNwbGF5QnVmZmVyID0gV1RGTW92
ZShkaXNwbGF5QnVmZmVyKTsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBb
bV93ZWJHTExheWVyIHNldENvbnRlbnRzOm1fZGlzcGxheUJ1ZmZlci0+YXNMYXllckNvbnRlbnRz
KCldOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2Rpc3BsYXlCdWZmZXIg
PSBXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpOwogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKKyAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUtPnNldERpc3BsYXlCdWZm
ZXIobV9kaXNwbGF5QnVmZmVyLmNvcHlTZW5kUmlnaHQoKSk7CiB9CiAKIH0KIAogUmVmUHRyPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlDb2NvYShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7Ci0gICAgaWYgKCFjb250ZXh0LT5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjb250ZXh0Owor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNvY29h
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0
dHJpYnV0ZXMsIHJlbmRlcmluZ0JhY2tlbmQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5V0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy93Yy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5V0MuY3BwCmluZGV4IGU0ZGM4MTk4ZTE4ZWYzZGU2
MzZhNDZmMjhhZDlmM2RiM2RmZDdhNjAuLjgxNDg1MDZjODM4ODFjMmFjNmY4MzIyNTlmYTRhNzVk
YmI1OTdiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3Mvd2MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL3djL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlXQy5jcHAKQEAgLTMzLDMzICszMyw1MyBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXQ1BsYXRmb3JtTGF5ZXJHQ0dMLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNvbnRl
bnRzRGlzcGxheURlbGVnYXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAorY2xh
c3MgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXJD
b250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZShXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIp
KSk7CisgICAgfQorCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlKFBsYXRmb3JtTGF5
ZXJDb250YWluZXImJiBwbGF0Zm9ybUxheWVyKQorICAgICAgICA6IG1fcGxhdGZvcm1MYXllcihX
VEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUxheWVy
Q29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKK307CisKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlXQyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IHsKIHB1YmxpYzoKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IG92ZXJyaWRl
cy4KICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0gICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5n
ZXQoKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBt
X2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUucHRyKCk7IH0KICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYK
IHByaXZhdGU6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDKEdQVVByb2Nlc3ND
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlXQyhHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAsIG1fbGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0
ZShQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUobWFrZVVuaXF1ZTxXQ1BsYXRm
b3JtTGF5ZXJHQ0dMPihtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpKQorICAgIHsKKyAg
ICB9CiAKLSAgICBQbGF0Zm9ybUxheWVyQ29udGFpbmVyIG1fcGxhdGZvcm1MYXllcjsKKyAgICBS
ZWY8UGxhdGZvcm1MYXllckRpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURl
bGVnYXRlOwogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Owog
fTsKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eVdDOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5V0MoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBhdHRyaWJ1dGVzLCBy
ZW5kZXJpbmdCYWNrZW5kKQotICAgICwgbV9wbGF0Zm9ybUxheWVyKG1ha2VVbmlxdWU8V0NQbGF0
Zm9ybUxheWVyR0NHTD4obV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQotewotfQotCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlXQzo6cHJlcGFyZUZvckRpc3BsYXkoKQog
ewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDVkMGVhOGJkYjkxYWIxNDE4NzUwMDQxYjc5ZWQ1
ZmVhZTc3MjNiYTAuLjU4YjZhZTdmYzliYTBjN2FmN2I4NmYyMDQ4ZGFmMTM3MzQ1MjY4MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0x
NzMsMTEgKzE3MywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVp
bGRUcmFuc2FjdGlvbihSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjbwogICAgIEFTU0VSVCghbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSB8fCBvd25lcigpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZjb250ZXh0ID09IG1fY29udGV4dCk7CiAgICAgCi0g
ICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgKCFvd25lcigpIHx8ICFvd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkpIHsKKyAgICBib29sIHVzZXNCYWNraW5n
U3RvcmUgPSBvd25lcigpICYmIChvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQo
KSB8fCBvd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KHRoaXMpKTsKKyAg
ICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSAmJiAhdXNlc0JhY2tpbmdTdG9yZSkgewog
ICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICAgICAgbV9w
cm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6QmFja2luZ1N0b3JlQ2hhbmdlZCk7CiAgICAgfQotCiAgICAgaWYgKG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkICYmIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUtPmRpc3BsYXkoKSkKICAgICAgICAgbV9wcm9wZXJ0aWVzLm5v
dGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0
b3JlQ2hhbmdlZCk7CiAKQEAgLTY4Myw4ICs2ODMsMjYgQEAgQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6Y29udGVudHMoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0Q29udGVudHMoQ0ZUeXBlUmVmIHZhbHVlKQogeworICAgIGlmICghdmFsdWUpCisgICAg
ICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBudWxscHRyOworfQorCisjaWYgSEFWRShJ
T1NVUkZBQ0UpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6SU9TdXJmYWNlJiBzdXJmYWNlKQoreworICAgIEFTU0VSVChtX2FjY2VsZXJhdGVz
RHJhd2luZyk7CisgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcm9wZXJ0aWVzLmJh
Y2tpbmdTdG9yZS0+c2V0Q29udGVudHMoc3VyZmFjZS5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50cyhjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmIHN1cmZhY2VIYW5kbGUpCit7CisgICAgQVNTRVJUKG1fYWNjZWxlcmF0ZXNEcmF3
aW5nKTsKKyAgICBlbnN1cmVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlLT5zZXRDb250ZW50cyhzdXJmYWNlSGFuZGxlLmNvcHlTZW5kUmlnaHQoKSk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENvbnRlbnRzUmVjdChjb25z
dCBGbG9hdFJlY3QmIHZhbHVlKQogewogICAgIG1fcHJvcGVydGllcy5jb250ZW50c1JlY3QgPSB2
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCA0N2MzMDU1N2Q1OThjYTIxNTRkYjQ3MDYwNDI2NTA0YmFlMGZhNjhjLi43MWQ0MGNlMzEzYTA2
YjE5ZTQ4OThiNjViOGE4ZWFjYWE2NjNjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xMjcsNyArMTI3LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0NvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ0ZUeXBlUmVmIGNvbnRlbnRz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJy
aWRlOwotCisjaWYgSEFWRShJT1NVUkZBQ0UpCisgICAgdm9pZCBzZXRDb250ZW50cyhjb25zdCBX
ZWJDb3JlOjpJT1N1cmZhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzKGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOworI2VuZGlmCiAgICAgdm9pZCBzZXRDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHNldE1pbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5
cGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbS5oCmluZGV4IGU2MjQ3ZGFhNmRiMDBlMjUwODI0ZjY4YzkxODU2NTcxMDYw
MzQ2MzQuLjdhYjk5MGJjMjVmMTgyZTkyOTIxYzI2MzYxODUwYWJmMmE5YTc5MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAg
LTYwLDcgKzYwLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3Jt
TGF5ZXI+IG1fcGxhdGZvcm1MYXllcjsKLSAgICBib29sIG1fcHJvdmlkZXNDb250ZW50czsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KaW5kZXggMjdiMGZjMDA1MTg1ZGFkNDViNmNh
M2I3OGQ4MzAyMTMwOGU0OGY0ZS4uMTEyZjI3OGI3ZTNkOWYwY2E4ZTYwNmI2ZTIxYjA0OTI0OTdm
MTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXJDQS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
ZWJMYXllci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KQEAgLTgyLDggKzgzLDYgQEAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20oTGF5ZXJUeXBlIGxh
eWVyVHlwZSwgUGwKICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBjdXN0b21MYXllcjsKICAgICBbY3Vz
dG9tTGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAotICAgIG1fcHJvdmlkZXNDb250ZW50
cyA9IGxheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXI7Ci0KICAgICBw
cm9wZXJ0aWVzKCkucG9zaXRpb24gPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIucG9zaXRpb24u
eCwgY3VzdG9tTGF5ZXIucG9zaXRpb24ueSwgY3VzdG9tTGF5ZXIuelBvc2l0aW9uKTsKICAgICBw
cm9wZXJ0aWVzKCkuYW5jaG9yUG9pbnQgPSBGbG9hdFBvaW50M0QoY3VzdG9tTGF5ZXIuYW5jaG9y
UG9pbnQueCwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9pbnQueSwgY3VzdG9tTGF5ZXIuYW5jaG9yUG9p
bnRaKTsKICAgICBwcm9wZXJ0aWVzKCkuYm91bmRzID0gY3VzdG9tTGF5ZXIuYm91bmRzOwpAQCAt
MTI3LDEwICsxMjYsNiBAQCBSZWY8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b206OmNsb25lKFBsYXRmb3JtQ0FMYXllcgogICAgICAgICAgICAgY2xv
bmVkTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwogICAgICAgICB9CiAK
LSAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChsYXllclR5cGUo
KSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIpIHsKLSAgICAgICAgY2xvbmVkTGF5
ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgICAgICAvLyBGSVhNRTog
Y3VycmVudGx5IGNvcHlpbmcgV2ViR0wgY29udGVudHMgYnJlYWtzIHRoZSBvcmlnaW5hbCBsYXll
ci4KICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQogCkBAIC0xNTUsMTggKzE1
MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0Q29udGVudHMoQ0ZU
eXBlUmVmIGNvbnRlbnRzKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAobV9w
cm92aWRlc0NvbnRlbnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxh
eUluUmVjdDpyZWN0XTsKLSAgICBlbHNlCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAobV9wcm92aWRlc0NvbnRl
bnRzKQotICAgICAgICBbbV9wbGF0Zm9ybUxheWVyIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxz
ZQotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheSgpOworICAg
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKaW5kZXggMGY3ZmMxYjU5MGVmYTAzZWI0ZjYwNmFj
Y2MwNGM2MWQwZDBkMDVmNC4uYmQ5YWNiZTkzMzNmMThhNzc5NzNiZWU5YWQwMTBjZjFmMDY1Nzk2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhp
Y3NMYXllcldDLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9H
cmFwaGljc0xheWVyV0MuY3BwCkBAIC0yOTAsNiArMjkwLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXll
cldDOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyLCBDCiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllcldDOjpzZXRDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZShSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiYmIGRpc3BsYXlEZWxlZ2F0ZSwgQ29udGVu
dHNMYXllclB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBhdXRvIHBsYXRmb3JtTGF5ZXIgPSBkaXNw
bGF5RGVsZWdhdGUgPyBkaXNwbGF5RGVsZWdhdGUtPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7
CisgICAgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgcHVycG9zZSk7
Cit9CisKIGJvb2wgR3JhcGhpY3NMYXllcldDOjp1c2VzQ29udGVudHNMYXllcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKaW5kZXggOTYyNzQxZmRkMDE1
YTIzOGQ0OGQ0NTcwNGM1NjZmNmEwOTg1ZWJlNS4uMzZhNjg4YzYwMmI2NjkyMTFkNDZjMTY4YjI4
MWQwN2NmM2NiOTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiV0NVcGF0ZUluZm8uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5r
ZWRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENv
bnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+JiYsIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKICAgICBib29sIHNob3Vs
ZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZTg5NWY3YjIw
Y2U5ZTg3ODYzMTRhN2ZkNzgwMzUzNTBlNjNmYzMyLi41ZjZmMzU5YTRkODQwMTZmYzg0ZWExMWQ1
MDkwMDllZGE3ZDEzMzFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDkgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBXZWJHTCBzaG91bGQgc3VwcG9y
dCBVSSBzaWRlIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzEwMDkKKyAgICAgICAgPHJkYXI6Ly84MzQzNzA1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06Cisg
ICAgICAgIEFkZCBhIGR1bW15IG92ZXJyaWRlIG9mIHRoZSBuZXcgbWVtYmVyIGZ1bmN0aW9uIGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUuCisKIDIwMjEtMTItMTMgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IGE5MTYy
Nzk4ZTZmMDdmNDc4YmMxMmJiZDgzZmMwNDViNDMyMzczNzQuLmQwZjBhNjIzMWRiYzEyZTY5MTkw
MDEzYTg5Y2Y3M2Q2ODU5MWVhNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW0KQEAgLTQxLDYgKzQxLDIxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
bmFtZXNwYWNlIHsKIAorY2xhc3MgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYSA6IHB1Ymxp
YyBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgYXV0
byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hKFdU
Rk1vdmUoYXR0cmlidXRlcykpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Citw
cml2YXRlOgorICAgIFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgICAgIDogV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB7IH0pCisgICAgeworICAg
IH0KK307CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2FUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlIC8vIE5PTElO
VApAQCAtNTksNyArNzQsNyBAQCBwcml2YXRlOgogCiBzdGF0aWMgY29uc3QgaW50IGV4cGVjdGVk
RGlzcGxheUJ1ZmZlclBvb2xTaXplID0gMzsKIAotc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoV2ViQ29yZTo6SW50
U2l6ZSBjb250ZXh0U2l6ZSkKK3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xD
b2NvYT4gY3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KFdlYkNvcmU6OkludFNpemUgY29udGV4dFNp
emUpCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgYXR0cmlidXRlcy51c2VNZXRhbCA9IHRydWU7CkBAIC02OCwxNCArODMsMTQgQEAg
c3RhdGljIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hPiBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoV2ViQ29yZToKICAgICBhdHRyaWJ1dGVzLnN0ZW5jaWwgPSBmYWxzZTsK
ICAgICBhdHRyaWJ1dGVzLmFscGhhID0gdHJ1ZTsKICAgICBhdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9IGZhbHNlOwotICAgIGF1dG8gY29udGV4dCA9IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB7IH0pOworICAgIGF1
dG8gY29udGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNyZWF0ZShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUu
aGVpZ2h0KCkpOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1zdGF0aWMgOjp0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCitzdGF0aWMgOjp0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRzKFRlc3RlZEdyYXBoaWNzQ29udGV4
dEdMQ29jb2EmIGNvbnRleHQsIGludCBpdGVyYXRpb24pCiB7CiAgICAgY29udGV4dC5tYXJrQ29u
dGV4dENoYW5nZWQoKTsKICAgICBXZWJDb3JlOjpDb2xvciBleHBlY3RlZCB7IGl0ZXJhdGlvbiAl
IDIgPyBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4gOiBXZWJDb3JlOjpDb2xvcjo6eWVsbG93IH07CkBA
IC0xMjAsMTUgKzEzNSwxNSBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xDb2NvYVRlc3QsIE1B
WUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldAogICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMu
dXNlTWV0YWwgPSB0cnVlOwogICAgIEVYUEVDVF9FUShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5j
ZSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQpOwot
ICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29h
OjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRl
cyB9LCB7IH0pOworICAgIGF1dG8gZGVmYXVsdENvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsg
YXR0cmlidXRlcyB9KTsKICAgICBBU1NFUlRfTkUoZGVmYXVsdENvbnRleHQsIG51bGxwdHIpOwog
CiAgICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7Ci0gICAgYXV0byBsb3dQb3dlckNvbnRleHQg
PSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9LCB7IH0pOworICAgIGF1dG8gbG93
UG93ZXJDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CiAgICAgQVNT
RVJUX05FKGxvd1Bvd2VyQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2Vy
UHJlZmVyZW5jZSA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpI
aWdoUGVyZm9ybWFuY2U7Ci0gICAgYXV0byBoaWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6Y3JlYXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSwgeyB9KTsKKyAgICBhdXRvIGhpZ2hQZXJmb3Jt
YW5jZUNvbnRleHQgPSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTENvY29hOjpjcmVhdGUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKICAgICBBU1NF
UlRfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwgbnVsbHB0cik7CiAKICAgICBFWFBFQ1RfTkUo
bG93UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJF
TkRFUkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>